Bonjour,
Nous sommes à la recherche d’une information concernant l’un des outils sur Autocad 2015, il s’agit de la fonction NETTOYER.
Nous souhaitons savoir pourquoi cette commande ne marche pas sur les cercles ou polylignes contenant un ou des arcs de cercles ?
Quelle solutions proposez-vous pour résoudre ce problème?
Y-at-il une alternative pour nos dessins ?
Nous joignons à ce mail un dessin de démonstration de l’effet que nous souhaitons obtenir.
Cordialement
EC
Bonjour elena et bienvenu sur le forum,
LA commande nettoyer utilise (sauf erreur de ma part) une image blanche pour masquer les objets. Sur Autocad, les images ne peuvent avoir de contour en arc.
Tu peux facilement remplacer la commande nettoyer par une hachure pleine en couleur 255,255,255. Cela t'éviteras en plus certain bug dûs aux objets nettoyer.
Olivier
Merci Olivier pour votre réponse très rapide !
Je connaissais effectivement cette option qui est une bonne alternative mais idéalement j’aimerais continuer à utiliser la commande Nettoyer,
donc voici ma dernière question, y-a-t-il un moyen de transformer un cercle ou arc de cercle en vrai polyligne ?
Cela permettrait éventuellement d’utiliser ce cercle transformé avec la commande Nettoyer ?
Merci beaucoup pour vos réponse,
Ce système de forum est bien pratique !
Cordialement,
tu peux directement faire ton cercle ou ton arc de cercle avec une polyligne
Dsl j'avais pas lu la premier demande.... donc mon commentaire n'as aucune utilité !!!
Kevin Megel
Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.
Je suis un simple utilisateur, je ne travaille pas pour Autodesk
Bonjour Elena,
les objets nettoyer sont très strictes, ils refusent les entités particulières tels que "cercle, arc de cercle, spline".
Tu es obligé, comme tu l'as compris, de les transformer en polyligne.
Il existe des Lips qui feront le travail de transformation objet par objet.
Personnellement, je préfère le Lisp que j'ai et qui transforme n'importe quelle forme ou objet en entité "nettoyer".
Si tu le désires, je peux te le donner.
@+
Si tu as bien une version complète, il doit être possible de faire quelques chose en lisp.
Mais comme déjà dit je ne suis pas sûr que cela soit la meilleur idée au vu des bug sur les NETTOYER.
Olivier
Bonjour,
Pour des cercle ou des polyarc, on pourrait envisager un truc comme ceci pour continuer à utiliser des WIPEOUT.
Cela discretise en segment les courbes.
(defun def_bulg_pl (ls lb flag_closed / ls lb rad a l_new) (if (not (zerop flag_closed)) (setq ls (append ls (list (car ls))))) (while (cadr ls) (if (zerop (car lb)) (setq l_new (append l_new (list (car ls)))) (progn (setq rad (/ (distance (car ls) (cadr ls)) (sin (* 2.0 (atan (abs (car lb))))) 2.0) a (- (/ pi 2.0) (- pi (* 2.0 (atan (abs (car lb)))))) ) (if (< a 0.0) (setq a (- (* 2.0 pi) a))) (if (or (and (< (car lb) 0.0) (> (car lb) -1.0)) (> (car lb) 1.0)) (setq l_new (append l_new (reverse (cdr (reverse (bulge_pts (polar (car ls) (- (angle (car ls) (cadr ls)) a) rad) (car ls) (cadr ls) rad (car lb))))))) (setq l_new (append l_new (reverse (cdr (reverse (bulge_pts (polar (car ls) (+ (angle (car ls) (cadr ls)) a) rad) (car ls) (cadr ls) rad (car lb))))))) ) ) ) (setq ls (cdr ls) lb (cdr lb)) ) (append l_new (list (car ls))) ) (defun bulge_pts (pt_cen pt_begin pt_end rad sens / inc ang nm p1 p2 lst) (setq inc (angle pt_cen (if (< sens 0.0) pt_end pt_begin)) ang (+ (* 2.0 pi) (angle pt_cen (if (< sens 0.0) pt_begin pt_end))) nm (fix (/ (rem (- ang inc) (* 2.0 pi)) (/ (* pi 2.0) 36.0))) ) (repeat nm (setq p1 (polar pt_cen inc rad) inc (+ inc (/ (* pi 2.0) 36.0)) lst (append lst (list p1)) ) ) (setq p2 (polar pt_cen ang rad) lst (append lst (list p2)) ) (if (< sens 0.0) (reverse lst) lst) ) (defun c:wipe_polyarc ( / jspl nbr ent dxf_ent typent name_layer closed lst l_bulg e_next dxf_next oldlayer oldosm) (princ "\nChoix des polylignes ou cercle à nettoyer: ") (setq jspl (ssget '((0 . "*POLYLINE,CIRCLE") (-4 . "<NOT") (-4 . "&") (70 . 124) (-4 . "NOT>"))) nbr 0 ) (cond (jspl (setq oldlayer (getvar "clayer") oldosm (getvar "osmode")) (setvar "osmode" 0) (setvar "cmdecho" 0) (command "_.ucs" "_world") (repeat (sslength jspl) (setq typent (cdr (assoc 0 (setq dxf_ent (entget (setq ent (ssname jspl nbr)))))) name_layer (cdr (assoc 8 dxf_ent)) ) (cond ((eq typent "LWPOLYLINE") (setq closed (boole 1 (cdr (assoc 70 dxf_ent)) 1) lst (mapcar '(lambda (x) (trans x ent 1)) (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent))) l_bulg (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 42)) dxf_ent)) lst (def_bulg_pl lst l_bulg closed) ) ) ((eq typent "POLYLINE") (setq closed (boole 1 (cdr (assoc 70 dxf_ent)) 1) e_next (entnext ent) ) (while (= "VERTEX" (cdr (assoc 0 (setq dxf_next (entget e_next))))) (if (zerop (boole 1 223 (cdr (assoc 70 dxf_next)))) (setq lst (cons (trans (cdr (assoc 10 dxf_next)) ent 1) lst) l_bulg (cons (cdr (assoc 42 dxf_next)) l_bulg) ) ) (setq e_next (entnext e_next)) ) (setq lst (reverse lst) l_bulg (reverse l_bulg) lst (def_bulg_pl lst l_bulg closed) ) ) ((eq typent "CIRCLE") (setq lst (bulge_pts (trans (cdr (assoc 10 dxf_ent)) ent 1) (polar (trans (cdr (assoc 10 dxf_ent)) ent 1) 0.0 (cdr (assoc 40 dxf_ent))) (polar (trans (cdr (assoc 10 dxf_ent)) ent 1) (- (* 2.0 pi) (/ (* pi 2.0) 36.0)) (cdr (assoc 40 dxf_ent))) (cdr (assoc 40 dxf_ent)) 1 ) lst (append lst (list (car lst))) closed 1 ) ) ) (cond ((and lst (not (zerop closed))) (setvar "clayer" name_layer) (command "_.pline") (foreach n lst (command n)) (command "_close") (command "_.wipeout" "_polyline" (entlast) "_yes") ) ) (setq nbr (1+ nbr) lst nil l_bulg nil) ) (command "_.ucs" "_previous") (setvar "clayer" oldlayer) (setvar "osmode" oldosm) (setvar "cmdecho" 1) ) (T (princ "\nSélection vide")) ) (prin1) )
il ne manque plus que BraudPat, pour une belle brochette de pointure sur un sujet ! Et ben t'est bien entouré elena
Kevin Megel
Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.
Je suis un simple utilisateur, je ne travaille pas pour Autodesk
C'est bien le même lisp que Giles que je voulai mettre à disposition.
Attention toute fois, j'avais beaucoup de soucis avec ce lisp sur Autocad 2014.
@+
Hello
Pour une fois que braudpat ne dit rien !?
Cordialement, Patrice
Patrice BRAUD
ben pour une fois que tu dit rien , on remarque ton absence
Kevin Megel
Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.
Je suis un simple utilisateur, je ne travaille pas pour Autodesk
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.