Aller au contenu

Gabarit insertion


x13

Messages recommandés

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 code

associé 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

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

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 !!

Lien vers le commentaire
Partager sur d’autres sites

Salut

J'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.DCL

gab : 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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 !!

Lien vers le commentaire
Partager sur d’autres sites

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.

 

:)

Lien vers le commentaire
Partager sur d’autres sites

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 enlignement

Le lisp modifié. Il reste à ajouter la gestion des erreurs

Pour 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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 !!

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité