Invité Patrick Posté(e) le 4 novembre 2005 Posté(e) le 4 novembre 2005 C'est possible dans AutoCAD 2006 en utilisant l'option Fermer de la commande JOINDRE.
(gile) Posté(e) le 4 novembre 2005 Posté(e) le 4 novembre 2005 Pour ceux qui n'ont pas la chance de travailler avec AutoCAD 2006, mais qui voudraient quand même transformer des arcs en cercles, ce petit LISP : (defun c:a2c (/ arc accrobj_prec) (setq accrobj_prec (getvar "osmode")) (while (not (setq arc (car (entsel "\nSélectionnez un arc: ")))) ) (while (/= (cdr (assoc 0 (entget arc))) "ARC") (setq arc (car (entsel "\L'objet sélectionné n'est pas un arc. \nSélectionnez un arc:" ) ) ) ) (setvar "osmode" 0) (entmake (list '(0 . "CIRCLE") (cons 10 (trans (cdr (assoc 10 (entget arc))) 0 1)) (cons 40 (cdr (assoc 40 (entget arc)))) ) ) (entdel arc) (setvar "osmode" accrobj_prec) (princ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 4 novembre 2005 Posté(e) le 4 novembre 2005 Très bien (gile) mais 2 remarques. Tu veux utiliser (entmake) cela n'est que mieux! Mais pourquoi ne récupéres-tu pas des infos de ton arc?code 8 6 62 48 (si existant) et ....67? (pas justifié vu qu'il y a une selection auparavant qui te détermine l'espace courant) Quand tu utilises (entmake) tu n'as pas besoin de te préoccuper des variables.Ici l'usage de "osmode" n'a aucune importance. Comme tu pourrais ignorer "clayer" si tu utilises le code dxf (8 . "non du calque") Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 4 novembre 2005 Posté(e) le 4 novembre 2005 Merci Bonuscad pour tes remarques toujours pertinentes. J'ai effectivement oublié de retirer la gestion de "osmode" quand j'ai remplacé (command) par (entmake), de même, le (trans) qui n'a plus lieu d'être. Pour ce qui est des codes DXF, je n'y ai pas pensé parceque je n'utilise qu'une couleur et qu'un type de ligne par calque, pour le code 8 par contre, j'aurais dû y penser, je corrige : (defun c:a2c (/ val_dxf arc lst) (defun val_dxf (code ent) (cdr (assoc code (entget ent))) ) (while (not (and (setq arc (car (entsel "\nSélectionnez un arc: "))) (= (val_dxf 0 arc) "ARC") ) ) ) (setq lst (list '(0 . "CIRCLE") (cons 10 (val_dxf 10 arc)) (cons 40 (val_dxf 40 arc)) (cons 8 (val_dxf 8 arc)) (cons 210 (val_dxf 210 arc)) ) ) (foreach code '(6 62 48) (if (val_dxf code arc) (setq lst (reverse (cons (cons code (val_dxf code arc)) (reverse lst)) ) ) ) ) (command "_regen") (entmake lst) (entdel arc) (princ) ) [Edité le 5/11/2005 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 5 novembre 2005 Posté(e) le 5 novembre 2005 La commande inverse, pour transformer un cercle en arc : (defun c:c2a (/ val_dxf cercle cen ang1 ang2) (defun val_dxf (code ent) (cdr (assoc code (entget ent))) ) (while (not (and (setq cercle (car (entsel "\nSélectionnez un cercle: "))) (= (val_dxf 0 cercle) "CIRCLE") ) ) ) (setq cen (val_dxf 10 cercle)) (command "_ucs" "_n" "_ob" cercle) (initget 1) (setq ang1 (getangle '(0 0) "\nSpécifiez l'angle de départ de l'arc: ")) (initget 1) (setq ang2 (getangle '(0 0) "\nSpécifiez l'angle de fin de l'arc: ")) (command "_ucs" "_p") (setq lst (list '(0 . "ARC") (cons 10 cen) (cons 40 (val_dxf 40 cercle)) (cons 8 (val_dxf 8 cercle)) (cons 50 ang1) (cons 51 ang2) (cons 210 (val_dxf 210 cercle)) ) ) (foreach code '(6 62 48) (if (val_dxf code cercle) (setq lst (reverse (cons (cons code (val_dxf code cercle)) (reverse lst)) ) ) ) ) (command "_regen") (entmake lst) (entdel cercle) (princ) ) PS1 : J'ai ajouté un (command "_regen") avant le (entmake) dans les deux codes, pour créer une sorte de marque pour la commande "Annuler". En effet, la création d'objets avec (entmake) est comme "transparente" et la commande "Annuler" (U) lancée après ce type de routine annule le (entmake) et la commande précédente.Peut-être que quelqu'un connaît un moyen plus "élégant" ? PS2 : Pour que la routine fonctionne quelque soit le SCU courant et le SCO du cerle (en 3D), je n'ai trouvé d'autre moyen que de passer par un "SCU objet" temporaire. [Edité le 5/11/2005 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 5 novembre 2005 Posté(e) le 5 novembre 2005 En une seule commande, transformer les arcs en ellipse ou vice versa, fonctionne aussi avec les cercles (géométriquement parlant, le cercle n'est-il pas une ellipse particulière ?) voir ici. En fait pas encore de "vice-versa" (pas tout à fait au point), mais la possibilité de sélectionner l'arc avant ou après le lancement de la commande.[Edité le 6/11/2005 par (gile)]Çà y est le vice-versa ici [Edité le 10/11/2005 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Apoll0 Posté(e) le 7 octobre 2010 Posté(e) le 7 octobre 2010 bonjour, Dans le meme genre d'astuce , y a t'il un moyen de transformer un cercle directement en polyligne ?? merci
bonuscad Posté(e) le 7 octobre 2010 Posté(e) le 7 octobre 2010 bonjour, Voir ici Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Apoll0 Posté(e) le 11 octobre 2010 Posté(e) le 11 octobre 2010 je me débrouillais en coupant un morceau du cercle , mais je voulais connaitre un méthode plus rapide merci pour les conseils , ca fait toujours plaisir
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