lovecraft Posté(e) le 3 septembre 2007 Posté(e) le 3 septembre 2007 bonjour,Je présente mon sujet:Soit un bloc avec 3 attribut: Dans le premier un valeur dans le second une autre valeur, dans le troisieme je voudrais la somme des deux premiers attributs. Merci de votre aide..... http://www.youtube.com/user/CADMINATOR?feature=mhee
rebcao Posté(e) le 3 septembre 2007 Posté(e) le 3 septembre 2007 Pour quelle version LT ou complète ? merci de ta précision Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
lovecraft Posté(e) le 3 septembre 2007 Auteur Posté(e) le 3 septembre 2007 re, Pour la version compléte AUTOCAD 2007 pour être plus précis.Merci http://www.youtube.com/user/CADMINATOR?feature=mhee
bonuscad Posté(e) le 3 septembre 2007 Posté(e) le 3 septembre 2007 Tu peux essayer une macro de ce genre: ^C^C_.'attdia;0;_.'users1;\_.'users2;\_.-insert;"NOM-DU-BLOC_3ATT";\1;1;0;$M=$(getvar,users1);$(getvar,users2);$(+,$(getvar,users1),$(getvar,users2));_.'attdia;1;^Z Tu donnes ta valeur1 , ta valeur2 , puis le point d'insertion du bloc. Bien sur dans cette macro le "NOM-DU-BLOC_3ATT" et éventuellement les échelles et rotation sont à adapter à ton besoin. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lovecraft Posté(e) le 3 septembre 2007 Auteur Posté(e) le 3 septembre 2007 Merci j'ai pu faire ce que je voulais: 1) creation d'un bloc avec trois attribut 1er attribut (champ expression diesel ====>$(getvar,users1) 2sd attribut (champ expression diesel ====>$(getvar,users2) 3ieme attribut (champ expression diesel ====>$(+,$(getvar,users1),$(getvar,users2)) Creation d'un icone avec la macro ci-dessous ^C^C_.'attdia;0;_.'users1;\_.'users2;\_.-insert;"NOM-DU-BLOC_3ATT";\1;0;;;; Merci à toi bonuscad http://www.youtube.com/user/CADMINATOR?feature=mhee
ple64_sog Posté(e) le 9 avril 2008 Posté(e) le 9 avril 2008 Bonjour, j'ai Autocad Map 2004 et je n'ai pas accès aux champs pour les attributs. Je voudrais créer un bloc avec 3 attributs : deux attributs que l'on saisit et le troisième est la différence du premier avec le second. Est ce faisable ? merci PLE64_sog
lili2006 Posté(e) le 9 avril 2008 Posté(e) le 9 avril 2008 Bonjour à toutes et tous, Bienvenue ple64_sogJ'ai déjà vu passer une demande similaire sur ce forum,...Désolé, je n'ai pas le temps de chercher pour le moment,.... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 9 avril 2008 Posté(e) le 9 avril 2008 Salut Un lisp vite fait (defun c:dif(/ att res sel val1 val2) (while (setq sel (ssget "_:e:s" (list (cons 0 "INSERT") (cons 66 1)))) (if (> (length (setq att (vlax-invoke (vlax-ename->vla-object (ssname sel 0)) 'getattributes))) 2) (progn (or (setq val1 (read (vla-get-textstring (car att)))) (setq val1 0) ) (or (setq val2 (read (vla-get-textstring (cadr att)))) (setq val2 0) ) (if (vl-catch-all-error-p (setq res (vl-catch-all-apply '- (list val1 val2)))) (princ "\nUn des deux premiers attributs n'est pas numérique.") (progn (if (eq (type res) 'INT) (setq res (itoa res)) (setq res (rtos res)) ) (and (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-textstring (list (caddr att) res))) (princ "\nImpossible de modifier le 3em attribut.") ) ) ) ) (princ "\nLe bloc doit comporter au minimum 3 attributs.") ) ) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
philous2 Posté(e) le 9 avril 2008 Posté(e) le 9 avril 2008 bjr, simple petite qustion n'étanrt pas trop un spéalisite ni connaisseur programation des lisp comment on fait un icone ou bouton ainsi que barres d'outils pour mes lisps et mieux les avoir à dispositions plus rapidement.merci
(gile) Posté(e) le 9 avril 2008 Posté(e) le 9 avril 2008 Salut philous2, il me semble t'avoir répondu ici... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
philous2 Posté(e) le 9 avril 2008 Posté(e) le 9 avril 2008 effectivement (gile) mais j'ai regardé vite et je t'avoue ne pas avoir trop bien compris comment faire car je ne suis pas du tout spécialiste de le programmation macros et lisp je débute tout juste donc pour moi c"'est assez raide j'essaie de suivre mais difficile parfois il me faut un peu de temps parfois pour comprendre certains trucs, desolé, ça viendra avec le temps mais en attendant ...
Patrick_35 Posté(e) le 9 avril 2008 Posté(e) le 9 avril 2008 Salut Difficile de faire plus clair @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
ple64_sog Posté(e) le 9 avril 2008 Posté(e) le 9 avril 2008 merci pour le lisp mais je suis novice ... je l'ai copié et chargé dans autocad mais après ? dois je créer mon bloc avec les attributs et lancer le lisp ou bien dois d'abord lancer le lisp ? Quand je lance le lisp, la commande m'indique "select objects" et puis après plus rien ? fait il que je donne un nom particulier au bloc et aux attributs ? merci d'avance
philous2 Posté(e) le 9 avril 2008 Posté(e) le 9 avril 2008 ok Patrick, j'ai bien lu le sujet. - charger une routine LISP -------ok- [surligneur] lancer une commande LISP[/surligneur] - Éditeur VisualLISP - Boites de dialogue (DCL) - Les fichiers VLX Charger routine pas de soucis particulier par contre le reste loin d'être evident pour moi.L'éditeur VISUAL LISP il faut déjà connaitre un peu la programamtion macro ce qui n'est pas mon cas. Idem pour les boites de dialogue.Par contre pour les boutons je pense pense que c'est avec "lancer une commande LISP" et c'est là que cela se complique pour moi, j'ai quelques lisp que j'ai enregistré ds un répertoire macros lisp et je souhaiterai faire une barre d'outils avec des boutons pour lancer ces lisps.Si j'ai compris il faut que je definisse une commande mais o, fait cela ou ds l'éditeur visuallisp ! ou rentres-tu par exemple "le nom de la commande/fonction par c: au début de la routine, juste après (defun , exemple :(defun c:toto (...))", je sais suis nul mais faut bien debuter un jour nonForcement pour toi Patrick c'est facile mais pour un debutant moins evident désolé
Patrick_35 Posté(e) le 10 avril 2008 Posté(e) le 10 avril 2008 Re,Forcement pour toi Patrick c'est facile mais pour un debutant moins evident désoléCe n'est pas le sujet, il me semblait juste que tu ne te donnais pas la peine de tout lire et de comprendre ce que te donnais (gile) comme solution.De plus en plus de personnes de contentent de formules toutes faites et c'est tout juste s'ils ne gueulent pas s'il faut réfléchir un peu.Donc, pour revenir à ton problème, tu remarqueras que le lisp commence par (defun c:dif(/ att res sel val1 val2).C'est le c:dif qui indique le nom de la commande à utiliser pour lancer le lisp.Dans un lisp, toute fonction qui débute par un defun c:... indique que c'est une commande utilisable dans Autocad (les ... représentant le nom de la commande à utiliser)Le lisp étant chargé, il suffit donc de faire sur la ligne de commande dif (sans le c: ), et de suivre ce qu’indique le lisp comme toute commande Autocad.Pour intégrer les lisps dans une barre d'outils, il est souhaitable que les lisps soient chargés au demarrage (aide de gile 1.3 ou 1.4).Ensuite, définir des boutons à l'aide de l'éditeur cui (commande _.cui) et de définir comme macro par exemple ^C^CdifUn ^C signifie un appuie sur échap. C'est pour sortir d'un commande en cours quand on clic sur le bouton,Deux ^C, c'est quand on est par exemple dans une commande dans les cotations.commande cot --> commande aj --> deux niveaux. ps : oublie pour l'instant dans l'aide de (gile) l'Éditeur VisualLISP ple64_sogLe lisp fonctionne de la manière suivante.- Sélection du bloc pour faire la soustraction de la valeur du second attribut sur la valeur du premier.- Résultat de l'opération sur le troisième.Cela veut donc dire que le bloc doit-être implanté et que les deux premiers attributs renseignés. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
philous2 Posté(e) le 10 avril 2008 Posté(e) le 10 avril 2008 Ok Patrick, J'ai lu ton message.je ne cherche pas toujours des formules tte faite mais tt cela étant nouveau pour moi il faut un temps d'adaptation et de compréhension pas tjrs facile donc au début un peu obligé de prendre des bases et exemples pour comprendre le principe.Je rélfléchis et en plus j'aime pas faire quelque chose ss vraiment comprendre pas soucis.Il faut donc si je suis bien faire une commande puis le bouton..Donc la commande tu f'a fait comment et tu l'a place ou !Par exemple si je veux faire une barre d'outils et boutons avec le lisp " Increment", il faut donc que je commence ma commande par c:dif et ensuite je fais quoi pour lui indiquer le lilsp increment ?Tu fais cela ou dans l'Editeur cui et tu le trouves ou cet éditeur c'est ds ce menu ou pas ! Pour créer une commandeCliquez sur le menu Outils Personnaliser Menus. Dans l'onglet Personnaliser de la boîte de dialogue Personnaliser l'interface utilisateur, cliquez sur Nouvelle dans le volet Liste des commandes. Une nouvelle commande (nommée Commande1) s'affiche dans les volets Liste des commandes et Propriétés. Dans le volet Propriétés, effectuez les opérations suivantes : Dans la zone Nom, entrez le nom de la commande. Ce nom s'affichera sous forme d'info-bulle ou de nom de menu lorsque vous sélectionnerez la commande. Dans la zone Description, entrez la description de la commande. Cette description s'affichera dans la barre d'état lorsque le curseur survolera l'élément de menu ou le bouton de barre d'outils. Dans la zone Macro, entrez la macro de la commande. Dans la zone ID élément, entrez l'ID d'élément de la commande. (Pour les nouvelles commandes uniquement. Vous ne pouvez pas modifier l'ID élément d'une commande existante.) Je t'indique que j'ai bien chargé au démarrage tous mes lisp comme il faut le faire pas de soucis de ce coté là, ça j'ai pigé(<acronym class=dict title=).J'ai été ds propriété creation de commande comme indiqué " Dans la zone Macro, entrez la macro de la commande. Dans la zone ID élément, entrez l'ID d'élément de la commande. (Pour les nouvelles commandes uniquement. Vous ne pouvez pas modifier l'ID élément d'une commande existante.) et là ça se complique au niveau "Dans la zone Macro, entrez la macro de la commande. car l ça comme par "^C^C ds l'éditeur dse chaines longues" je mets "commande _.cui....."!Vraiment pas evident au debut je galere un peu Patircik comme tu vois donc si tu pouvais à travers un exemple me dire en gros comme procéder en faisant simple.En te remerciant d'avance Phil .
ple64_sog Posté(e) le 10 avril 2008 Posté(e) le 10 avril 2008 merci Patrick le lisp ne marchait pas car j'avais un bloc avec plus de troix attributs. Avec 3 attributs ça marche très bien. que faut il rajouter pour un bloc où j'aurais 5 attributs (ex : att 1 : numéro d'ouvrage, att 2 : type d'ouvarge + les 3 autes attributs sur lesquels je renseigne att 3 et att4 et att 5 est la différence de att 3 - att 4). Est ce possible? N'y a t il qu'un lisp pour résoudre ce pb avec autocad 2004 ? Merci d'avanve.
(gile) Posté(e) le 10 avril 2008 Posté(e) le 10 avril 2008 philous2, Pour créer une commande et un bouton, puis une barre d'outils je te conseille de regarder l'aide :Guide de personnalisation > Personnalisation de l'interface utilisateur > Personnalistion des commandes (suivant ta version d'AutoCAD, tu auras même des petites vidéos) Pour la macro, comme le dit Patrick_35, tu met derrière le ^C^C la commande LISP (ce que tu entres à la ligne de commande pour le lancer, ce qui, dans le code LISP se trouve juste après le c:). Par exemple si je veux faire une barre d'outils et boutons avec le lisp " Increment" Le LISP contient (ce jour) 5 commandes : inctxt, incatt, incsel, incsuf et incadd. Il te faut donc faire 5 boutons avec les macros suivantes :^C^Cinctxt^C^Cincatt^C^Cincsel^C^Cincsuf^C^Cincadd et les mettre dans une barre d'outils. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
philous2 Posté(e) le 10 avril 2008 Posté(e) le 10 avril 2008 Ok merci (gile) j'essaerai demain au boulot.Je profite de l'occasion pour te poser une autre question en passant.Pour progresser en Lisp, j'ai acheter il y a 2 semaines 2 logiciels " : [surligneur] AidLISP: l'éditeur-correcteur de programmes AutoLISP[/surligneur] " et " [surligneur] AidDCL: le générateur de boîtes de dialogue conçu comme un jeu...[/surligneur]" [/u] sur le site http://aidacad.com/fr/dcl.htm et j'attend tjrs mes logiciels.Connais-tu ce site car j'ai l'impression m'ête fait avoir pourtant le site est tjrs en fonction aujourd'hui.J'étais intéressé car ne connaissant rien a la programmation Lisp cela me paraissait pas mal comme aide de départ.Ah oui une tte dernière chose (gile) comment tu utilises le lisp Dialog apres avoir charger l'applicationMerci d'avance , pour info ce site est canadien je crois Phil
(gile) Posté(e) le 10 avril 2008 Posté(e) le 10 avril 2008 Salut, Je ne peut rien te dire à propos d'aidacad, je n'ai jamais utilisé que la page où sont décrites les principales fonctions LISP en français. Le site ne semble pas avoir évolué depuis des années... Le fichier Dialog.lsp contient plusieurs routines définissant des boites de dialogue. Ces routines (ou sous-routines) ne sont pas des commandes définies en LISP, elles sont plutôt assimilables (comme toute sous routine) à des fonctions LISP qu'on peut appeler depuis d'autres programmes LISP.Par exemple, dans la commande incatt (du fichier Increment.lsp), la première boite de dialogue qui permet de choisir le nom du bloc est définie dans la routine GetBlock, qui fait parti des routines contenues dans le fichier Dialog.lsp. [Edité le 10/4/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant