x13 Posté(e) le 17 janvier 2006 Posté(e) le 17 janvier 2006 Bonjour, J'essai de modifier un petit programme servant à l'insertion de gabarit. Dans le fichier .DCL j'ai ajouter des gabarits dans la première série de radio bouton,puis j'ai ajouté 3 series de radio bouton. pas de problème de ce coté. J'ai annulé le bouton radio "none" et ajouter un bouton "cancel" et le codeassocié au lisp. Maintenant j'ai un message d'erreur du type erreur: aucune fonction definition: DO-IT Avant la modification du bouton de fermeture, les 8 premiers gabarit s'inséraient très bien(FDA @ FDH) par contre les 15 autres ne fonctionnaient pas. Merçi de votre aide. Voiçi le programme en question; (defun setv (systvar newval) (setq x (read (strcat systvar "1"))) (set x (getvar systvar)) (setvar systvar newval)) ; setv (defun setting () (setv "CMDECHO" 0) (setv "BLIPMODE" 0)) ; end of setting(defun rsetv (systvar) (setq x (read (strcat systvar "1"))) (setvar systvar (eval x))) ; restv(defun resetting () (rsetv "CMDECHO") (rsetv "BLIPMODE")) ; end of resetting (defun coversheet () (setq dcl_id (load_dialog "coversheet.dcl")) (if (not (new_dialog "cover1" dcl_id)) (exit) ) ;_ end of if (action_tile "coversheet" "(set-cs $value)") (action_tile "cancel" "(done_dialog) (setq userclick nil)" ) ;_ end of action_tile (action_tile "accept" "(done_dialog)") (start_dialog) (unload_dialog dcl_id);;; (do-it)) ;_ coversheet (defun set-cs (val) (setq csheet (cond ((= val "FDA") "FA8.5X11") ((= val "FDB") "FB11X17") ((= val "FDC") "FC18X24") ((= val "FDD") "FD24X36") ((= val "FDE") "FE36X48") ((= val "FDF") "FF8.5X14") ((= val "FDG") "FG8.5X11addenda") ((= val "FDH") "FH8.5X11Directive") ((= val "FDAA0") "FAA0") ((= val "FDAA1") "FAA1") ((= val "FDAA2") "FAA2") ((= val "FDAA3") "FAA3") ((= val "FDAA4") "FAA4") ((= val "FSA0") "FSA0") ((= val "FSA1") "FSA1") ((= val "FSA2") "FSA2") ((= val "FSA3") "FSA3") ((= val "FSA4") "FSA4") ((= val "FMA0") "FMA0") ((= val "FMA1") "FMA1") ((= val "FMA2") "FMA2") ((= val "FMA3") "FMA3") ((= val "FMA4") "FMA4") ;;;((= val "none") "none") ) ;_ cond ) ;_ setq) ;_ defun ;;;(defun do-it ();;; (setting);;;(if (/= csheet "none") (progn (command "_INSERT" csheet "0,0" "" "" "") ; international command (command "ZOOM" "_E") ; international command ) ;_ progn ; ) ;_ if (resetting) (princ)) ;_ defun ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //12345678901234567890123456789012345678901234567890// COVERSHEET.DCL Generalized drawing coversheets. cover1 : dialog { // Coversheet choices label = "Gabarits - Feuille de dessin - (Dimensions en MM)"; : boxed_radio_column { label = "Sélectionnez un gabarit -- STANDARDS IMPÉRIAL--"; key = "coversheet"; : radio_button { label = "Format A- (8.5po. x 11po. ou 9 x 12)"; key = "FDA"; } : radio_button { label = "Format B- (11po. X 17po. ou 12 x 18) DESSIN D'ATELIER STRUCT. ACIER"; key = "FDB"; } : radio_button { label = "Format C- 457 x 610 (18po. X 24po.)"; key = "FDC"; } : radio_button { label = "Format D- 610 x 914 (24po. X 36po.)"; key = "FDD"; } : radio_button { label = "Format E- 914 x 1219 (36po. X 48po.)"; key = "FDE"; } : radio_button { label = "Format F- 216 x 356 (8.5po. X 14po.) DESSIN D'ATELIER STRUCT. ACIER"; key = "FDF"; } : radio_button { label = "Format G- 216 x 279 (8.5po. X 11po.) ADDENDA"; key = "FDG"; } : radio_button { label = "Format H- 216 x 279 (8.5po. X 11po.) CHANTIER- AVIS CHANGEMENT-MODIFICATION"; key = "FDH"; } } // boxed radio column : boxed_radio_column { label = "Sélectionnez un gabarit -- STANDARDS ISO--"; :row { : boxed_radio_column { label = "ARCHITECTURE :"; : radio_button { label = "A0 - 1189 x 841"; key = "AA0"; } : radio_button { label = "A1 - 841 x 594"; key = "AA1"; } : radio_button { label = "A2 - 594 x 420"; key = "AA2"; } : radio_button { label = "A3 - 420 x 297"; key = "AA3"; } : radio_button { label = "A4 - 297 x 210"; key = "AA4"; } } :column { : boxed_radio_column { label = "STRUCTURE :"; : radio_button { label = "A0 - 1189 x 841"; key = "SA0"; } : radio_button { label = "A1 - 841 x 594"; key = "SA1"; } : radio_button { label = "A2 - 594 x 420"; key = "SA2"; } : radio_button { label = "A3 - 420 x 297"; key = "SA3"; } : radio_button { label = "A4 - 297 x 210"; key = "SA4"; } } } :column { : boxed_radio_column { label = "MÉCANIQUE-ÉlLECTRICITÉ :"; : radio_button { label = "A0 - 1189 x 841"; key = "MA0"; } : radio_button { label = "A1 - 841 x 594"; key = "MA1"; } : radio_button { label = "A2 - 594 x 420"; key = "MA2"; } : radio_button { label = "A3 - 420 x 297"; key = "MA3"; } : radio_button { label = "A4 - 297 x 210"; key = "MA4"; } } }}} : row { ok_cancel; } : paragraph { : row { : text_part { label = "Conçu et créer par:"; } : text_part { label = "Tony Hotchkiss"; } } : row { : text_part { label = "Adaptation et Traduction"; } : text_part { label = "François Huot, Montmagny, QC."; } } }} // cover1
CADarome Posté(e) le 18 janvier 2006 Posté(e) le 18 janvier 2006 wow !!! tout ca pour simplement insérer un gabarit ??pas vraiment utile... désolé...mais pourquoi tout simplement ne pas insérer un fichier DWG qui contient déjà tes gabarits ? De plus,...il y a beaucoup d'erreurs dans ta routine....à moins que tu n'a pas tout affiché ? [Edité le 18/1/2006 par CADarome] Sky is the limit.....Mon oeuil !!
x13 Posté(e) le 18 janvier 2006 Auteur Posté(e) le 18 janvier 2006 Ces gabarits "cartouche" sont des fichiers DWG avec attributs.
Patrick_35 Posté(e) le 18 janvier 2006 Posté(e) le 18 janvier 2006 SalutJ'ai repris ton lisp d'une manière un peu différente. Il ne te reste plus qu'à le compléter selon tes besoins Fichier GAB.DCLgab : dialog { label = "Gabarits - Feuille de dessin - (Dimensions en MM)"; width = 80; : boxed_column { label = "Sélectionnez un gabarit -- STANDARDS IMPÉRIAL--"; : popup_list {key = "imperial";} spacer; } : boxed_column { label = "Sélectionnez un gabarit -- STANDARDS ISO--"; : row { : radio_button {label = "ARCHITECTURE"; key = "archi";} : radio_button {label = "STRUCTURE"; key = "structure";} : radio_button {label = "MÉCANIQUE-ÉLECTRICITÉ"; key = "meca";} } : popup_list {key = "iso";} spacer; } is_cancel = true; ok_cancel; } Fichier GAB.LSP(defun c:gab(/ archi dcl_id lst_1 lst_2 meca resultat rlst_1 rlst_2 structure txt) (defun affichage() (set_tile "imperial" rlst_1) (set_tile "archi" archi) (set_tile "structure" structure) (set_tile "meca" meca) (set_tile "iso" rlst_2) ) (if (setq dcl_id (load_dialog (findfile "gab.dcl"))) (progn (setq lst_1 '("AUCUN" "Format A- (8.5po. x 11po. ou 9 x 12)" "Format B- (11po. X 17po. ou 12 x 18) DESSIN D'ATELIER STRUCT. ACIER" "Format C- 457 x 610 (18po. X 24po.)" "Format D- 610 x 914 (24po. X 36po.)" "Format E- 914 x 1219 (36po. X 48po.)" "Format F- 216 x 356 (8.5po. X 14po.) DESSIN D'ATELIER STRUCT. ACIER" "Format G- 216 x 279 (8.5po. X 11po.) ADDENDA" "Format H- 216 x 279 (8.5po. X 11po.) CHANTIER- AVIS CHANGEMENT-MODIFICATION") lst_2 '("AUCUN" "A0 - 1189 x 841" "A1 - 841 x 594" "A2 - 594 x 420" "A3 - 420 x 297" "A4 - 297 x 210") archi "0" structure "0" meca "0" rlst_1 "0" rlst_2 "0") (new_dialog "gab" dcl_id) (start_list "imperial") (mapcar 'add_list lst_1) (end_list) (start_list "iso") (mapcar 'add_list lst_2) (end_list) (affichage) (mode_tile "cancel" 2) (while (and (/= resultat 1) (/= resultat 0)) (action_tile "imperial" "(setq archi \"0\" structure \"0\" meca \"0\" rlst_1 $value rlst_2 \"0\")(affichage)") (action_tile "archi" "(setq archi \"1\" structure \"0\" meca \"0\" rlst_1 \"0\")(affichage)") (action_tile "structure" "(setq archi \"0\" structure \"1\" meca \"0\" rlst_1 \"0\")(affichage)") (action_tile "meca" "(setq archi \"0\" structure \"0\" meca \"1\" rlst_1 \"0\")(affichage)") (action_tile "iso" "(setq rlst_1 \"0\" rlst_2 $value)(affichage)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq resultat (start_dialog)) (unload_dialog dcl_id) ) (if (= resultat 1) (progn (cond ((/= rlst_1 "0") (setq txt (strcat "-- STANDARDS IMPÉRIAL--\n" (nth (atoi rlst_1) lst_1))) ) ((and (= archi "1") (/= rlst_2 "0")) (setq txt (strcat "-- STANDARDS ISO--\nARCHITECTURE\n" (nth (atoi rlst_2) lst_2))) ) ((and (= structure "1") (/= rlst_2 "0")) (setq txt (strcat "-- STANDARDS ISO--\nSTRUCTURE\n" (nth (atoi rlst_2) lst_2))) ) ((and (= meca "1") (/= rlst_2 "0")) (setq txt (strcat "-- STANDARDS ISO--\nMÉCANIQUE-ÉLECTRICITÉ\n" (nth (atoi rlst_2) lst_2))) ) ) (if txt (alert txt) (alert "Rien de sélectionné") ) ) ) ) ) (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
x13 Posté(e) le 18 janvier 2006 Auteur Posté(e) le 18 janvier 2006 Merçi beaucoup Patrick_35 pour le nouveau lisp, je vais regarder cela de plus près ce soir. Demain pour les commentaires, aujourd'hui la journée est trop chargée. Salutations, François
CADarome Posté(e) le 19 janvier 2006 Posté(e) le 19 janvier 2006 Ces gabarits "cartouche" sont des fichiers DWG avec attributs. Ok....alors parlon un peu plus clairement...je crois qu'il y a mal entendu... Un Gabarit pour moi c'est un "TEMPLATE"...et non pas nécéssairement une cartouche, Cadre ou encadrement appellons-le comme on veut.. Un Gabarit dans AutoCAD c'est un fichier dwt.....en fait...un DWT c'est exactement la même chode qu'un DWG, AutoDESK a cru bon les renommer différemment pour ne pas avoir de conflics.. Bref, t'as j'amais remarqué que lorsque tu commence un dessin (vide), AutoCAD utilise un GABARIT DWT ?? Ceux-ci sont utiles...En fait si tu as un dessin remplis de Calques, Types de lignes, mises-en-page, Style de DImensions, Style de texte etc...etc... et que ton dessin ne contient même pas une ligne...niet ! niente...NADA !!rien ne t'empêche de l'inséré quand même dans un autre question d'avoir tous ces options... tu vois ? p'tit-truc. Sky is the limit.....Mon oeuil !!
x13 Posté(e) le 19 janvier 2006 Auteur Posté(e) le 19 janvier 2006 Bonjour Cadarome, Pour ce qui est .DWT je connais, merçi quand même.Pour moi template est le terme anglais de gabarit qui peut contenir un bloc titre ou cartouche ou "title block" avec attributs. Bonjour Patrick_35 Il me semble y avoir 4 parenthèse de fermeture de trop que j'ai enlever et cela me semble fonctionné parfaitement pour ce qui est de l'ouverture de la boîte de dialogue et du choix de gabarit. Il reste à ajouter l'insertion des fihiers .DWG des gabarits. si tu peux me donner un enlignement. Merçi encore, François. :)
Patrick_35 Posté(e) le 19 janvier 2006 Posté(e) le 19 janvier 2006 Il me semble y avoir 4 parenthèse de fermeture de trop que j'ai enlever et cela me semble fonctionné parfaitement pour ce qui est de l'ouverture de la boîte de dialogue et du choix de gabarit.Où ça ? j'ai testé et tout fonctionne parfaitement Il reste à ajouter l'insertion des fihiers .DWG des gabarits. si tu peux me donner un enlignementLe lisp modifié. Il reste à ajouter la gestion des erreursPour ce qui est du nom des dwg, c'est dans les listes lst_3 et lst_4 @+ (defun c:gab(/ archi dcl_id lst_1 lst_2 lst_3 lst_4 meca nom_dwg resultat rlst_1 rlst_2 structure txt) (defun affichage() (set_tile "imperial" rlst_1) (set_tile "archi" archi) (set_tile "structure" structure) (set_tile "meca" meca) (set_tile "iso" rlst_2) ) (vl-load-com) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) ; remplace (command "_.undo" "_group") (if (setq dcl_id (load_dialog (findfile "gab.dcl"))) (progn (setq lst_1 '("AUCUN" "Format A- (8.5po. x 11po. ou 9 x 12)" "Format B- (11po. X 17po. ou 12 x 18) DESSIN D'ATELIER STRUCT. ACIER" "Format C- 457 x 610 (18po. X 24po.)" "Format D- 610 x 914 (24po. X 36po.)" "Format E- 914 x 1219 (36po. X 48po.)" "Format F- 216 x 356 (8.5po. X 14po.) DESSIN D'ATELIER STRUCT. ACIER" "Format G- 216 x 279 (8.5po. X 11po.) ADDENDA" "Format H- 216 x 279 (8.5po. X 11po.) CHANTIER- AVIS CHANGEMENT-MODIFICATION") lst_2 '("AUCUN" "A0 - 1189 x 841" "A1 - 841 x 594" "A2 - 594 x 420" "A3 - 420 x 297" "A4 - 297 x 210") lst_3 '("" "IA" "IB" "IC" "ID" "IE" "IF" "IG" "IH") ; nom des dwg en Standard impérial lst_4 '("" "A0" "A1" "A2" "A3" "A4") ; nom des dwg en ISO archi "0" structure "0" meca "0" rlst_1 "0" rlst_2 "0") (new_dialog "gab" dcl_id) (start_list "imperial") (mapcar 'add_list lst_1) (end_list) (start_list "iso") (mapcar 'add_list lst_2) (end_list) (affichage) (mode_tile "cancel" 2) (while (and (/= resultat 1) (/= resultat 0)) (action_tile "imperial" "(setq archi \"0\" structure \"0\" meca \"0\" rlst_1 $value rlst_2 \"0\")(affichage)") (action_tile "archi" "(setq archi \"1\" structure \"0\" meca \"0\" rlst_1 \"0\")(affichage)") (action_tile "structure" "(setq archi \"0\" structure \"1\" meca \"0\" rlst_1 \"0\")(affichage)") (action_tile "meca" "(setq archi \"0\" structure \"0\" meca \"1\" rlst_1 \"0\")(affichage)") (action_tile "iso" "(setq rlst_1 \"0\" rlst_2 $value)(affichage)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq resultat (start_dialog)) (unload_dialog dcl_id) ) (if (= resultat 1) (progn (cond ((/= rlst_1 "0") (setq txt (strcat "-- STANDARDS IMPÉRIAL--\n" (nth (atoi rlst_1) lst_1))) (setq nom_dwg (nth (atoi rlst_1) lst_3)) ) ((and (= archi "1") (/= rlst_2 "0")) (setq txt (strcat "-- STANDARDS ISO--\nARCHITECTURE\n" (nth (atoi rlst_2) lst_2))) (setq nom_dwg (strcat "A" (nth (atoi rlst_2) lst_4))) ) ((and (= structure "1") (/= rlst_2 "0")) (setq txt (strcat "-- STANDARDS ISO--\nSTRUCTURE\n" (nth (atoi rlst_2) lst_2))) (setq nom_dwg (strcat "S" (nth (atoi rlst_2) lst_4))) ) ((and (= meca "1") (/= rlst_2 "0")) (setq txt (strcat "-- STANDARDS ISO--\nMÉCANIQUE-ÉLECTRICITÉ\n" (nth (atoi rlst_2) lst_2))) (setq nom_dwg (strcat "M" (nth (atoi rlst_2) lst_4))) ) ) (if nom_dwg (alert (strcat txt "\n \nNom du DWG : " nom_dwg ".DWG")) ; (command "_.insert" nom_dwg etc....) et on peut retirer les alerts ou mieux (vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point '(0.0 0.0 0.0)) (findfile (strcat nom_dwg ".dwg")) 1 1 1 0)) ; pour eviter un command ;) (alert "Rien de sélectionné") ) ) ) ) ) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) ; remplace (command "_.undo" "_end") (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
x13 Posté(e) le 19 janvier 2006 Auteur Posté(e) le 19 janvier 2006 Bonjour Patrick_35, Merçi pour le code complémentaire. Après un premier regard voiçci quelques questions: 1) À la list4 tu liste les fichier ISO A0, A1,A2,A3,A4 Comme le nom de dessin demes gabarits porteront le préfixe A, S ou M, soit AA0, SA0 ,MAO et ainsi de suite. Est-ce ces lignes de code qui permettent le transfert d'une spécialité à l'autre. (setq nom_dwg (strcat "A" (nth (atoi rlst_2) lst_4))) (setq nom_dwg (strcat "S" (nth (atoi rlst_2) lst_4))) (setq nom_dwg (strcat "M" (nth (atoi rlst_2) lst_4)) 2) Si je ne me trompe pas , tu insère les gabarits dans l'espace objet, j'insère toujours mes gabarits dans les onglets de l'espace papier, je vais étudier le code pour permettre l'insertion dans les 2 modes. 3) Quelles est la façon la plus adéquate de vérifier les parenthèses. Les compter ces fastidieux dans certain cas. Surement Visual Lisp, je vais voir l'aide, en espérant que la procédure est bien décrite. Je vais test le tout ce soir . Merçi. François.
Patrick_35 Posté(e) le 19 janvier 2006 Posté(e) le 19 janvier 2006 1) C'est exactement ce qui est fait.2) La commande insert le permet où tu le souhaites Sinon, en vl tu fais comme ceci (if (= (getvar "tilemode") "1") (setq pap (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq pap (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object)))) ) (vla-InsertBlock pap (vlax-3d-point '(0.0 0.0 0.0)) (findfile (strcat nom_dwg ".dwg")) 1 1 1 0))3) les parenthèses vont toujours par paires. Quand on affiche son code sur Cadxp, les espaces sont supprimés :mad: un exemple avec les - représentant les espaces afin que ton code soit plus visible (defun c:as(/ sel) --(vl-load-com) --(vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) --(if (setq sel (ssget "_+.:E:s" '((0 . "HATCH")))) ----(vla-put-associativehatch (vlax-ename->vla-object (ssname sel 0)) :vlax-false) --) --(vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) --(princ) ) Tu peux aussi te servir de l'editeur _vlide (visual lisp) qui te mets ton code en couleur et tu peux apparier les parenthèses @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
CADarome Posté(e) le 20 janvier 2006 Posté(e) le 20 janvier 2006 Bonjour Cadarome, Pour ce qui est .DWT je connais, merçi quand même.Pour moi template est le terme anglais de gabarit qui peut contenir un bloc titre ou cartouche ou "title block" avec attributs. :) Salut François, Un gabarit c'est effectivement un TEMPLATE...seulement voilà....tu peu avoir un gabarit sans avoir de dessin....tu voit ? autrement......pourquoi il n'y a même pas une ligne dans AutoCAD.dwt ?? Sky is the limit.....Mon oeuil !!
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