Patrick05 Posté(e) le 6 juin 2007 Posté(e) le 6 juin 2007 bonjour.quand je trace un arc dans le plan XY du scu général, je peux accentuer plus ou moins la courbure de cet arc, rayon, en gardant les deux points extrèmes.par contre si je place mon scu dans un plan quelconque et que j'essaie de faire la mème chose, ça ne fonctionne pas...les deux points extrèmes ne gardent pas leur position.merci.Patrick
didier Posté(e) le 6 juin 2007 Posté(e) le 6 juin 2007 coucou, effectivement, je ne trouve pas la parade,la seule solution que j'ai vue, mais qui est lourde !!! dans le scu particulierCopier avec point de base 0,0,0 ton arcdans un fichier nouveau le coller point de base 0,0,0(donc l'arc arrive dans le SCG du nouveau fichier )le changer de courburele copier, point de base 0,0,0dans le fichier initial, le coller point de base 0,0,0voili, voilou... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 6 juin 2007 Posté(e) le 6 juin 2007 Salut, Je n'ai pas ce problème avec AutoCAD 2007, mais j'ai essayé de faire un LISP qui ferait ce que tu demandes. (defun c:modifarc (/ erreur arc3pts arc elst cen rad p1 p3 scu gr lst) ;; retourne la liste des groupes DXF 10, 40, 50 et 51 de l'arc défini par 3 points (defun arc3pts (p1 p2 p3 / cen p4 p5) (if (setq cen (inters (setq p4 (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2)) p1 p2) ) (polar p4 (+ (angle p1 p2) (/ pi 2)) 1.0) (setq p5 (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2)) p2 p3) ) (polar p5 (+ (angle p2 p3) (/ pi 2)) 1.0) nil ) ) (append (list (cons 10 cen) (cons 40 (distance cen p1)) ) (if (minusp (sin (- (angle p1 p3) (angle p1 p2)))) (list (cons 50 (angle cen p3)) (cons 51 (angle cen p1))) (list (cons 50 (angle cen p1)) (cons 51 (angle cen p3))) ) ) ) ) ;; re-définition de *error* (defun erreur (msg) (if (= msg "Fonction annulée") (princ) (princ (strcat "\nErreur: " msg)) ) (and scu (command "_.ucs" "_p")) (setq *error* m:err m:err nil ) (princ) ) ;; fonction principale (setq m:err *error* *error* erreur ) (if (and (setq arc (car (entsel))) (= "ARC" (cdr (assoc 0 (setq elst (entget arc))))) ) (progn (setq cen (cdr (assoc 10 elst)) rad (cdr (assoc 40 elst)) p1 (polar cen (cdr (assoc 50 elst)) rad) p3 (polar cen (cdr (assoc 51 elst)) rad) ) (or (and (equal '(0 0 1) (trans '(0 0 1) arc 1) 1e-9) (equal 0.0 (caddr cen) 1e-9) ) (and (setq scu T) (command "_.ucs" "_ob" arc) ) ) (while (and (setq gr (grread T 4 0)) (/= (car gr) 3) ) (if (setq lst (arc3pts p1 (trans (cadr gr) 1 arc) p3)) (entmod (append (vl-remove-if '(lambda (x) (member x '(10 40 50 51))) elst ) lst ) ) ) ) (and scu (command "_.ucs" "_p")) ) ) (setq *error* m:err m:err nil ) (princ) ) [Edité le 7/6/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick05 Posté(e) le 7 juin 2007 Auteur Posté(e) le 7 juin 2007 bonjour.merci de vos réponses.amicalement,Patrick.
(gile) Posté(e) le 7 juin 2007 Posté(e) le 7 juin 2007 J'ai apporté 2 petites améliorations au LISP ci-dessus :- gestion des erreurs- modification du SCU courant uniquement si nécéssaire Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour 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