Aviglémy Posté(e) le 24 janvier 2005 Posté(e) le 24 janvier 2005 Bonjour, Je cherche à lancer le convertisseur de calque, depuis une commande lisp.Charger un fichier norme, et enfin lancer la conversion. Merci d'avance.
Patrick_35 Posté(e) le 24 janvier 2005 Posté(e) le 24 janvier 2005 Qu’entends tu par convertisseur de calque ? ? ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 24 janvier 2005 Posté(e) le 24 janvier 2005 Ah, merci Patrick, une commande que je ne connais pas. Vivement que je passe à une version supérieur @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Aviglémy Posté(e) le 24 janvier 2005 Auteur Posté(e) le 24 janvier 2005 Merci Parrik.. ;) pour convcalque ! ( laytrans ) mais justement c'est la que je bloque... et il possible d'utiliser cette fonction sans passer par la boite de dialogue ? :(
BIM G CO Posté(e) le 25 janvier 2005 Posté(e) le 25 janvier 2005 Bah non justement ! a moins de passer par les codes DXF de chaque entités constituant tout ou partie du dessin! Patrick_35 ConvCalque est présent sur la AutoCAD 2002 (j'ai testé ...... sur une version *bip*) :P Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
Patrick_35 Posté(e) le 26 janvier 2005 Posté(e) le 26 janvier 2005 Pour MaximilienSur une 2002 peut-être, mais pas sur la 2000 @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
mlon Posté(e) le 26 janvier 2005 Posté(e) le 26 janvier 2005 Bah écoute moi g bloqué sur le meme problème...pas moyen d'avoir de commande transparente meme avec "expert =1" / "filedia =0" etc...le seul moyen (je pense) c'est de contourner le pb en créant un lisp qui remplace la fontion laytrans....mais le prob c'est que le temps de traiment va etre vachement plus long...ou alors le vb mais la je ne suis pas compétent. je sais ce que je sais mais comment connaître mon ignorance
BIM G CO Posté(e) le 27 janvier 2005 Posté(e) le 27 janvier 2005 pour Laytrans en charchant sur google :attention : site anglophone mais au moins je crois qu'il est décortiqué!http://discussion.autodesk.com/thread.jspa?threadID=365127 Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
Aviglémy Posté(e) le 27 janvier 2005 Auteur Posté(e) le 27 janvier 2005 Merci à vous tous !J’ai essayer de faire fonctionner le lisp donné sur le forum anglophone, sans résultat…C’est plutôt étrange comme commande le résultat n’est pas évidant… Les recherches continues…. a+ ;) [Edité le 27/1/2005 par Aviglémy]
Aviglémy Posté(e) le 27 janvier 2005 Auteur Posté(e) le 27 janvier 2005 Je laisse une copie du lisp si quelqu’un à le courage d’expliquer la méthode utilisée… (defun c:LayStd () (setq dir (ACET-UI-PICKDIR "Sélectioner le répertoire pour vérifier les standards:" "C:\\" ) dwglst (acet-file-dir "*.dwg" dir) scrname (strcat (getvar "savefilepath") "ScrDwgs1.scr") scr (open scrname "w") ) ; DWSFilename (getfiled "Select DWS filename" "" "dwg" 4) <----This line is ;not needed because you specify the dws filename later, in file Laystd (princ "sdi 1 " scr) (foreach dwg dwglst (princ (strcat "._qsave open \"" dwg "\"" "\n") scr) (princ (strcat "(load \"LayStd.lsp\")") scr) ;;<-----Laystd is the name of;;;the lisp file where you save this routine. (princ "\n" scr) ) (princ "sdi 0 " scr) (close scr) (vl-cmdf "script" scrname)) (if (>= (getvar "cmdactive") 4) (acet-laytrans "Z:\\_Estilos Taller_CAD\\Standards\\DwgStd.dwg" ; <-------Change this to;;;;yor standard file path name 7 ))(princ "\n Laytrans chargé") [Edité le 27/1/2005 par Aviglémy]
Patrick_35 Posté(e) le 28 janvier 2005 Posté(e) le 28 janvier 2005 Voilà un lisp avec deux fonctions pour exporter/importer des calques d’un dessin vers un autre pour faire des macros ou encore les scripts Pour exporter, la fonction (explay fichier calques)Fichier --> Nom du fichier pour l’exportationCalques --> La liste de calques que l’on souhaite exporter Ex : (explay "toto.txt" '("Calque1" "Calque2" "Calque3" "Calque4"))Exporte les calques Calque1 à 4 Ex : (explay "toto.txt" '("*C*" "1*"))Exporte les calques contenant un C et ceux commencant par 1 Et pour importer la fonction (implay fichier) @+ (defun explay(fichier lay / a b c d f) (if (setq f (open fichier "w")) (progn (vl-load-com) (setq a (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) (foreach b lay (setq d nil) (vlax-for c a (if (and (wcmatch (vla-get-name c) b) (not (vl-string-search "|" (vla-get-name c)))) (progn (setq d (vla-get-name c)) (write-line (vla-get-name c) f) (write-line (itoa (vla-get-color c)) f) (if (= (vla-get-freeze c) :vlax-true) (write-line "-1" f) (write-line "0" f) ) (if (= (vla-get-layeron c) :vlax-true) (write-line "-1" f) (write-line "0" f) ) (write-line (vla-get-linetype c) f) (write-line (itoa (vla-get-lineweight c)) f) (if (= (vla-get-lock c) :vlax-true) (write-line "-1" f) (write-line "0" f) ) (if (= (vla-get-plottable c) :vlax-true) (write-line "-1" f) (write-line "0" f) ) (if (= (vla-get-viewportdefault c) :vlax-true) (write-line "-1" f) (write-line "0" f) ) ) ) ) (if (not d) (princ (strcat "\nCalque " b " inexistant")) ) ) (close f) (princ "\nExportation terminée") ) (alert (strcat "Impossible de créer le fichier " fichier)) ) (princ) ) (defun implay(fichier / a b c d e f g h i) (defun lecture_fichier_ligne(type nom / a b) (if (findfile nom) (progn (setq nom (open (findfile nom) "r")) (while (setq a (read-line nom)) (if (= (vl-string-search (strcat "*" type) a) 0) (setq b t) ) ) (close nom) ) ) b ) (defun parcourir(type col / a b) (vlax-for a col (if (= (strcase (vla-get-name a)) (strcase type)) (setq b t) ) ) b ) (vl-load-com) (if (setq f (open fichier "r")) (progn (setq a (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) (setq e (vla-get-linetypes (vla-get-activedocument (vlax-get-acad-object)))) (while (setq b (read-line f)) (if (= b (getvar "clayer")) (progn (setq i (vla-add a "lay_tmp")) (setq h (getvar "clayer")) (setvar "clayer" "lay_tmp") ) ) (setq d nil) (vlax-for c a (if (= (vla-get-name c) b) (setq d c) ) ) (if (not d) (setq d (vla-add a b)) ) (vla-put-color d (atoi (read-line f))) (if (= (read-line f) "-1") (vla-put-freeze d :vlax-true) (vla-put-freeze d :vlax-false) ) (if (= (read-line f) "-1") (vla-put-layeron d :vlax-true) (vla-put-layeron d :vlax-false) ) (setq g (read-line f)) (if (not (parcourir g e)) (if (lecture_fichier_ligne g "acad.lin") (vla-load e g "acad.lin") (if (lecture_fichier_ligne g "acadiso.lin") (vla-load e g "acadiso.lin") ) ) ) (if (parcourir g e) (vla-put-linetype d g) (princ (strcat "\nType de ligne " g " inconnu")) ) (vla-put-lineweight d (atoi (read-line f))) (if (= (read-line f) "-1") (vla-put-lock d :vlax-true) (vla-put-lock d :vlax-false) ) (if (= (read-line f) "-1") (vla-put-plottable d :vlax-true) (vla-put-plottable d :vlax-false) ) (if (= (read-line f) "-1") (vla-put-viewportdefault d :vlax-true) (vla-put-viewportdefault d :vlax-false) ) (if (= "lay_tmp" (getvar "clayer")) (progn (setvar "clayer" h) (vla-delete i) ) ) ) (close f) (princ "\nImportation terminée") ) (alert (strcat "Impossible d'ouvrir le fichier " fichier)) ) (princ) ) [Edité le 28/1/2005 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Aviglémy Posté(e) le 1 février 2005 Auteur Posté(e) le 1 février 2005 Merci Patrik_35 !Très beau programme !Si tu en es l’auteur … et bien … J’applaudis à deux mains !Si tu ne l’ai pas, j’applaudi quand même, pour te faire plaisir. Ce lisp m’a donné une idée de fonction ! … ;)Cette fonction doit être dans les lignes du lisp précédant, mais je ne trouve pas ! :(Débutant oblige… Donc je recherche la méthode pour évaluer la présence d’un groupe de calque dans un dessin. Si un ou plusieurs calques commencent par le préfix « abc … » parmi tous les calques du dessin. J’ai trouvé « tblsearch » mais je ne trouve pas comment mettre la condition « qui début par .. ». Merci de m’éclairer je suis dans le noir total ! Elle est ou la lumière ?
Patrick_35 Posté(e) le 2 février 2005 Posté(e) le 2 février 2005 Merci et je suis bien l’auteur du progPour rechercher si un calque existe avec la fonction tblsearch, tu fais(if (tblsearch "layer" "MONCALQUE")(alert "CALQUE EXISTANT")(alert "CALQUE INEXISTANT")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Aviglémy Posté(e) le 3 février 2005 Auteur Posté(e) le 3 février 2005 J’ai bien compris la syntaxe pour « tblsearch » La ou je ne comprend pas c’est pour lui demander de rechercher si il existe un claque qui commence par un préfix. Dans l’exemple de MONCALQUE cela fait les calques commencent par MON..Donc la ligne :(if (tblsearch "layer" "MON ? ? ? ?")(alert "CALQUE EXISTANT")(alert "CALQUE INEXISTANT")) Mais cette syntaxe est incorrecte !… :exclam: Comment faire ?
bonuscad Posté(e) le 3 février 2005 Posté(e) le 3 février 2005 Cela irait-il ? (defun c:calque_existe ( / name_lay first_lay lst_lay next_lay) (setq name_lay (strcase (getstring T "\nEntrez le nom de calque recherché (joker * accepté): "))) (setq first_lay (tblnext "LAYER" T) lst_lay (list (cdr (assoc 2 first_lay))) ) (while (setq next_lay (tblnext "LAYER" nil)) (setq lst_lay (cons (cdr (assoc 2 next_lay)) lst_lay)) ) (textscr) (foreach n lst_lay (if (wcmatch (strcase n) name_lay) (princ (strcat "\nCalque " n " correspond au critère de recherche (" name_lay ")")))) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Patrick_35 Posté(e) le 3 février 2005 Posté(e) le 3 février 2005 Pas mieux que Bonus, c'est avec les fonctions wcmatch et tblnext Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Aviglémy Posté(e) le 15 février 2005 Auteur Posté(e) le 15 février 2005 Bonjour ! (désolé pour la réponse tardive) J’ai modifié un peut la fin pour que ces lignes s’intègrent dans un autre lsp et ça fonctionne ! C'est une première étape, ces quelques lignes me serviront pour bien d'autre application. Encore merci et à bientôt. :P
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