drault Posté(e) le 22 septembre 2022 Posté(e) le 22 septembre 2022 Bonjour, Est-il possible de générer à partir des calques déjà présent dans un fichier, une succession de ligne + couleur propre en colonne et le nom respectif de chaque calque à côté par LISP ? Le VBA serait-il le plus adapté ? Avant de poser ce problème, j'ai cherché mais peut-être avec les mauvais mots clés. Bonne journée,
Curlygoth Posté(e) le 22 septembre 2022 Posté(e) le 22 septembre 2022 les deux languauges sont adaptés => vu qu'ils peuvent faire la même chose ^^ et pour avoir une base de calques dans des txt / excel / word / base accessetc... c'est largement faisable ^^ Il te faut : savoir lire dans un fichier (Perso j'ai créé des fonctions pour extraire les données d'une valeur dans une base) Créer des calques et attribuer des propiétés dessus et ... c'est tout ^^ NomDuCalque;Couleur;Type de ligne;Epaisseur;Transparence;etc... chaque colonne à un index et tu cherches la bonne ligne avec le nom de ton calque par exemple Mon site Web (en cours de construction) : Site DA-CODE de @didier
Luna Posté(e) le 22 septembre 2022 Posté(e) le 22 septembre 2022 Coucou, Essaye avec ceci pour voir (j'ai testé vite fait et chat me semble correct), à voir si j'ai bien compris la demande ^^" : (defun c:LAYERLIST (/ len rng htx ech pt doc layers ms i lck coe spt ept tpt obj txt) (setq len 2.0 rng 1.0 htx 0.25 ech 1.0 mod "ByLayer" pt '(0.0 0.0 0.0) ) (if (= "Expert" (cond ((initget "Expert Auto")) ((getkword "\nComment souhaitez-vous utiliser le programme ? [Expert/Auto] <Auto> ")) ("Auto"))) (setq len (cond ((initget (apply '+ '(2 4 64 1024)))) ((getdist (strcat "\nLongueur des lignes <" (rtos len) "> : "))) (len)) rng (cond ((initget (apply '+ '(2 4 64 1024)))) ((getdist (strcat "\nEcart entre chaque ligne <" (rtos rng) "> : "))) (rng)) htx (cond ((initget (apply '+ '(2 4)))) ((getreal (strcat "\nHauteur de texte <" (rtos htx) "> : "))) (htx)) ech (cond ((initget (apply '+ '(2 4)))) ((getreal (strcat "\nEchelle du type de ligne <" (rtos ech) "> : "))) (ech)) mod (cond ((initget "ByLayer Forced")) ((getkword (strcat "\nSouhaitez-vous affecter les calques aux lignes ou forcer les propriétés sur le calque courant [ByLayer/Forced] ? <" mod "> "))) (mod) ) pt (cond ((getpoint (strcat "\nPoint d'insertion de la liste <" (rtos (car pt)) "," (rtos (cadr pt)) "," (rtos (caddr pt)) "> :"))) (pt)) ) ) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)) layers (vla-get-layers doc) ms (vla-get-modelspace doc) i 0 lck (vlax-get (setq layer (vla-item layers (getvar "CLAYER"))) 'Lock) ) (vla-StartUndoMark doc) (if (= lck -1) (vlax-put layer 'Lock 0)) (vlax-for layer layers (setq coe (* i rng) spt (mapcar '+ pt (list 0 (+ coe (* 0.5 htx)) 0)) ept (mapcar '+ pt (list len (+ coe (* 0.5 htx)) 0)) tpt (mapcar '+ pt (list (+ len (* 0.5 rng)) coe 0)) obj (vla-AddLine ms (vlax-3d-point spt) (vlax-3d-point ept)) txt (vla-AddText ms (vlax-get layer 'Name) (vlax-3d-point tpt) htx) i (1+ i) ) (cond ( (= "ByLayer" mod) (vlax-put obj 'LinetypeScale ech) (vlax-put obj 'Layer (vlax-get layer 'Name)) ) ( (= "Forced" mod) (vlax-put obj 'TrueColor (vlax-get layer 'TrueColor)) (vlax-put obj 'Lineweight (vlax-get layer 'Lineweight)) (vlax-put obj 'Linetype (vlax-get layer 'Linetype)) (vlax-put obj 'LinetypeScale ech) ) ) ) (if (= lck -1) (vlax-put layer 'Lock -1)) (vla-ZoomWindow (vlax-get-acad-object) (vlax-3d-point pt) (vlax-3d-point tpt)) (princ (strcat "\nUn total de " (itoa i) " calques ont été listé au point d'insertion : " (vl-princ-to-string pt) ) ) (vla-EndUndoMark doc) (princ) ) La première question permet de choisir entre exécuter le programme avec les valeurs par défaut (renseigner dans le premier (setq) du programme) (= "Auto") ou de poser une série de questions (= "Expert") pour pouvoir modifier ces valeurs ponctuellement. Bisous, Luna
drault Posté(e) le 23 mars 2023 Auteur Posté(e) le 23 mars 2023 @luna : merci, ça marche du tonnère ! Je continue à me former en VBA, je passerais au LSP. @curlygoth : je pense effectivement que passer depuis un fichier excel et l'importer de la meme maniere que le code LSP de Luna, peut-être l'étape d'apèrs. As-tu des pistes de recherche niveau VBA pour les sites ?
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