Aller au contenu

connaitre rayon d'un arc dans une polyligne


PHILPHIL

Messages recommandés

hello

 

je ne sais pas si ca existe, soit en lisp sur le net, soit deja dans autocad

 

un petit programme qui permetrait de connaitre les rayons, voir diametre, des arc de cercle qui constitue une polyligne en passant dessus, ou en selectionnant l'arc

 

pour le moment pour connaitre , soit je met une cote, soit je decompose la polyligne

 

a+

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Une solution simple est de sélectionner la polyligne pour afficher les poignées.

 

Puis de placer le curseur de la souris dans une des poignées de l'arc de cercle (sans cliquer)

 

Et là le rayon s'affiche.

 

 

NB : La saisie dynamique doit être activée pour que cela fonctionne

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

Une solution simple est de sélectionner la polyligne pour afficher les poignées.

Puis de placer le curseur de la souris dans une des poignées de l'arc de cercle (sans cliquer)

Et là le rayon s'affiche.

Bien vue l’astuce Eric, ça me donnera peut être envie d’activer la saisie dynamique.. :rolleyes:

 

 

un petit programme qui permetrait de connaitre les rayons, voir diametre, des arc de cercle qui constitue une polyligne en passant dessus, ou en selectionnant l'arc

Sinon comme je n’ai pas souvent eu l’occasion d’utiliser grread et que le défi ne me semblait pas très compliqué, voici un code qui devrait répondre à la demande et qui renvoi le rayon.

Au passage j’ai très peu de mérite, j’ai pillé l’essentielle du code chez (gile) dans PolySegments téléchargeable sur cette page :

http://cadxp.com/index.php?/topic/14427-les-lisp-de-gile/

 

 

Le code principal

(defun c:rayon (/ gr ent pl par ray val)
 (vl-load-com)
 (prompt "Positionnez le pointeur sur les segments courbes des polylignes...") 
 (while (= 5 (car (setq gr (grread t 13 2))))

   (if	(and (setq ent (nentselp (cadr gr)))
     (setq pl (vlax-ename->vla-object (car ent)))
     (= (vla-get-ObjectName pl) "AcDbPolyline")
     (setq par (fix (vlax-curve-getParamAtPoint
		      pl
		      (trans (osnap (cadr ent) "_nea") 1 0)
		    )
	       )
     )
     (not (zerop (vla-getBulge pl par)))
)


     (progn

(redraw)
(HighlightSegment pl par)

(setq ray (cadr	(polyarc-data
		  (vla-getBulge pl par)
		  (vlax-curve-getPointAtParam pl par)
		  (vlax-curve-getPointAtParam pl (+ par 1))
		)
	  )
)

(cond ((equal ray val 1e-9))
      (T (print (setq val ray)))
)
     )
   )
 )

 (redraw)
 (princ)
)

 

 

 

Les routines associées puisés chez (gile)

;;================================================================;;

;;; Polyarc-data
;;; Retourne la liste des données d'un arc de polyligne (centre rayon angle).

(defun polyarc-data (bu p1 p2 / ang rad cen area cg)
 (setq	ang (* 2 (atan bu))
rad (/ (distance p1 p2)
       (* 2 (sin ang))
    )
cen (polar p1
	   (+ (angle p1 p2) (- (/ pi 2) ang))
	   rad
    )
 )
 (list cen (abs rad) ang)
)

;;================================================================;;

;; HighlightSegment
;; Met un segment de polyligne en surbrillance
;;
;; Arguments
;; pl : la polyligne (vla-object)
;; par : l'indice du segment

(defun HighlightSegment	(pl par / p1 p2 n lst)
 (and
   (setq p1 (vlax-curve-getPointAtParam pl par))
   (setq p1 (trans p1 0 1))
   (setq p2 (vlax-curve-getPointAtParam pl (+ par 1)))
   (setq p2 (trans p2 0 1))
   (if	(zerop (vla-getBulge pl par))
     (grvecs (list -255 p1 p2))
     (progn
(setq n 0)
(repeat	100
  (setq	lst (cons (trans (vlax-curve-getPointAtParam pl (+ n par)) 0 1)
		  lst
	    )
	n   (+ n 0.01)
  )
)
(grvecs
  (cons -255 (apply 'append (mapcar 'list lst (cdr lst))))
)
     )
   )
 )
)

;;================================================================;;

 

Bon test

A+

Apprendre => Prendre => Rendre

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é