gepetto Posté(e) le 19 novembre 2014 Posté(e) le 19 novembre 2014 Hello, Il y a fort longtemps, j'avais trouver sur ce forum un lisp qui permet de mettre la cote dans le bon style et le bon calque. J'aurai voulu y apporter une petit modif, et c'est pour cela que je demande votre aide. j'aimerai que les repères soit aussi mis automatiquement dans le bon style et le bon calque. Je vous remercie Amicalement ;;; créer un calque (defun calque (NewLayer ColLayer TlLayer) (if (not (tblsearch "LTYPE" TlLayer)) (command "_LINETYPE" "_L" TlLayer "acadiso" "") ) (if (not (tblsearch "LAYER" NewLayer)) (command "_layer" "_M" NewLayer "_CO" ColLayer "" "_LT" TlLayer "" "") (command "_LAYER" "_T" NewLayer "_ON" NewLayer "_S" NewLayer "") ) ) ;-------------------------------------------------------------------------- ---- (defun place_cote (TYP_COT) (cond ((= TYP_COT "lin") (princ (strcat "\nCotation linéaire au 1:" (substr TYP_ECH 5))) (command "_dimlinear") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "ali") (princ (strcat "\nCotation alignée au 1:" (substr TYP_ECH 5))) (command "_dimaligned") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "con") (princ (strcat "\nCotation continue au 1:" (substr TYP_ECH 5))) (command "_dimcontinue") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "lig") (princ (strcat "\nCotation ligne de base au 1:" (substr TYP_ECH 5))) (command "_dimbaseline") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "ord") (princ (strcat "\nCotation ordonnée au 1:" (substr TYP_ECH 5))) (command "_dimordinate") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "ray") (princ (strcat "\nCotation rayon au 1:" (substr TYP_ECH 5))) (command "_dimradius") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "ang") (princ (strcat "\nCotation angulaire au 1:" (substr TYP_ECH 5))) (command "_dimangular") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "dia") (princ (strcat "\nCotation diamètre au 1:" (substr TYP_ECH 5))) (command "_dimdiameter") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "rep") (princ (strcat "\nCotation repère au 1:" (substr TYP_ECH 5))) (command "_leader") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ) ) ;-------------------------------------------------------------------------- ---- ;-------------------------------------------------------------------------- ---- (defun init_cct (/ prefix cfgname cfg) (if (not TYP_COT) (setq TYP_COT "lin") ) (if (not TYP_ECH) (setq TYP_ECH "cot-50") ) ) ;-------------------------------------------------------------------------- ---- ;-------------------------------------------------------------------------- ---- (defun do_accept_cct () (setq TYP_COT (get_tile "typ_cot")) (setq TYP_ECH (get_tile "typ_ech")) (done_dialog 1) ) ;-------------------------------------------------------------------------- ---- ;-------------------------------------------------------------------------- ---- (defun do_cct_dimstyle (ECH) (cond ((= ECH "cot-1") "COTE-01") ((= ECH "cot-2") "COTE-02") ((= ECH "cot-3") "COTE-03") ((= ECH "cot-5") "COTE-05") ((= ECH "cot-10") "COTE-10") ((= ECH "cot-20") "COTE-20") ((= ECH "cot-25") "COTE-25") ((= ECH "cot-50") "COTE-50") ((= ECH "cot-75") "COTE-75") ((= ECH "cot-100") "COTE-100") ) ) ;-------------------------------------------------------------------------- ---- ;-------------------------------------------------------------------------- ---- (defun do_cct_layer (ECH) (cond ((= ECH "cot-1") "COTE-01") ((= ECH "cot-2") "COTE-02") ((= ECH "cot-3") "COTE-03") ((= ECH "cot-5") "COTE-05") ((= ECH "cot-10") "COTE-10") ((= ECH "cot-20") "COTE-20") ((= ECH "cot-25") "COTE-25") ((= ECH "cot-50") "COTE-50") ((= ECH "cot-75") "COTE-75") ((= ECH "cot-100") "COTE-100") ) ) ;-------------------------------------------------------------------------- ---- ;-------------------------------------------------------------------------- ---- ; programme principal ;-------------------------------------------------------------------------- ---- (defun c:CCT (/ OLD_CMD WHAT_NEXT DCL_ID old_CLAY) (if (= (getvar "cmdactive") 1) (command "_exit") ) ;; (setvar "DIMASSOC" 1) ; cotation non associative ;; (setvar "DIMASSOC" 2) ; cotation associative (init_cct) (setq dcl_id (load_dialog "cct.dcl")) (if (not (new_dialog "Cct" dcl_id)) (exit)) (set_tile "typ_cot" TYP_COT) (set_tile "typ_ech" TYP_ECH) (action_tile "accept" "(do_accept_cct)") (action_tile "cancel" "(done_dialog 0)") (setq what_next (start_dialog)) (unload_dialog dcl_id) (if (= what_next 1) ;OK (progn ;(setq old_CLAY (getvar "CLAYER")) ; reprend le calque d'avant pour que ca fonctionne enlever le ; (setq OLD_CMD (getvar "cmdecho")) (setvar "cmdecho" 1) (setq CCT_DIMSTYLE (do_cct_dimstyle TYP_ECH)) (if (not (tblsearch "DIMSTYLE" CCT_DIMSTYLE)) (alert (strcat "Le style de cote " CCT_DIMSTYLE " n'existe pas")) (progn (calque (do_cct_layer TYP_ECH) "251" "CONTINUOUS") ;; la couleur 251 pour le calque (command "_dimstyle" "_r" CCT_DIMSTYLE) ;; restaurer le style de cote (place_cote TYP_COT) ) ) (setvar "cmdecho" OLD_CMD) ;(setvar "clayer" old_CLAY) ; reprend le calque d'avant pour que ca fonctionne enlever le ; ) ) (princ) )
DenisHen Posté(e) le 19 novembre 2014 Posté(e) le 19 novembre 2014 Bonjour gepetto, qu'entends-tu par "repère" ? Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
gepetto Posté(e) le 19 novembre 2014 Auteur Posté(e) le 19 novembre 2014 Bonjour, Merci de ta réponses, ce que j'entend par repère est la commande "LIGNEDEREPMULT" en espérant avoir pu répondre à ta question Je te remercie
Steven Posté(e) le 19 novembre 2014 Posté(e) le 19 novembre 2014 Bonjour Gepetto, Sans utiliser de lisp, tu peux te créer des outils de cotation et de ligne de repère dans une palette d'outils et tu peux paramétrer ces outils de manière à ce que ta cotation ou ta ligne de repère se mette directement dans le bon calque et que le style de cote ou de ligne de repère soit directement le bon. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
philsogood Posté(e) le 19 novembre 2014 Posté(e) le 19 novembre 2014 helloje continue le hors sujet : pourquoi n'utilises-tu pas l'annotativité?Phil Projeteur Revit Indépendant - traitement des eaux/CVC
gepetto Posté(e) le 19 novembre 2014 Auteur Posté(e) le 19 novembre 2014 Oui c'et une solution que j'avais envisager, mais qui ne me convenais guère, surtout qu'après j'avais découvert ce magnifique lisp. que je voudrai la moindre modifierCa ne me convenais guère, car ca faisais beaucoup de bouton à mettre dans la palettes et trouvais ca moyennent intuitif. Merci de ta proposition Bonne journée
Steven Posté(e) le 19 novembre 2014 Posté(e) le 19 novembre 2014 Oui c'et une solution que j'avais envisager, mais qui ne me convenais guère, surtout qu'après j'avais découvert ce magnifique lisp. que je voudrai la moindre modifierCa ne me convenais guère, car ca faisais beaucoup de bouton à mettre dans la palettes et trouvais ca moyennent intuitif. Merci de ta proposition Bonne journée Tu peux renommer les outils par des noms plus intuitifs tel que que "Cotation calpinage", "Cotation intérieure", etc, par exemple. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
zebulon_ Posté(e) le 19 novembre 2014 Posté(e) le 19 novembre 2014 Bonjour, (initcommandversion 2) ;; pour que l'éditeur s'ouvre (command "_mleader") à la place de (command "_leader") Mais ce n'est pas tout. La commande _leader crée un objet de type "cote", alors qu'un _mleader crée un objet de type "Ligne de repère multiple". Dans le lisp, il y a une ligne (command "_dimstyle" "_r" CCT_DIMSTYLE) ;; restaurer le style de cote qu'il faut laisser, mais qui n'agira pas sur l'aspect des lignes de repère multiples. Il faut donc créer des styles de lignes de repère et les restaurer de la même manière que les styles de cotes. (command "_mleaderstyle" CCT_DIMSTYLE) ;; restaurer le style de repère multiple juste avant (place_cote ...) AmicalementVincent PS : pour la petite histoire, le lisp dont nous parlons a connu sa première mouture pour la version 12 d'autocad (12 pas 2012 !). A l'époque, il n'était question ni de ligne de repères multiples, ni de cotes annotatives, ni de palettes. C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
gepetto Posté(e) le 19 novembre 2014 Auteur Posté(e) le 19 novembre 2014 Salut vincent Merci de ton aide, j'ai modifier le fichier comme tu me l'a demander, mais je dois avoir fais qqch de faux.j'ai une sorte de boucle de repérage qui se crée, et fait planter autocar. Voici ce que j'ai modifierEN suite ou dois-je mettre l'équivalence style de côte et échelle cote? Merci de ton aide "Fichier lsp" [;;; créer un calque (defun calque (NewLayer ColLayer TlLayer) (if (not (tblsearch "LTYPE" TlLayer)) (command "_LINETYPE" "_L" TlLayer "acadiso" "") ) (if (not (tblsearch "LAYER" NewLayer)) (command "_layer" "_M" NewLayer "_CO" ColLayer "" "_LT" TlLayer "" "") (command "_LAYER" "_T" NewLayer "_ON" NewLayer "_S" NewLayer "") ) ) ;-------------------------------------------------------------------------- ---- (defun place_cote (TYP_COT) (cond ((= TYP_COT "lin") (princ (strcat "\nCotation linéaire au 1:" (substr TYP_ECH 5))) (command "_dimlinear") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "ali") (princ (strcat "\nCotation alignée au 1:" (substr TYP_ECH 5))) (command "_dimaligned") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "con") (princ (strcat "\nCotation continue au 1:" (substr TYP_ECH 5))) (command "_dimcontinue") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "lig") (princ (strcat "\nCotation ligne de base au 1:" (substr TYP_ECH 5))) (command "_dimbaseline") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "ord") (princ (strcat "\nCotation ordonnée au 1:" (substr TYP_ECH 5))) (command "_dimordinate") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "ray") (princ (strcat "\nCotation rayon au 1:" (substr TYP_ECH 5))) (command "_dimradius") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "ang") (princ (strcat "\nCotation angulaire au 1:" (substr TYP_ECH 5))) (command "_dimangular") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "dia") (princ (strcat "\nCotation diamètre au 1:" (substr TYP_ECH 5))) (command "_dimdiameter") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ((= TYP_COT "rep") (princ (strcat "\nCotation repère au 1:" (substr TYP_ECH 5))) (command "_mleader") (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ) ) ;-------------------------------------------------------------------------- ---- ;-------------------------------------------------------------------------- ---- (defun init_cct (/ prefix cfgname cfg) (if (not TYP_COT) (setq TYP_COT "lin") ) (if (not TYP_ECH) (setq TYP_ECH "cot-50") ) ) ;-------------------------------------------------------------------------- ---- ;-------------------------------------------------------------------------- ---- (defun do_accept_cct () (setq TYP_COT (get_tile "typ_cot")) (setq TYP_ECH (get_tile "typ_ech")) (done_dialog 1) ) ;-------------------------------------------------------------------------- ---- ;-------------------------------------------------------------------------- ---- (defun do_cct_dimstyle (ECH) (cond ((= ECH "cot-1") "COTE-01") ((= ECH "cot-2") "COTE-02") ((= ECH "cot-3") "COTE-03") ((= ECH "cot-5") "COTE-05") ((= ECH "cot-10") "COTE-10") ((= ECH "cot-20") "COTE-20") ((= ECH "cot-25") "COTE-25") ((= ECH "cot-50") "COTE-50") ((= ECH "cot-75") "COTE-75") ((= ECH "cot-100") "COTE-100") ) ) ;-------------------------------------------------------------------------- ---- ;-------------------------------------------------------------------------- ---- (defun do_cct_layer (ECH) (cond ((= ECH "cot-1") "COTE-01") ((= ECH "cot-2") "COTE-02") ((= ECH "cot-3") "COTE-03") ((= ECH "cot-5") "COTE-05") ((= ECH "cot-10") "COTE-10") ((= ECH "cot-20") "COTE-20") ((= ECH "cot-25") "COTE-25") ((= ECH "cot-50") "COTE-50") ((= ECH "cot-75") "COTE-75") ((= ECH "cot-100") "COTE-100") ) ) ;-------------------------------------------------------------------------- ---- ;----------------------------------------------------------------------- ---- (defun do_cct_layer (rep) (cond ((= ECH "cot-1") "repère01") ((= ECH "cot-2") "repère02") ((= ECH "cot-3") "repère03") ((= ECH "cot-5") "repère05") ((= ECH "cot-10") "repère10") ((= ECH "cot-20") "repère20") ((= ECH "cot-25") "repère25") ((= ECH "cot-50") "repère50") ((= ECH "cot-75") "repère75") ((= ECH "cot-100") "repère100") ) ;-------------------------------------------------------------------------- ---- ; programme principal ;-------------------------------------------------------------------------- ---- (defun c:CCT (/ OLD_CMD WHAT_NEXT DCL_ID old_CLAY) (if (= (getvar "cmdactive") 1) (command "_exit") ) ;; (setvar "DIMASSOC" 1) ; cotation non associative ;; (setvar "DIMASSOC" 2) ; cotation associative (init_cct) (setq dcl_id (load_dialog "cct.dcl")) (if (not (new_dialog "Cct" dcl_id)) (exit)) (set_tile "typ_cot" TYP_COT) (set_tile "typ_ech" TYP_ECH) (action_tile "accept" "(do_accept_cct)") (action_tile "cancel" "(done_dialog 0)") (setq what_next (start_dialog)) (unload_dialog dcl_id) (if (= what_next 1) ;OK (progn ;(setq old_CLAY (getvar "CLAYER")) ; reprend le calque d'avant pour que ca fonctionne enlever le ; (setq OLD_CMD (getvar "cmdecho")) (setvar "cmdecho" 1) (setq CCT_DIMSTYLE (do_cct_dimstyle TYP_ECH)) (if (not (tblsearch "DIMSTYLE" CCT_DIMSTYLE)) (alert (strcat "Le style de cote " CCT_DIMSTYLE " n'existe pas")) (progn (calque (do_cct_layer TYP_ECH) "251" "CONTINUOUS") ;; la couleur 251 pour le calque (command "_dimstyle" "_r" CCT_DIMSTYLE) ;; restaurer le style de cote (command "_mleaderstyle" CCT_DIMSTYLE) ;; restaurer le style de repère multiple (place_cote TYP_COT) ) ) (setvar "cmdecho" OLD_CMD) ;(setvar "clayer" old_CLAY) ; reprend le calque d'avant pour que ca fonctionne enlever le ; ) ) (princ)[code]dcl_settings : default_dcl_settings { audit_level = 0 ;} Cct : dialog { label = "PLACER UNE COTE"; : row { : boxed_radio_column { label = "Type de cotation"; key = typ_cot; : radio_button { label = "Linéaire"; mnemonic = "L"; key = lin; } : radio_button { label = "Alignée"; mnemonic = "A"; key = ali; } : radio_button { label = "conTinue"; mnemonic = "T"; key = con; } : radio_button { label = "ligne de Base"; mnemonic = "B"; key = lig; } : radio_button { label = "Ordonnée"; mnemonic = "O"; key = ord; } : radio_button { label = "Rayon"; mnemonic = "R"; key = ray; } : radio_button { label = "anGulaire"; mnemonic = "G"; key = ang; } : radio_button { label = "Diamètre"; mnemonic = "D"; key = dia; } : radio_button { label = "Repère"; mnemonic = "E"; key = rep; } } : boxed_radio_column { label = "ECHELLE"; key = typ_ech; : radio_button { label = "Echelle 1:1"; key = "cot-1"; } : radio_button { label = "Echelle 1:2"; key = "cot-2"; } : radio_button { label = "Echelle 1:3"; key = "cot-3"; } : radio_button { label = "Echelle 1:5"; key = "cot-5"; } : radio_button { label = "Echelle 1:10"; key = "cot-10"; } : radio_button { label = "Echelle 1:20"; key = "cot-20"; } : radio_button { label = "Echelle 1:25"; key = "cot-25"; } : radio_button { label = "Echelle 1:50"; key = "cot-50"; } : radio_button { label = "Echelle 1:75"; key = "cot-75"; } : radio_button { label = "Echelle 1:100"; key = "cot-100"; } } } spacer_1; ok_cancel; } )/code]et le fichier dcl
zebulon_ Posté(e) le 19 novembre 2014 Posté(e) le 19 novembre 2014 Bonsoir, (while (not (zerop (getvar "cmdactive")))(command pause)) je ne pense pas que ça serve à grand chose. je pense même que c'est ça qui fait entrer dans une boucle sans fin. et avant la ligne (command "_mleader") il faut (initcommandversion 2) ;; pour que l'éditeur s'ouvre sinon on a une commande _mleader en ligne de commande. C'est moins bien. Je pense que, jusqu'à présent, tu as des styles de cote préétablis dans un fichier dwt. Il faut faire pareil avec les styles de mleader, avec les mêmes noms, taille de texte, de flèche et facteurs d'échelle que les styles de cotes. Enfin, il y a(if (not (tblsearch "DIMSTYLE" CCT_DIMSTYLE))qui ne vérifie que l'existance du style de cote. Si le style de mleader n'existe pas, la commande _mleaderstyle va se planter. Donc il faut aussi vérifier si le style de _mleader existe. Pour ce faire, il faut passer par les dictionnaires : les mleader ne sont plus stockées dans les tableaux commes les styles de cotes, les calques, les vues etc... mais dans le dictionnaire "ACAD_MLEADERSTYLE". Le progrès... AmicalementVincent PS : si tu n'aboutis pas, tu peux m'envoyer un MP pour s'échanger les mails. Ainsi, tu pourras m'envoyer ton dwt, et les fichiers lsp et dcl C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
capde06 Posté(e) le 20 novembre 2014 Posté(e) le 20 novembre 2014 helloil y a une super macro sur le site a lee-mac pour ce problemeje l'utilise toujours ca marche avec les reactorset avec plusieurs type de commandVoir ici Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
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