le_chti Posté(e) le 18 avril 2007 Posté(e) le 18 avril 2007 salut a tous,Je cherche a eploder(decomposer) ma selection aui comprend une esction de piece hachurée.Les hachures ne sont reconnues aont un autre logiciel que si elles sont decomposés. Je voudrais le faire en lsp car j'ai beaucoup de fichier à traiter... Merci d'avance pour votre aide
(gile) Posté(e) le 18 avril 2007 Posté(e) le 18 avril 2007 Salut, Vite fait, pour exploser toutes les hachures du dessin. Enlever l'espace entre (defun c:expl_hatch (/ ss hac) (if (setq ss (ssget "_X" '((0 . "HATCH") (-4 . "[color=#FF0000]")) ) ) (repeat (setq n (sslength ss)) (setq hac (ssname ss (setq n (1- n)))) (command "_explode" hac "") ) ) (princ) ) [Edité le 18/4/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
le_chti Posté(e) le 19 avril 2007 Auteur Posté(e) le 19 avril 2007 merci pour ton aide gile. J'essai ca tout a l'heure:)
le_chti Posté(e) le 23 avril 2007 Auteur Posté(e) le 23 avril 2007 salut,J'ai un souci: je n'arrive pas à faire ceci:Je voudrais que ce lisp, qui explode les hachures, ouvre une serie de fichier nommé:fichier_01 à fichier_50 et explode les hachures. Puis ferme chaque fichier et enregistre sous le meme nom.Il ne doit pas y avoir grand chose à modifier mais je ne sais comment faire.Merci d'avance:)
(gile) Posté(e) le 23 avril 2007 Posté(e) le 23 avril 2007 Il ne doit pas y avoir grand chose à modifier mais je ne sais comment faire. En effet, en LISP on ne peut le faire.Une routine LISP ne fonctionne que dans le dessin dans lequel elle a été lancée. Il faut passer par un SCRIPT qui ouvre chaque dessin, lance le LISP (qui doit être chargé dans chaque dessin), enregistre et ferme le dessin. Tramber avait donné une méthode pour écrire des scripts avec Excel et sa fonction "concatenation", fais une recherche. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
le_chti Posté(e) le 23 avril 2007 Auteur Posté(e) le 23 avril 2007 Ok merci pour ta reponseJe me sert beaucoup de ton lisp. vraiment nikel:)C'est sur celui ci aue j'amerai exploder les hachures. sur chque section.Peux tu m'indiquer ce que je dois modifier pour exploder les hachures?Merci. ;) (defun c:Wbloc-Coupe (/ epais obj alt0 alt1 nb n cnt file echo osmo coupe hach)(if (zerop (getvar "DWGTITLED"))(alert"Le dessin doit être enregistré avant de lancer la commande.")(if (and (setq epais (getdist "\nSpécifiez le pas entre chaque coupe: "))(setq alt0 (caddr(getpoint"\nSpécifiez un point sur le premier plan de coupe: ")))(setq alt1 (caddr(getpoint"\nSpécifiez un point sur le dernier plan de coupe: ")))(setq obj (car (entsel "\nSélectionnez le solide: ")))(= (cdr (assoc 0 (entget obj))) "3DSOLID")(if (< 0 epais)(setq nb (/ (abs (- alt0 alt1)) epais))(setq nb 0))(if (= (fix nb) nb)(setq nb (fix nb))(setq nb (1+ (fix nb))))(or (< alt0 alt1) (setq epais (- epais)))(setq cnt 1)(setq n 0)(setq file (strcat (getvar "dwgprefix")(vl-string-right-trim ".dwg" (getvar "dwgname"))"_Coupe_")))(progn(setq echo (getvar "CMDECHO"))(setvar "CMDECHO" 0)(setq osmo (getvar "OSMODE"))(setvar "OSMODE" 0)(while (findfile (strcat file (itoa cnt) ".dwg"))(setq cnt (1+ cnt)))(if (< 0 nb)(repeat nb(command "_section"obj"""XY"(list 0.0 0.0 (+ alt0 (* n epais))))(setq coupe (entlast))(command "_move"coupe""(list 0.0 0.0 (+ alt0 (* n epais)))'(0.0 0.0 0.0))(command "_bhatch" "_s" coupe "" "_p" "_u" "0" "0.02" "_n" "")(setq hach (entlast))(command "_wblock"(strcat file (itoa cnt) ".dwg")""'(0.0 0.0 0.0)coupehach"")(setq cnt (1+ cnt)n (1+ n))))(command "_section" obj "" "XY" (list 0.0 0.0 alt1))(setq coupe (entlast))(command "_move"coupe""(list 0.0 0.0 alt1)'(0.0 0.0 0.0))(command "_bhatch" "_s" coupe "" "_p" "_u" "0" "0.02" "_n" "")(setq hach (entlast))(command "_wblock"(strcat file (itoa cnt) ".dwg")""'(0.0 0.0 0.0)coupehach"")(setvar "CMDECHO" echo)(setvar "OSMODE" osmo))))(princ))
(gile) Posté(e) le 23 avril 2007 Posté(e) le 23 avril 2007 J'ai modifier le LISP pour que les hachures soient décomposées avant de faire le bloc (pas testé) (defun c:Wbloc-Coupe (/ epais obj alt0 alt1 nb n cnt file echo osmo coupe hach ent ss) (if (zerop (getvar "DWGTITLED")) (alert "Le dessin doit être enregistré avant de lancer la commande." ) (if (and (setq epais (getdist "\nSpécifiez le pas entre chaque coupe: ")) (setq alt0 (caddr (getpoint "\nSpécifiez un point sur le premier plan de coupe: " ) ) ) (setq alt1 (caddr (getpoint "\nSpécifiez un point sur le dernier plan de coupe: " ) ) ) (setq obj (car (entsel "\nSélectionnez le solide: "))) (= (cdr (assoc 0 (entget obj))) "3DSOLID") (if ( (setq nb (/ (abs (- alt0 alt1)) epais)) (setq nb 0) ) (if (= (fix nb) nb) (setq nb (fix nb)) (setq nb (1+ (fix nb))) ) (or ( (setq cnt 1) (setq n 0) (setq file (strcat (getvar "dwgprefix") (vl-string-right-trim ".dwg" (getvar "dwgname")) "_Coupe_" ) ) ) (progn (setq echo (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setq osmo (getvar "OSMODE")) (setvar "OSMODE" 0) (while (findfile (strcat file (itoa cnt) ".dwg")) (setq cnt (1+ cnt)) ) (if ( (repeat nb (command "_section" obj "" "XY" (list 0.0 0.0 (+ alt0 (* n epais))) ) (setq coupe (entlast) ss (ssadd) ) (ssadd coupe ss) (command "_move" coupe "" (list 0.0 0.0 (+ alt0 (* n epais))) '(0.0 0.0 0.0) ) (command "_bhatch" "_s" coupe "" "_p" "_u" "0" "0.02" "_n" "") (setq hach (entlast)) (command "_explode" coupe "") (command "_explode" hach "") (setq ent (entnext coupe)) (while ent (ssadd ent ss) (setq ent (entnext ent)) ) (command "_wblock" (strcat file (itoa cnt) ".dwg") "" '(0.0 0.0 0.0) ss "" ) (setq cnt (1+ cnt) n (1+ n) ) ) ) (command "_section" obj "" "XY" (list 0.0 0.0 alt1)) (setq coupe (entlast) ss (ssadd) ) (ssadd coupe ss) (command "_move" coupe "" (list 0.0 0.0 alt1) '(0.0 0.0 0.0) ) (command "_bhatch" "_s" coupe "" "_p" "_u" "0" "0.02" "_n" "") (setq hach (entlast)) (command "_explode" coupe "") (command "_explode" hach "") (setq ent (entnext coupe)) (while ent (ssadd ent ss) (setq ent (entnext ent)) ) (command "_wblock" (strcat file (itoa cnt) ".dwg") "" '(0.0 0.0 0.0) ss "" ) (setvar "CMDECHO" echo) (setvar "OSMODE" osmo) ) ) ) (princ) ) [Edité le 24/4/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
le_chti Posté(e) le 24 avril 2007 Auteur Posté(e) le 24 avril 2007 merci gile pour ton aide ;) ca explode nikel par contre quand je une des coupes sous corel draw, il n'y a pas le contour des coupes.( il n'y a que les hachures). Je suis obligé de réouvrir chaque fichier, faire un ctrl+a (_ai_selall) et exploder le tout.Sais tu pourquoi et comment corrigé cela sur le lsp? Merci bien a toi.:)
(gile) Posté(e) le 24 avril 2007 Posté(e) le 24 avril 2007 Salut, Ce doit être Crel Draw qui ne reconnaît pas les "régions" générées par la commande COUPE. J'ai modifié le code ci-dessus pour décomposer celles-ci avnt de faire le wbloc. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
le_chti Posté(e) le 26 avril 2007 Auteur Posté(e) le 26 avril 2007 Merci gile ca marche nikel.un grand merci pour ton aide. ;)
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