Aller au contenu

arc et scu


Patrick05

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

coucou,

 

effectivement, je ne trouve pas la parade,

la seule solution que j'ai vue, mais qui est lourde !!!

 

dans le scu particulier

Copier avec point de base 0,0,0 ton arc

dans un fichier nouveau le coller point de base 0,0,0

(donc l'arc arrive dans le SCG du nouveau fichier )

le changer de courbure

le copier, point de base 0,0,0

dans le fichier initial, le coller point de base 0,0,0

voili, voilou...

 

 

amicalement

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité