lecrabe Posté(e) le 28 octobre 2010 Posté(e) le 28 octobre 2010 Hello SVP je fais appel aux gentils developpeurs fous de ce forum ! :) Je desire une routine en VLisp ou en Lisp qui puisse automatiser un truc que je fais a la main mais a la longue c penible ! ----- CCTP / CDC ----- 1) Selection classique AutoCAD 2) Recuperation des hachures (par un filtre) pour les tranferer sur N calques "xxxxxx_HACH" Sous entendu, cela va permettre de transferer les hachures sur des calques "xxxxxx_HACH" dont le nom est base sur le calque d'origine de l'objet hachure ! :) Ainsi des dessins de Cadastre / VRD / POSPLU / Batiment / etc ou les gens ont "malheureusement" hachurer sur le MEME calque que l'objet hachure vont pouvoir apres passage de la routine avoir les hachures sur un calque SEPARE / DIFFERENT !! :D Je suis fou quand je vois des dessins avec les MURs et les HACHUREs sur le calque MUR ! :o idem avec les dessins de POSPLU et toutes les hachures sur le MEME calque que le type d'objet hachure ... Autre exemple avec les dessins et des calques du genre : POSPLU, EBC, ER, DPU, ZONE_ARCHEO, PPRI, PPRMT, etc ... :( SVP en sortie qq infos :- nombre de hachures selectionnees - nombre de hachures transferees - nombre de hachures NON transferees car hachures isolees ou autre cas particulier A votre bon coeur et en vous remerciant d'avance, Le Decapode Autodesk Expert Elite Team
Raph_38 Posté(e) le 28 octobre 2010 Posté(e) le 28 octobre 2010 C'est clair que ce lisp pourrait rendre service à plus d'un (moi y compris) ;) Raph. Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !
didier Posté(e) le 28 octobre 2010 Posté(e) le 28 octobre 2010 coucou comme d'habitude par manque de temps je livre un truc vite fait mais qui fonctionne(améliorable par exeple avec les couleurs) amicalement ((setq jeuhach (ssget "x" (list (cons 0 "HATCH")))) (setq n 0) (repeat (sslength jeuhach) (setq listent (entget (ssname jeuhach n)) calent (cdr(assoc 8 (entget (ssname jeuhach n)))) listent (subst (cons 8 (strcat calent "_Hach")) (cons 8 calent) listent) ) (entmod listent) (setq n (+ 1 n)) ) [Edité le 28/10/2010 par didier] Éternel débutant... Mon site perso : Programmer dans AutoCAD
lecrabe Posté(e) le 29 octobre 2010 Auteur Posté(e) le 29 octobre 2010 Hello Didier :) Desole ca marche pas ! :o Sniff, Sniff, Le Decapode Autodesk Expert Elite Team
didier Posté(e) le 29 octobre 2010 Posté(e) le 29 octobre 2010 coucou tu m'en vois fort marri !sans plus d'explication de ta part je ne saurai pas où est le dysfonctionnement as-tu un message particulier ?passe moi un fichier exemple si tu le peux, tu auras mon mail par MP si tu ne l'as pas déjà. chez moi, dans un fichier simplepas de souci, je n'aurais pas publié sinon. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
lecrabe Posté(e) le 29 octobre 2010 Auteur Posté(e) le 29 octobre 2010 Hello Didier Voici le resultat du copier/coller !Je tape une parenthese fermante "a la main" car elle semble manquer !et j'ai une erreur ... Commande: ((setq jeuhach (ssget "x" (list (cons 0 "HATCH"))))(_> (setq n 0)(_> (repeat (sslength jeuhach)((_> (setq listent (entget (ssname jeuhach n))(((_> calent (cdr(assoc 8 (entget (ssname jeuhach n))))(((_> listent (subst (cons 8 (strcat calent "_Hach")) (cons 8 calent) listent)(((_> )((_> (entmod listent)((_> (setq n (+ 1 n))((_> )(_>(_> ); erreur: type d'argument incorrect: lselsetp nil Le Decapode Autodesk Expert Elite Team
pascal19 Posté(e) le 29 octobre 2010 Posté(e) le 29 octobre 2010 Bonjour dans ma routine de nettoyage de plans j'utilise cette routine pour passer toutes les hachures en couleur 254: (defun modifh2 () (vl-load-com) (setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) ) (vlax-for bl a (vlax-for ent bl (if (= (vla-get-objectname ent) "AcDbHatch") (vla-put-Color ent 254) ) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport ) ) il me semble ça pourait t'aidera+
didier Posté(e) le 29 octobre 2010 Posté(e) le 29 octobre 2010 Coucou après relecture je te donne çà : (setq jeuhach (ssget "x" (list (cons 0 "HATCH"))) n 0) (repeat (sslength jeuhach) (setq listent (entget (ssname jeuhach n)) calent (cdr (assoc 8 (entget (ssname jeuhach n)))) listent (subst (cons 8 (strcat calent "_Hach")) (cons 8 calent) listent) ) (entmod listent) (setq n (+ 1 n)) ) amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
lecrabe Posté(e) le 30 octobre 2010 Auteur Posté(e) le 30 octobre 2010 Hello Merci Didier neanmoins ton bout de programme est "un peu insuffisant" pour moi ! :P Un petit UP pour reclamer SVP un petit programme un peu plus complet !? :) Par exemple il serait bien que les calques crees (nommes "xxxxxx_HACH") reprennent les proprietes du calque d'origine "xxxxxx" et aussi que l'on passe par une selection classique ... Merci d'avance, Le Decapode Autodesk Expert Elite Team
didier Posté(e) le 1 novembre 2010 Posté(e) le 1 novembre 2010 Coucou c'est bien parce que c'est un jour férié, hein !je blaguej'ai rajouté une ligne qui devrait aller dans ton sens... (setq jeuhach (ssget (list (cons 0 "HATCH"))) n 0) (repeat (sslength jeuhach) (setq listent (entget (ssname jeuhach n)) calent (cdr (assoc 8 (entget (ssname jeuhach n)))) coucal (cdr (assoc 62 (tblsearch "layer" calent))) listent (subst (cons 8 (strcat calent "_Hach")) (cons 8 calent) listent) ) (entmod listent) (command "_layer" "_co" (itoa coucal) (strcat calent "_hach") "") (setq n (+ 1 n)) ) amicalement [Edité le 1/11/2010 par didier] Éternel débutant... Mon site perso : Programmer dans AutoCAD
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