Matt666 Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 Salut !Ca faisait (un peu) longtemps ! Bon voilà, j'ai un problème... J'ai des hachures dont j'aimerais retrouver les contours. J'ai vu plusieurs routines qui le faisaient mais je n'ai pas possiblité de lire le VLISP. Je sais que je pourrais créer une routine en lisp pour retrouver les contours en fonction des coordonnées des codes dxf 10 et 42... Mais je n'ai pas le temps !!! Les boules... Soit dit en passant, saloperie de code 42 !!! Donc voilà : Si qqn veut bien, je lui passe le fichier en question, et il me le rend avec les contours... Ce qui veut dire aussi, d'avoir une routine permettant de retrouver les contours des hachures !! Le problème c'est que c'est assez urgent.... Voilà, merci d'avance, et a bientot !Matt. "Chacun compte pour un, et nul ne compte pour plus d'un."
didier Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 je me sers de ça,je ne sais plus d'où ça vient, mais j'ai laissé l'auteur...amicalement;;; HATCHB.LSP ver 2.0;;; Recreates hatch boundary by selecting a hatch;;; Boundary is created in current layer/color/linetype in WCS;;; By Jimmy Bergmark;;; Copyright © 1997-2003 JTB World, All Rights Reserved;;; Website: www.jtbworld.com;;; E-mail: info@jtbworld.com;;; 2000-02-12 - First release;;; 2000-03-27 - Counterclockwise arc's and ellipse's fixed;;; Objects created joined to lwpolyline if possible;;; Error-handling, undo of command;;; Can handle PLINETYPE = 0,1,2;;; 2000-03-30 - Integrating hatchb and hatchb14;;; Selection of many hatches;;; Splines supported if closed.;;; 2001-04-02 - Fixed bug with entmake of line with no Z for r14;;; 2001-07-31 - Removed an irritating semicolon to enable polylines to be created.;;; 2001-10-04 - Changed mail and homepage so it's easy to find when new versions comes up.;;; 2003-02-06 - Minor fix;;; 2003-02-17 - Area returned if no islands is found since it's not consistant;;; 2003-05-19 - Fix to take PEDITACCEPT variable used in AutoCAD 2004 into account;;; Tested on AutoCAD r14, 2000, 2000i, 2002, 2004;;; should be working on older versions too. (defun c:hb () (c:hatchb)) ; this line can be commented out if there is an existing command called hb(defun c:hatchb (/ es blay ed1 ed2 loops1 bptf partet noe plist ic bul nr ang1 ang2 obj *ModelSpace* *PaperSpace*space cw errexit undox olderr oldcmdecho ss1 lastent en1 en2 ss lwplist->variantArray 3dPoint->2dPoint A2k ent i ss2knot-list controlpoint-list kn cn pos xv bot area hst)(setq A2k (>= (substr (getvar "ACADVER") 1 2) "15"))(if A2k(progn(defun list->variantArray (ptsList / arraySpace sArray)(setq arraySpace(vlax-make-safearrayvlax-vbdouble(cons 0 (- (length ptsList) 1))))(setq sArray (vlax-safearray-fill arraySpace ptsList))(vlax-make-variant sArray))(defun areaOfObject (en / curve area)(if en(if A2k(progn(setq curve (vlax-ename->vla-object en))(if(vl-catch-all-error-p(setqarea(vl-catch-all-apply 'vlax-curve-getArea (list curve))))nilarea))(progn(command "._area" "_O" en)(getvar "area")))))))(if A2k(defun 3dPoint->2dPoint (3dpt)(list (float (car 3dpt)) (float (cadr 3dpt))))) (defun errexit (s)(princ "Error: ")(princ s)(restore)) (defun undox ()(command "._ucs" "_p")(command "._undo" "_E")(setvar "cmdecho" oldcmdecho)(setq *error* olderr)(princ)) (setq olderr *error*restore undox*error* errexit)(setq oldcmdecho (getvar "cmdecho"))(setvar "cmdecho" 0)(command "._UNDO" "_BE")(if A2k (progn(vl-load-com)(setq *ModelSpace* (vla-get-ModelSpace(vla-get-ActiveDocument (vlax-get-acad-object)))*PaperSpace* (vla-get-PaperSpace(vla-get-ActiveDocument (vlax-get-acad-object)))))) ; For testing purpose; (setq A2k nil) (if (/= (setq ss2 (ssget '((0 . "HATCH")))) nil)(progn(setq i 0)(setq area 0)(setq bMoreLoops nil)(while (setq ent (ssname ss2 i))(setq ed1 (entget ent))(if (not (equal (assoc 210 ed1) '(210 0.0 0.0 1.0))) (princ "Hatch not in WCS!"))(setq xv (cdr (assoc 210 ed1)))(command "._ucs" "_w")(setq loops1 (cdr (assoc 91 ed1))) ; number of boundary paths (loops)(if (and A2k (= (strcase (cdr (assoc 410 ed1))) "MODEL"))(setq space *ModelSpace*)(setq space *PaperSpace*))(repeat loops1(setq ed1 (member (assoc 92 ed1) ed1))(setq bptf (cdr (car ed1))) ; boundary path type flag(setq ic (cdr (assoc 73 ed1))) ; is closed(setq noe (cdr (assoc 93 ed1))) ; number of edges(setq bot (cdr (assoc 92 ed1))) ; boundary type(setq hst (cdr (assoc 75 ed1))) ; hatch style(setq ed1 (member (assoc 72 ed1) ed1))(setq bul (cdr (car ed1))) ; bulge(setq plist nil)(setq blist nil)(cond((> (boole 1 bptf 2) 0) ; polyline(repeat noe(setq ed1 (member (assoc 10 (cdr ed1)) ed1))(setq plist (append plist (list (cdr (assoc 10 ed1)))))(setq blist (append blist(if (> bul 0)(list (cdr (assoc 42 ed1)))nil))))(if A2k (progn(setq polypoints(apply 'append(mapcar '3dPoint->2dPoint plist)))(setq VLADataPts (list->variantArray polypoints))(setq obj (vla-addLightweightPolyline space VLADataPts))(setq nr 0)(repeat (length blist)(if (/= (nth nr blist) 0)(vla-setBulge obj nr (nth nr blist)))(setq nr (1+ nr)))(if (= ic 1)(vla-put-closed obj T)))(progn(if (= ic 1)(entmake '((0 . "POLYLINE") (66 . 1) (70 . 1)))(entmake '((0 . "POLYLINE") (66 . 1))))(setq nr 0)(repeat (length plist)(if (= bul 0)(entmake (list (cons 0 "VERTEX")(cons 10 (nth nr plist))))(entmake (list (cons 0 "VERTEX")(cons 10 (nth nr plist))(cons 42 (nth nr blist)))))(setq nr (1+ nr)))(entmake '((0 . "SEQEND"))))))(t ; not polyline(setq lastent (entlast))(setq lwp T)(repeat noe(setq et (cdr (assoc 72 ed1)))(cond((= et 1) ; line(setq ed1 (member (assoc 10 (cdr ed1)) ed1))(if A2k(vla-AddLinespace(vlax-3d-point (cdr (assoc 10 ed1)))(vlax-3d-point (cdr (assoc 11 ed1))))(entmake(list(cons 0 "LINE")(list 10 (cadr (assoc 10 ed1)) (caddr (assoc 10 ed1)) 0)(list 11 (cadr (assoc 11 ed1)) (caddr (assoc 11 ed1)) 0); (cons 210 xv))))(setq ed1 (cddr ed1)))((= et 2) ; circular arc(setq ed1 (member (assoc 10 (cdr ed1)) ed1))(setq ang1 (cdr (assoc 50 ed1)))(setq ang2 (cdr (assoc 51 ed1)))(setq cw (cdr (assoc 73 ed1)))(if (equal ang2 6.28319 0.00001)(progn(if A2k(vla-AddCirclespace(vlax-3d-point (cdr (assoc 10 ed1)))(cdr (assoc 40 ed1)))(entmake (list (cons 0 "CIRCLE")(assoc 10 ed1)(assoc 40 ed1))))(setq lwp nil))(if A2k(vla-AddArcspace(vlax-3d-point (cdr (assoc 10 ed1)))(cdr (assoc 40 ed1))(if (= cw 0)(- 0 ang2)ang1)(if (= cw 0)(- 0 ang1)ang2))(entmake (list (cons 0 "ARC")(assoc 10 ed1)(assoc 40 ed1)(cons 50(if (= cw 0)(- 0 ang2)ang1))(cons 51(if (= cw 0)(- 0 ang1)ang2))))))(setq ed1 (cddddr ed1)))((= et 3) ; elliptic arc(setq ed1 (member (assoc 10 (cdr ed1)) ed1))(setq ang1 (cdr (assoc 50 ed1)))(setq ang2 (cdr (assoc 51 ed1)))(setq cw (cdr (assoc 73 ed1)))(if A2k (progn(setq obj (vla-AddEllipsespace(vlax-3d-point (cdr (assoc 10 ed1)))(vlax-3d-point (cdr (assoc 11 ed1)))(cdr (assoc 40 ed1))))(vla-put-startangle obj (if (= cw 0) (- 0 ang2) ang1))(vla-put-endangle obj (if (= cw 0) (- 0 ang1) ang2)))(princ "Elliptic arc not supported!"))(setq lwp nil))((= et 4) ; spline(setq ed1 (member (assoc 94 (cdr ed1)) ed1))(setq knot-list nil)(setq controlpoint-list nil)(setq kn (cdr (assoc 95 ed1)))(setq cn (cdr (assoc 96 ed1)))(setq pos (vl-position (assoc 40 ed1) ed1))(repeat kn(setq knot-list (cons (cons 40 (cdr (nth pos ed1))) knot-list))(setq pos (1+ pos)))(setq pos (vl-position (assoc 10 ed1) ed1))(repeat cn(setq controlpoint-list (cons (cons 10 (cdr (nth pos ed1))) controlpoint-list))(setq pos (1+ pos)))(setq knot-list (reverse knot-list))(setq controlpoint-list (reverse controlpoint-list))(entmake (append(list '(0 . "SPLINE"))(list (cons 100 "AcDbEntity"))(list (cons 100 "AcDbSpline"))(list (cons 70 (+ 1 8 (* 2 (cdr (assoc 74 ed1))) (* 4 (cdr (assoc 73 ed1))))))(list (cons 71 (cdr (assoc 94 ed1))))(list (cons 72 kn))(list (cons 73 cn))knot-listcontrolpoint-list))(setq ed1 (member (assoc 10 ed1) ed1))(setq lwp nil))) ; end cond) ; end repeat noe(if lwp (progn(setq en1 (entnext lastent))(setq ss (ssadd))(ssadd en1 ss)(while (setq en2 (entnext en1))(ssadd en2 ss)(setq en1 en2))(if (= (getvar "peditaccept") 1)(command "_.pedit" (entlast) "_J" ss "" "")(command "_.pedit" (entlast) "_Y" "_J" ss "" "")))) ) ; end t) ; end cond; Tries to get the area on islands but it's not clear how to know if an island is filled or not; and if it should be substracted or added to the total area.; (if (or (= bot 0) (= (boole 1 bot 1) 1)) (setq area (+ area (areaOfObject (entlast))))); (if (and (/= hst 1) (/= bot 0) (= (boole 1 bot 1) 0)) (setq area (- area (areaOfObject (entlast))))); (princ "") (princ bot) (princ "") (princ hst) (princ ""); (princ (areaOfObject (entlast)))) ; end repeat loops1(if (= loops1 1) (setq area (+ area (areaOfObject (entlast)))) (setq bMoreLoops T))(setq i (1+ i)))))(if (and area (not bMoreLoops)) (progn(princ "Total Area = ")(princ area)))(restore)(princ)) Éternel débutant... Mon site perso : Programmer dans AutoCAD
didier Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 re coucou soit dit en passant,avec les dernières version d'AutoCad, depuis la 2006il est possible de recréer les contours depuis la ligne de commande des hachures... re amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Matt666 Posté(e) le 22 janvier 2008 Auteur Posté(e) le 22 janvier 2008 Salut Didier... Pardon je n'ai pas été assez clair...J'ai vu plusieurs routines qui le faisaient mais je n'ai pas la possiblité de lire le VLISP.Parce que je n'ai pas autocad, mais BricsCAD, un clone d'autoCAD qui ne lit pas le VLISP... EDIT : En fait c'est bon, un collègue m'a fait le travail ! Excusez du temps perdu... Merci encore Didier ! PS : Ce serait une bon challenge, ça !!! :) Re-PS : Saloperie de bulge :P A bientot.Matt. [Edité le 22/1/2008 par Matt666] "Chacun compte pour un, et nul ne compte pour plus d'un."
speedy Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 Bonjour Matt666 tu postes ton fichier et je te le fais dans la foulée.... Michel a
Matt666 Posté(e) le 22 janvier 2008 Auteur Posté(e) le 22 janvier 2008 Salut Speedy ! Merci, mais c'est réglé... A bientot !Matt. "Chacun compte pour un, et nul ne compte pour plus d'un."
(gile) Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 Merci, mais c'est réglé... Je poste quand même :P Un LISP vite fait (tu changeras le vl-member-if) en l'état il ne fonctionne que pour les polylignes (pas d'ellipses, arcs elliptiques ou splines) lais larche avec les boucles multiples (ilots). EDIT : réparé un bug dans le nombre de sommets en cas de boucles multiples. EDIT2 : la polyligne est crée sur le calque courant. ;;; TRUNC-IF Retourne la liste tronquée à partir de la première occurrence qui ;;; retourne T à la fonction (complémentaire de celle retournée par VL-MEMBER-IF) (defun trunc-if (fun lst) (if (and lst (not ((eval fun) (car lst))) ) (cons (car lst) (trunc-if fun (cdr lst))) ) ) ;; H2B Reconstitue le contour (polyligne) de la hachure (defun c:h2b (/ getloops hach elst loops) (defun getloops (elst / loops) (while (setq elst (vl-member-if '(lambda (x) (= (car x) 93)) elst)) (setq loops (cons (cons (car elst) (trunc-if '(lambda (x) (= (car x) 97)) (setq elst (cdr elst)) ) ) loops ) ) ) ) (and (setq hach (car (entsel))) (setq elst (entget hach)) (= (cdr (assoc 0 elst)) "HATCH") (= (logand 2 (cdr (assoc 92 elst))) 2) (setq loops (getloops elst)) (while loops (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 (cdaar loops)) '(70 . 1) (cons 38 (cadddr (assoc 10 elst))) (assoc 210 elst) ) (cdar loops) ) ) (setq loops (cdr loops)) ) ) (princ) ) [Edité le 22/1/2008 par (gile)] [Edité le 22/1/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Matt666 Posté(e) le 22 janvier 2008 Auteur Posté(e) le 22 janvier 2008 Salut Gile !! Merci pour cette routine... Toujours aussi rapide ! par contre elle ne fonctionne pas sur BricsCAD... Pas de message d'erreur, bref un problème, mais impossible de dire lequel... J'ai vu que tu touches codes 92 93 et 97, mais dans le entget d'une hachure sous BricsCAD, on ne voit pas beaucoup de ces codes... Pour info voici le contenu d'un entget pour une hachure sous bricsCAD...((-1 . ) (0 . "HATCH") (5 . "5E") (67 . 0) (8 . "0") (62 . 256) (6 . "BYLAYER") (370 . -1) (48 . 1.00000) (60 . 0) (10 0.000000 0.000000 0.000000) (210 0.000000 0.000000 1.00000) (2 . "_USER") (70 . 0) (71 . 0) (91 . 1) (92 . 7) (72 . 0) (73 . 1) (93 . 4) (10 -477.671 -144.068 0.000000) (10 -213.165 -144.068 0.000000) (10 -213.165 21.4616 0.000000) (10 -477.671 21.4616 0.000000) (97 . 0) (75 . 0) (76 . 0) (52 . 0.000000) (41 . 1.00000) (77 . 0) (78 . 1) (53 . 0.000000) (43 . 0.000000) (44 . 0.000000) (45 . 0.000000) (46 . 1.00000) (79 . 0) (47 . 0.00100000) (98 . 1) (10 -300.196 -31.4396 0.000000))Je suppose que ce n'est pas du tout la même chose ! Ne t'embête pas, j'essaierai de faire qqh avec ça... Tu m'as donné une astuce beaucoup plus simple pour y arriver.. A savoir utiliser les codes 10 et 42 pour compléter la définition d'une polyligne.. Merci ! A bientot.Matt. [Edité le 22/1/2008 par Matt666] "Chacun compte pour un, et nul ne compte pour plus d'un."
(gile) Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 J'ai vu que tu touches codes 92 93 et 97, mais dans le entget d'une hachure sous BricsCAD, on ne voit pas beaucoup de ces codes... Si, si, code 92 : Drapeau du type de chemin de contour (valeur binaire) je test s'il y a bien le 2 pour Polylignecode 93 : Nombre d'arrêtes dans ce chemin de contour je récupère cette valeur pour la passer au code 90 de la polyligne (nombre de sommets), de plus ce code (une entée par boucle) marque le début des codes 10 (et 42).code 97 : Nombre d'objets de contour source me sert parce qu'il est placé à la fin des codes 10 (et 42) pour chaque boucle. ((-1 . ) (0 . "HATCH") (5 . "5E") (67 . 0) (8 . "0") (62 . 256) (6 . "BYLAYER") (370 . -1) (48 . 1.00000) (60 . 0) (10 0.000000 0.000000 0.000000) (210 0.000000 0.000000 1.00000) (2 . "_USER") (70 . 0) (71 . 0) (91 . 1) [surligneur](92 . 7)[/surligneur] (72 . 0) (73 . 1) [surligneur](93 . 4)[/surligneur] (10 -477.671 -144.068 0.000000) (10 -213.165 -144.068 0.000000) (10 -213.165 21.4616 0.000000) (10 -477.671 21.4616 0.000000) [surligneur](97 . 0)[/surligneur] (75 . 0) (76 . 0) (52 . 0.000000) (41 . 1.00000) (77 . 0) (78 . 1) (53 . 0.000000) (43 . 0.000000) (44 . 0.000000) (45 . 0.000000) (46 . 1.00000) (79 . 0) (47 . 0.00100000) (98 . 1) (10 -300.196 -31.4396 0.000000)) Donc, je ne vois pas pourquoi ça ne marche pas... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 Bonsoir à toutes et tous, Sur AutoCAD 2008 full, pas de problème ! Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 Re, J'ai essayé avec ta liste, et j'ai trouvé d'où vient le problème : il n'y a pas de code 410 dans ta liste, je le supprime du LISP (où il est d'ailleurs inutile la polyligne sera créée dans l'espace courant, celui dan lequel est sélectionné la hachure). Je supprime aussi le code 8, il n'est pas forcément intéressant d'avoir le contour sur le même calque que la hachure. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Matt666 Posté(e) le 23 janvier 2008 Auteur Posté(e) le 23 janvier 2008 Salut ! Dément... Ca fonctionne !Merci Gile... Je vais juste changer un peu ta routine pour lui permettre une multi-sélection... Merci, et encore bravo pour cette rapidité, et cette concision dans ton code... Hallucinant ! PS : Salut Lili ! Alors, toujours pas trouvé ? ;) A bientot.Matt. "Chacun compte pour un, et nul ne compte pour plus d'un."
(gile) Posté(e) le 23 janvier 2008 Posté(e) le 23 janvier 2008 Salut, J'ai essayé de faire quelque chose qui fonctionne avec tous les types de contours (contenant des arcs, ellipses, splines), en l'état, ça fonctionne en 2D (plan XY du SCU parallèle à celui du SCG). J'ai fait une sous routine HatchBoundary pour pouvoir l'appeler depuis différents LISP et un exemple de fonction d'appel (H2B) qui fonctionne avec un jeu de sélection. EDIT : Réparé un bug. ;;; TRUNC-IF Retourne la liste tronquée à partir de la première occurrence qui ;;; retourne T à la fonction (complémentaire de celle retournée par VL-MEMBER-IF) (defun trunc-if (fun lst) (if (and lst (not ((eval fun) (car lst))) ) (cons (car lst) (trunc-if fun (cdr lst))) ) ) ;;; Ang;;; Retourne l'angle, à 2*k*pi près, compris entre 0 et 2*pi (defun ang (if (and ( ang (ang ) ) ;; HatchBoundary ;; Reconstitue le contour de la hachure ;; ;; Argument ;; ent : le nom d'entité (ename) de la hachure (defun HatchBoundary (ent / getloops elst elv nor loops slst vtx cl alst ang1 ang2) (setq elst (entget ent) elv (cadddr (assoc 10 elst)) nor (assoc 210 elst) ) (while (setq elst (vl-member-if '(lambda (x) (= (car x) 72)) elst)) (setq slst (trunc-if '(lambda (x) (= (car x) 72)) (cdr elst))) (cond (( (setq vtx (cdr (assoc 93 slst)) cl (cdr (assoc 73 slst)) ) (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 (cond (vtx) (2) ) ) (cons 70 (cond (cl) (0) ) ) (cons 38 elv) nor ) (if cl (trunc-if '(lambda (x) (= (car x) 97)) (vl-member-if '(lambda (x) (= (car x) 10)) slst) ) (list (assoc 10 slst) (cons 10 (cdr (assoc 11 slst)))) ) ) ) ) ((= (cdar elst) 2) ; arc (if (= (cdr (assoc 73 slst)) 1) (setq ang1 (cdr (assoc 50 slst)) ang2 (cdr (assoc 51 slst)) ) (setq alst (list (- (* pi 2) (cdr (assoc 50 slst))) (- (* pi 2) (cdr (assoc 51 slst))) ) ang1 (apply 'min alst) ang2 (apply 'max alst) ) ) (entmake (list '(0 . "ARC") (assoc 10 elst) (assoc 40 elst) (cons 50 ang1) (cons 51 ang2) nor ) ) ) ((= (cdar elst) 3) ; ellipse (if (= (cdr (assoc 73 slst)) 1) (setq ang1 (cdr (assoc 50 slst)) ang2 (cdr (assoc 51 slst)) ) (setq alst (list (- (* pi 2) (cdr (assoc 50 slst))) (- (* pi 2) (cdr (assoc 51 slst))) ) ang1 (apply 'min alst) ang2 (apply 'max alst) ) ) (foreach a '(ang1 ang2) (or (equal (eval a) 0 1e-9) (equal (eval a) pi 1e-9) (equal (eval a) (* 2 pi) 1e-9) (and (set a (ang (if ( (set a (+ pi (atan (/ (sin (eval a)) (* (cos (eval a)) (cdr (assoc 40 slst))) ) ) ) ) (set a (atan (/ (sin (eval a)) (* (cos (eval a)) (cdr (assoc 40 slst))) ) ) ) ) ) ) ) (entmake (list '(0 . "ELLIPSE") '(100 . "AcDbEntity") '(100 . "AcDbEllipse") (assoc 10 slst) (assoc 11 slst) (assoc 40 slst) (cons 41 ang1) (cons 42 ang2) nor ) ) ) ((= (cdar elst) 4) ; spline (entmake (append (list '(0 . "SPLINE") '(100 . "AcDbEntity") '(100 . "AcDbSpline") (cons 71 (cdr (assoc 94 slst))) (cons 70 (+ 8 (cdr (assoc 73 slst)) (cdr (assoc 74 slst)))) (cons 72 (cdr (assoc 95 slst))) (cons 73 (cdr (assoc 96 slst))) ) (trunc-if '(lambda (x) (= (car x) 97)) (vl-member-if '(lambda (x) (= (car x) 40)) slst) ) ) ) ) ) (setq elst (cdr elst)) ) ) ;; Fonction d'appel (commande) (defun c:h2b (/ ss n) (if (setq ss (ssget '((0 . "HATCH")))) (repeat (setq n (sslength ss)) (HatchBoundary (ssname ss (setq n (1- n)))) ) ) (princ) ) [Edité le 23/1/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Matt666 Posté(e) le 23 janvier 2008 Auteur Posté(e) le 23 janvier 2008 Salut ! Gile, tu es un fou.... Et les fous sont les meilleurs !! Bravo... C'est -comme toujours- impressionnant ! (en plus pas de VLISP !!! Dément...) Je l'intègre direct dans mes outils préférés ! A bientot.Matt. "Chacun compte pour un, et nul ne compte pour plus d'un."
(gile) Posté(e) le 23 janvier 2008 Posté(e) le 23 janvier 2008 J'ai modifié le code, il y avait un bug avec les hachures contenant des ilots faits avec ellipses ou splines. J'avais mal interprété le code 92. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 23 janvier 2008 Posté(e) le 23 janvier 2008 Bonsoir à toutes et tous, Matt666 PS : Salut Lili ! Alors, toujours pas trouvé ? Je n'ai pas encore passé assez de temps sur le problème mais j'y pense et te remercie d'y penser toi aussi,.. (gile)Comme d'hab, terrible. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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