-
Compteur de contenus
6 374 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Patrick_35
-
Enregistrer des variables sur un fichier externe
Patrick_35 a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Effectivement, pourquoi ne pas utiliser un fichier txt en externe. Tu peux par exemple nommer tes config, avec la possibilité de les sauvegarder. A toi de bien structurer ton fichier. Tu peux aussi utiliser les registres ou encore les variables d'environnement. Tu peux aussi, comme l'indique -Olivier-, sauvegarder tes variables que dans le dessin C'est un choix. @+ -
Enregistrer des variables sur un fichier externe
Patrick_35 a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Salut Avec une petite recherche ;) @+ -
Creer une boite de dialogue avec un Lisp
Patrick_35 a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Salut Pour le foreach, il te faut une liste. Tu peux en utiliser plusieurs ou faire de cette manière (append '("1" "2" "3") (list "4") '("5" "6" "7" "8")) ps : "4" peut-être remplacé par une variable @+ -
Bonjour Pour faire suite à ce sujet et éviter de le polluer Oui, et cela fait longtemps que ça existe. On met une pièce plastique à la place d'une pièce métallique pour que ça dure moins longtemps, mais c'était réparable. Maintenant, si je reprends l’exemple des condos, on les place près des dissipateurs de chaleurs (voir collé), alors que l'on sait très que la chaleur est ce qui fait vieillir prématurément les condos. Ensuite, on prend les moins chers, alors que payer 10€ de plus au global pour une meilleur qualité ne changera pas grand-chose pour le consommateur. Mais la cerise sur le gâteau, c’est que le fabriquant s’est rendu compte que l’on pouvait changer ces fameux condos. Alors pour la génération suivante, on a fait une fabrication spéciale pour ces pièces, ce qui fait que ça devient irréparable. Alors là je crie au scandale car c’est nous prendre pour des vaches à lait. C’est comme les IPhone qui de génération en génération sont de plus en plus indémontable. Apple a fait dernièrement des vis dont il faut des outils spéciaux pour les retirer. Le résultat, en cas de panne, on change. Heureusement, Internet permet de contourner le problème et on trouve ces fameux outils, mais quand même. Alors l’obsolescence est un fait avéré depuis longtemps, mais une obsolescence accélérée pour faire du chiffre, non. Une chose qu’il faut savoir c’est que si la réparation coute de +50% du prix du neuf, le consommateur change, en dessous non. Alors, pourquoi simplifier la tâche et par un démontage difficile, ne pas alourdir la facture. Une autre chose qui me fait penser que l’on marche sur la tête, c’est que l’on utilise de l'indium dans les écrans LCD alors que c’est une ressource extrêmement rare. Voici un terrible échéancier 2012 : fin du terbium 2018 : fin du hafnium 2021 : fin de l'argent 2022 : fin de l'antimoine 2023 : fin du palladium 2025 : fin de l'or 2025 : Fin du zinc 2025 : Fin de l'indium 2028 : fin de l'étain 2030 : fin du plomb 2038 : fin du tantale 2039 : fin du cuivre 2040 : fin de l'uranium 2048 : fin du nickel 2050 : fin du pétrole 2064 : fin du platine 2072 : fin du gaz naturel 2087 : fin du fer 2120 : fin du cobalt 2139 : fin de l'aluminium 2158 : fin du charbon Et on fait une course à l’obsolescence. A quand la fin des haricots? Ps : Source de l’ échéancier @+
-
Modification d'une valeur d'attribut
Patrick_35 a répondu à un(e) sujet de troland dans Débuter en LISP
Salut (atof (substr (cdr '(1 . "sf:30.00")) 4)) @+ -
Tiens, un article qui devrait t'intéresser contre le vieillissement des neurones. Il parle notamment d'activités cérébralement stimulantes. Tu peux commencer par le lisp :D @+
-
Salut Tu as plus de 4 millions d'objets dans ton dessin, ce qui explique le poid. Reste à trouver où ils sont. Une idée --> Un wbloc des objets sélectionnés. @+
-
Salut J'ai vu un reportage qui parlait de l'obsolescence du matériel (portable, tv, pc, etc...) et il parlait aussi des notebook de HP Dans ce reportage, une personne haut placé chez HP a fait une gaffe et avoué que le matériel était étudié pour une durée de deux ans. Dans une grande entreprise qui a acheté ce matériel, plus de la moitié ont durée à peine un an. J'avais une grande confiance en HP (ayant aussi un HP à la maison), mais en voyant cela, je boycott les marques qui font tout pour que matériel s'use au plus vite (Samsung est aussi dans le lot avec ses histoires de condo dans les télés). Fait ton choix camarade ;) @+
-
Creer une boite de dialogue avec un Lisp
Patrick_35 a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Salut Je procède de cette manière en créant un fichier temporaire. (setq fic (vl-filename-mktemp "exl" nil ".dcl") fil (open fic "w") dwg (getenv "Patrick_35_Gabarit_Exl") gab (getenv "Patrick_35_Bouton_Gabarit") ) (or gab (setq gab "0")) (foreach txt '( "exl : dialog {" " key = \"titre\";" " alignment = centered;" " is_cancel = true;" " allow_accept = true;" " width = 50;" " : list_box {label= \"Sélection\"; key=\"sel\"; height = 20; multiple_select=true;}" " spacer;" " : boxed_row {" " label = \"Gabarit\";" " : toggle {key = \"gab\";}" " : text {key = \"txt\"; width = 40;}" " : button {label = \"...\"; key = \"par\"; width = 2;}" " }" " spacer;" " ok_cancel;" "}" ) (write-line txt fil) ) (close fil) (setq dcl (load_dialog fic)) (new_dialog "exl" dcl "") (set_tile "titre" titre) (set_tile "gab" gab) (bascule) (and dwg (affiche_txt dwg)) (start_list "sel") (mapcar 'add_list lst) (end_list) (action_tile "sel" "(setq val $value)") (action_tile "gab" "(setq gab $value)(bascule)") (action_tile "par" "(parcourir)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq res (start_dialog)) (unload_dialog dcl) (vl-file-delete fic) (and dwg (setenv "Patrick_35_Gabarit_Exl" dwg)) (and gab (setenv "Patrick_35_Bouton_Gabarit" gab)) (list res val) ) Pour te simplifier la tâche, tu mets le texte de ton DCL dans une liste. Si tu regardes bien dans le détail, tu retrouves ton fichier DCL Il faut faire attention aux guillemets et pour dire au lisp qu'il faut les écrire, tu utilises le signe \ pour indiquer que c'est un caractère spécial. Une bouche foreach pour écrire le DCL temporaire. @+ -
Salut Tu as déjà trouvé la bonne ligne. C'est pour quand tes premiers lisps. Je sens que tu es mure ;) Tu changes le chiffre 5 par 10 si tu veux un zoom deux fois plus petit. @+
-
Oui, mais uniquement en objet et il fonctionne très bien. Il marche aussi sur les onglets, mais je sais que parfois, il ne zoom pas forcément au bon endroit (en EP). Il y a aussi les textes sur les xrefs qui ne trouve pas parfois. Il faudrait que je le reprenne, mais il me faudrait deux, voir trois vies ^^ ps : maintenant comment on supprime un doublon, j'ai plus l'option quand j'édite un message ?
-
De mémoire, tu peux utiliser les caractères génériques (wilcards) Par exemple, un texte commencant par Local --> Local* @+
-
Salut J'avais fait en son temps un lisp nommé RECH pour justement ne pas avoir un zoom trop important et savoir où on se trouve sur le plan. @+
-
Tester une valeur d'une Boite de dialogue
Patrick_35 a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Salut Tu peux récuperer la valeur saisie dans ton edit_box et gérer le résultat en temps réel (action_tile "Nombre_place" "(verif_saisie $value)") Pour vérifier si ton nombre est un entier (defun verif_saisie(nb) (or (eq (type (read nb)) 'INT) (alert "Ce n'est pas un entier")) ) Un set_tile permet de forcer une valeur sur une clé (Nombre_place) Un mode_tile permet de forcer la sélection (Nombre_place). En gros, tant que ma valeur est inexacte, je reste sur mon edit_box. ps : ne pas oublier un done_dialog sur Enter ou Esc pour sortir de sa boite de dialogue. @+ -
[Résolu] Charger une fonction si elle ne l'est pas.
Patrick_35 a répondu à un(e) sujet de alala dans Pour aller plus loin en LISP
Salut Et pour compléter ce qu'indique Bruno, un petit tour sur defun-q Sauf si tu lances la commande directement depuis le clavier. Alors, Autoload est la solution. @+ -
Salut 1) Tu pointes sur le dernier objet créé (setq der (entlast)) 2) Tu inséres le bloc tout en le décomposant (une piste --> * + nom du bloc) 3) Tu parcours les objets ajoutés depuis le pointeur --> (entnext der) 4) Tu changes de calque l'objet trouvé. @+
-
faire passer les hachures en second plans dans un bloc
Patrick_35 a répondu à un(e) sujet de philsogood dans AutoCAD 2010
Oui, mais dans ce besoin précis, on peut voir ce que peut apporter de plus le vlisp Juste un synopsis pour faire la comparaison de ce qui est possible en Autolisp et vlisp En Autolisp 1) Parcourir la liste des calques pour les déverrouiller et mémoriser ceux qui le sont 2) Parcourir la table des blocs a) Pointer sur la dernière entité créée (entlast) b) Insérer un bloc en le décomposant (command -.insert *+nom ...) c) Créer un jeu de sélection/liste depuis mon pointeur pour récuperer les objets décomposés (entnext (entlast)) d) Copier les objets du jeu de sélection tout en enlevant les hachures (command "_.copy"...) f) Effacer les objets du jeu de sélection tout en enlevant les hachures (command "_.erase"...) g) Créer un jeu de sélection/liste depuis mon pointeur des objets copiés + hachures ignorées auparavant (entnext (entlast)) h) Créer le bloc (entmake ...) 3) Verrouiller les calques qui l'étaient En Vlisp 1) Parcourir la table des blocs a) Parcourir le bloc b) Copier l'objet du bloc c) Effacer l'objet du bloc C'est bien plus simple ;) @+ -
faire passer les hachures en second plans dans un bloc
Patrick_35 a répondu à un(e) sujet de philsogood dans AutoCAD 2010
Hello Que nenni C'est exactement cela :D Juste une précision Si on souhaite que les hachures + les wipeouts en arrière plan, on remplace (eq (vla-get-objectname ent) "AcDbHatch") Ou/et (eq (vla-get-objectname ent) "AcDbWipeout") par (member (vla-get-objectname ent) '("AcDbHatch" "AcDbWipeout")) @+ -
Salut Ce que j'ai trouvé de plus intéressant sur QAFLAGS. @+
-
faire passer les hachures en second plans dans un bloc
Patrick_35 a répondu à un(e) sujet de philsogood dans AutoCAD 2010
Salut Essaye ceci pour voir (defun c:drw(/ blo doc ent) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (vlax-for blo (vla-get-blocks doc) (and (eq (vla-get-islayout blo) :vlax-false) (vlax-for ent blo (or (eq (vla-get-objectname ent) "AcDbHatch") (progn (vla-copy ent) (vla-delete ent) ) ) ) ) ) (vla-endundomark doc) (princ) ) @+ -
fenetres de selection qui disparaissent
Patrick_35 a répondu à un(e) sujet de benoitlacroix dans AutoCAD 2011
Salut Un Gremlin :(rires forts): @+ -
Je me suis fait avoir, il n'est pas possible de lancer un script dans une boucle, elle s'arrête au 1er Donc, la traduction du script en lisp (foreach presentation (layoutlist) (setvar "ctab" presentation) (command "-attedit" "n" "n" "CartA3Euro" "TITRE_2" "" "2ième Etage" "Rez de Chaussée") (command "-attedit" "n" "n" "CartA3Euro" "PLAN_N°:" "" "AMO" "PRO") (command "_.zoom" "et") (command "_.plot" "" "" "Tracé précédent" "" "n" "o" "o") ) Pas très compliqué à faire ;) @+
-
Pb Interférance entre différente routine!
Patrick_35 a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Salut C'est une solution, mais si tu utilises une "bibliothèque" de routines, tu as plusieurs solutions 1) Soit charger au démarrage d'Autocad ta biblio et chaque lisp peut les utiliser. 2) Faire des lisps indépendant, donc sans charger de biblio mais avec des routines extraites d'une biblio et qui sont identiques. 3) Faire des lisps indépendants, toujours sans charger de biblio mais avec des routines extraites d'une biblio qui peuvent varier dans le lisp pour une raison ou une autre. Alors là, si la déclaration n'est pas en local, il y a risque de conflit Il peut être utile de conserver les mêmes noms, pour des raisons de compréhension de ses lisps, même si les routines diffèrent. @+ -
Pb Interférance entre différente routine!
Patrick_35 a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Salut Je pense que tu dois avoir des sous-routines, des variables déclarées en global et non en local Pour avoir des routines/variables en local, il faut respecter ce principe (defun c:ma_routine_principale(/ var10 var11 une_sous_routine1 une_sous_routine2 une_sous_routine3) (defun une_sous_routine1(var1 / var2 var3) .. ) (defun une_sous_routine2(/ var1 var2) .. ) (defun une_sous_routine2(/ encore_une) (defun encore_une() ) ) ) @+ -
Salut Cela vient de ton lisp. Avec cet exemple, tu auras une ligne de 0,0 à 100,100 sur toutes les présentations (foreach presentation (layoutlist) (setvar "ctab" presentation) (command "_.line" "0,0" "100,100" "") ) @+
