polyline angles

polyline angles

jerzy.bajor
Contributor Contributor
295 Views
2 Replies
Message 1 of 3

polyline angles

jerzy.bajor
Contributor
Contributor

I am looking for a procedure that will print out the values ​​of the deviation angles of individual components of a polyline in relation to the previous segment?

jerzybajor_0-1698739069635.png

 

0 Likes
296 Views
2 Replies
Replies (2)
Message 2 of 3

komondormrex
Mentor
Mentor

check this

 

 

(defun c:mark_segments_angle ( / pline_sset param repeat_count vector_1 vector_2 alpha)
	(if (setq pline_sset (ssget '((0 . "lwpolyline"))))
		(foreach pline (vl-remove-if 'listp (mapcar 'cadr (ssnamex pline_sset)))
			(setq param 0
				  repeat_count (fix (vlax-curve-getendparam pline))
			)
			(repeat (1- repeat_count)
					(setq vector_1 (mapcar '* '(-1 -1) (vlax-curve-getfirstderiv pline param))
						  vector_2 (vlax-curve-getfirstderiv pline (setq param (1+ param)))
						  alpha (- (angle '(0 0) vector_1) (angle '(0 0) vector_2))
					)
					(vla-adddim3pointangular (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
					   	 					 (vlax-3d-point (vlax-curve-getpointatparam pline param))
					     					 (vlax-3d-point (vlax-curve-getpointatparam pline (- param 0.1)))
					     					 (vlax-3d-point (vlax-curve-getpointatparam pline (+ param 0.1)))
					     					 (vlax-3d-point (polar (vlax-curve-getpointatparam pline param)
						 										   (+ (angle '(0 0) vector_2) (abs (* 0.5 alpha)))
						 										   (* 5 (getvar 'dimasz))
						 						 			)
						 					 )
					)
;					(print (angtos alpha 1 6))
			)
		)
	)
	(princ)
)

 

 

0 Likes
Message 3 of 3

jerzy.bajor
Contributor
Contributor

Thank you for your help, but I have already done my procedure.

(defun c:qaz ( / vl-elem lstP lstD pA pB dane liczP pkt pkti pktk pktT offTmp)
  (setq ss (ssget "+.:E:S" '((0 . "LWPOLYLINE,POLYLINE"))))
  (if (/= nil ss)
    (progn
      (setq vl-elem (vlax-ename->vla-object (ssname ss 0)))
      (if (> (vlax-curve-getEndParam vl-elem) 1.0)
	(progn
	  (setq lstP (list (vlax-curve-getPointAtParam vl-elem 0))
		lstD (list)
		liczP 1)
	  (repeat (fix (vlax-curve-getEndParam vl-elem))
	    (setq pA (last lstP)
		  pB (vlax-curve-getPointAtParam vl-elem liczP)
		  lstP (append lstP (list PB))
		  lstD (append lstD (list (distance pA pB)))
		  liczP (1+ liczP))
	    )
	  (setq lstD (nth 0 (vl-sort lstD '<)))
	  (vla-offset vl-elem (* 0.001 lstD))
	  (setq offTmp (vlax-ename->vla-object (entlast))
		dane (list (vlax-curve-getPointAtParam vl-elem 0))		
		liczP 1)
	  (repeat (1- (fix (vlax-curve-getEndParam vl-elem)))
	    (setq pkt (vlax-curve-getPointAtParam vl-elem liczP)
		  pktk (vlax-curve-getPointAtParam vl-elem (1+ liczP))
		  pkti (last dane)
		  pktT (vlax-curve-getPointAtParam offTmp liczP))
	    (vla-AddDim3PointAngular(vla-get-modelspace (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-3d-point pkt) (vlax-3d-point pkti) (vlax-3d-point pktk) (vlax-3d-point pktT))
	    (setq dane (append dane (list (vla-get-Measurement (vlax-ename->vla-object (entlast)))))
		  dane (append dane (list pkt))
		  liczP (1+ liczP))
	    (vla-erase (vlax-ename->vla-object (entlast)))
	    )
	  (vla-erase offTmp)
	  dane)
	)
      )
    )
  )
0 Likes