Aller au contenu

Convertisseur de calque


Messages recommandés

Posté(e)

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 ?

 

:(

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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]

Posté(e)

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]

Posté(e)

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’exportation

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

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

Joseph Joubert, 1754-1824

Posté(e)

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 ?

 

Posté(e)

Merci et je suis bien l’auteur du prog

Pour rechercher si un calque existe avec la fonction tblsearch, tu fais

(if (tblsearch "layer" "MONCALQUE")(alert "CALQUE EXISTANT")(alert "CALQUE INEXISTANT"))

 

@+

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

Posté(e)

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 ?

Posté(e)

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

  • 2 semaines après...
Posté(e)

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

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é