Karmelie Posté(e) le 12 novembre 2012 Posté(e) le 12 novembre 2012 Bonjour, Ma question: dans un dessin existant, est-il possible de remplir la propriété "Description" de plusieurs calques existants par la propriété "Description" de ces mêmes calques contenue dans un prototype? Voici pourquoi:Afin de faciliter la tâche des nouveaux dessinateurs, nous avons dernièrement décider de rempli la description des calques que l'on retrouve dans le gestionnaire des propriétés des calques de nos prototypes. Le nom de nos calques est "codé", donc pas toujours évident à comprendre. Avant d'aller plus loin dans cette requête, j'ai fait des tests, tous non concluant. • J'ai essayé le convertisseur de calque: la couleur, le type de ligne, l'épaisseur de ligne sont modifiés mais pas la description… (pourquoi ne pas y avoir penser ici…la transparence y est…) • J'ai essayé de vérifier les standards: ici non plus on ne prend pas en compte la description des calques. • J'ai essayé un script avec "_-layer _m…." qui habituellement recrée le calque et écrase les propriétés existantes d'un calque, mais pas pour la description. La formulation du script diffère si le calque est existant ou pas et diffère également si le calque a déjà ou non une description… • J'ai essayé le Design Center: Les nouveaux calques arrivent avec leurs propriétés y compris la description, mais la description des calques existants ne change pas . Les calques dont les dessinateurs ont besoin ne sont pas contenus dans les prototypes de départ mais créés au fur et à mesure des besoins. Les lignes, les textes, les tableaux et les symboles sont dessinés sur leurs calques respectifs et c'est à partir de ses dessins (un par spécialité) que les palettes ont été créées. Même si, aujourd'hui, j'ajoute une description aux calques de ces prototypes-spécialités, lorsque j'insère un blocs ou dessine un ligne, la description du calque n'y est pas. Idéalement, j'aurais pensé à un bouton ou à une commande que l'usager activerait au besoin pour faire "écrire" les descriptions de calques manquantes ou modifiées. Merci `a l'avance à ceux qui auront une solution! Karmélie
bryce Posté(e) le 12 novembre 2012 Posté(e) le 12 novembre 2012 Bonsoir, Comme tu as déjà essayé beaucoup de choses, on dirait qu'il ne reste plus que le Lisp... <_< Voici un exemple qui irait piocher les descriptions dans un fichier texte : (defun c:LAYDESC ( / sep f l flst i lay descr ) ; Caractère de séparation entre le nom de calque et la description dans le fichier texte: (setq sep ";") (vl-load-com) (setq flst '() f (getfiled "" "" "txt;csv;prn" 4)) (if (and f (setq f (open f "r"))) (progn (while (setq l (read-line f)) (setq flst (cons l flst)) ) (close f) (setq flst (reverse flst)) ) ) (if flst (foreach l flst (setq i (vl-string-search sep l) lay (substr l 1 i) descr (substr l (+ i 2))) (if (setq lay (tblobjname "LAYER" lay)) (progn (setq lay (vlax-ename->vla-object lay)) (vla-put-description lay descr) (princ (strcat "\nDescription du calque " (vla-get-name lay) " modifiée.")) ) ) );foreach ) (princ) ) Structure du fichier txt:0;description du calque 0 calque A;description du calque A calque B;description du calque B calque C;description du calque C Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Eric Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 Bonjour, Et pourquoi ne pas créer un script avec la commande _-layer et l'option description.Soit -_layer _d Ca permet de remplir la description d'un calque. Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
Invité Patrick Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 As tu regardé ce qu'on pouvait faire avec les normes CAO? Commande NORMES.
philsogood Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 helloje pense comme Eric...pour compléter sa réponse ça donnerait ça :_-layer onlys "nom_du_calque" _d "description"si tu utilises excel avec une colonne par mot (ici on aura 2 colonnes var il n'y a que 2 variables) avec une colonne pour CONCATENER tu n'auras qu'à recopier ça dans un script... très facile++Phil Projeteur Revit Indépendant - traitement des eaux/CVC
bryce Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 Bonjour, Avant de proposer un Lisp, j'ai essayé un script avec la commande _-layer et l'option _d.Ça fonctionne si le calque n'a pas encore de description, sinon il y a une étape supplémentaire pour confirmer la modification, ce qui fait "dérailler" le script... Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Eric Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 L'idée serait peut être avant, de remettre les description à 0 avec un script du genre -calque s *o Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
philsogood Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 Extra ton idée Eric!!(le script est tellement plus accessible que le lisp!!)Phil Projeteur Revit Indépendant - traitement des eaux/CVC
bryce Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 Très bonne idée en effet.Mais si aucun des calques n'a de description au départ, ça fera planter le script... Voici un autre Lisp, qui va directement chercher les descriptions dans un fichier DWT: (defun opendbx(dwg / dbx) ; par Patrick_35 (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument")) (setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2)))) ) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx dwg))) nil dbx ) ) (defun c:LAYDESC ( / template f dbxlayers dbxl l ) ; Nom du gabarit contenant les descriptions de calques (setq template "test.dwt") (vl-load-com) (if (setq f (opendbx (strcat (getenv "TemplatePath") "\\" template))) (progn (setq dbxlayers (vla-get-layers f)) (vlax-for dbxl dbxlayers (if (setq l (tblobjname "LAYER" (vla-get-name dbxl))) (progn (setq l (vlax-ename->vla-object l)) (vla-put-description l (vla-get-description dbxl)) ) ) ) (vlax-release-object f) ) ) (princ) ) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Eric Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 Très bonne idée en effet.Mais si aucun des calques n'a de description au départ, ça fera planter le script... Pour le fun, toujours en scriptOn créer un calque avec une description (comme ça pas de blocage), on supprime toute les descriptions puis on supprime le calque créé au début. Comme ça, ça devrait fonctionner. Ce qui donne : -calque n "lecalqueaeric" s "cestmoncalque" "lecalqueaeric" s * o -purger ca "lecalqueaeric" n Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
bryce Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 Bien vu ! :D Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Karmelie Posté(e) le 13 novembre 2012 Auteur Posté(e) le 13 novembre 2012 As tu regardé ce qu'on pouvait faire avec les normes CAO? Commande NORMES. Bonjour Patrick Les Normes ne prennent pas en charge les descriptions de calques (mes 2 premiers tests) Merci de l'idée
Karmelie Posté(e) le 13 novembre 2012 Auteur Posté(e) le 13 novembre 2012 Bonjour, Et pourquoi ne pas créer un script avec la commande _-layer et l'option description.Soit -_layer _d Ca permet de remplir la description d'un calque. Bonjour Eric, _-layer _S et non pas _-layer _d, mais je sais. Toutefois, tel que décrit dans mon 3ieme test, il faudrait que j'insère dans le dessin, tous les calques de la spécialité avec la description déjà remplie (insertion dégroupé du prototype).Les calques existants ne sont pas pris en considération, donc les descriptions ne sont pas remplis et avec le avec un script _-Layer _s, la question n'est pas la même si la description existe ou non.... Avec un script, je ne peux pas faire vérifier si le champs est rempli ou pas. Merci
Karmelie Posté(e) le 13 novembre 2012 Auteur Posté(e) le 13 novembre 2012 ce qui fait "dérailler" le script... Bonjour Bryce C'était le constant de mon 3ième essai. Karmélie
Karmelie Posté(e) le 13 novembre 2012 Auteur Posté(e) le 13 novembre 2012 L'idée serait peut être avant, de remettre les description à 0 avec un script du genre -calque s *o Il faurait 1. Insérer le prototype avec tous les calques 2. Remplir tous avec * 3. Remplir chacun avec les vrais descriptions 4. Purger les calques inutilisés... J'essaie ça Karmélie
Karmelie Posté(e) le 13 novembre 2012 Auteur Posté(e) le 13 novembre 2012 Merci Bryce, J'essai ça et je reviens plus tard (décalage horraire oblige)... Karmélie
bryce Posté(e) le 13 novembre 2012 Posté(e) le 13 novembre 2012 En script, l'idée d'Eric est de créer un calque "bidon" avec une description, avant de remettre toutes les descriptions à 0.Ainsi on est sûr que le message de confirmation pour la modification de la description va s'afficher, et on peut le prévoir dans le script.Il suffit ensuite de purger ce calque inutile, puis de renseigner les descriptions des calques, en sachant qu'il n'y aura plus de demande de confirmation qui ferait dérailler le script.Exemple: ; On crée un calque bidon _-layer _n "calquebidon" ; on change sa description _d calque bidon "calquebidon" ; puis on vide les descriptions de tous les calques _d * ; on répond à la demande de confirmation, et on termine la commande. _y ; On purge le calque bidon. _-purge _la "calquebidon" _n ; On renseigne les bonnes descriptions des calques. _-layer _d description du calque 0 "0" _d description du calque A "calque A" _d description du calque B "calque B" _d description du calque C "calque C" ;fin Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Karmelie Posté(e) le 13 novembre 2012 Auteur Posté(e) le 13 novembre 2012 En script, l'idée d'Eric ..... J'étais déjà arrivée à quelque chose de semblable, mais la gestion des "spécialités" me semblait assez compliquée. Pas besoin de chercher plus loin que le LSP du post #9 :D Merci Bryce et Patrick_35 (ça semble si facile...)Un seul fichier DWT avec tous les calques et leur description, un petit bouton (le même pour tous) et tout le monde est heureux. Je songe même à le mettre au démarrage... Merci à tous, Karmélie
cactus_ben Posté(e) le 7 février 2013 Posté(e) le 7 février 2013 Bonjour, J'aime beaucoup le lisp inscrit par bryce au post #2. Ma question: Y aurait-il un moyen pour attribuer un chemin affin que le lisp retrouve automatiquement le fichier txt auquel il se rapporte sans ouvrir une boite de dialogue? cela me serait tres utile merci!
bryce Posté(e) le 7 février 2013 Posté(e) le 7 février 2013 Bonjour, On peut bien sûr fixer le chemin du fichier directement dans le programme : (defun c:LAYDESC ( / sep f l flst i lay descr ) ; Caractère de séparation entre le nom de calque et la description dans le fichier texte: (setq sep ";") ; Emplacement du fichier contenant les descriptions (attention à bien doubler les \ !) (setq f "C:\\temp\\descriptions.txt") (vl-load-com) (setq flst '() ) (if (setq f (open f "r")) (progn (while (setq l (read-line f)) (setq flst (cons l flst)) ) (close f) (setq flst (reverse flst)) ) ) (if flst (foreach l flst (setq i (vl-string-search sep l) lay (substr l 1 i) descr (substr l (+ i 2))) (if (setq lay (tblobjname "LAYER" lay)) (progn (setq lay (vlax-ename->vla-object lay)) (vla-put-description lay descr) (princ (strcat "\nDescription du calque " (vla-get-name lay) " modifiée.")) ) ) );foreach ) (princ) ) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
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