Requested a lisp for Multiple polyline dimension in ascending order with a given distance

Requested a lisp for Multiple polyline dimension in ascending order with a given distance

paliwal222
Advocate Advocate
305 Views
2 Replies
Message 1 of 3

Requested a lisp for Multiple polyline dimension in ascending order with a given distance

paliwal222
Advocate
Advocate

Dear all,
with respect

have is this possible to dimensioning a polyline
in ascending order with a given distance
if there is be a method in autocad please kindly give
me.

submitted the drawing

thanks very much

0 Likes
Accepted solutions (1)
306 Views
2 Replies
Replies (2)
Message 2 of 3

komondormrex
Mentor
Mentor
Accepted solution

hey there,

check the code below

 

(defun c:pline_dim (/ divider_saved pline_sset division_list division_count index dim_object _angle)
  (if (null divider) (setq divider 3.75))
  (setq divider_saved divider
  	pline_sset (ssget '((0 . "lwpolyline") (-4 . "<not") (-4 . "&") (70 . 1) (-4 . "not>")))
	divider (getreal (strcat "\nEnter divider <" (rtos divider_saved 2 2) ">: "))
  )
  (if (null divider) (setq divider divider_saved))
  (if pline_sset
    (foreach pline (vl-remove-if 'listp (mapcar 'cadr (ssnamex pline_sset)))
      	(setq division_list (mapcar '(lambda (vertex) (cons (vlax-curve-getdistatpoint pline vertex) (list vertex)))
				     (mapcar 'cdr (vl-remove-if-not '(lambda (group) (= 10 (car group))) (entget pline)))
			    )
	      division_count (fix (/ (getpropertyvalue pline "length") divider))
	      index 0
	)
        (repeat division_count
	  (setq division_list (append division_list (list (cons (setq _distance (* (setq index (1+ index)) divider))
								(list (vlax-curve-getpointatdist pline _distance))
							  )
					  	    )
			      )
 	  )
  	)
      	(setq division_list (vl-sort division_list '(lambda (point_1 point_2) (< (car point_1) (car point_2)))))
      	(mapcar '(lambda (point_1 point_2) (progn
					     	(setq dim_object (vla-adddimrotated (vla-get-block (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
									       (vlax-3d-point (cadr point_1))
									       (vlax-3d-point (cadr point_2))
									       (vlax-3d-point (polar (cadr point_2)
												     (cond
												       	(
													 (< (* 0.5 pi)
													    (setq _angle (angle '(0 0) (vlax-curve-getfirstderiv
																       		pline
																      		(vlax-curve-getparamatpoint pline (cadr point_1))
																   	)
														     	 )
													    )
													    (* 1.5 pi)
												    	 )
														(- _angle (* 0.5 pi))
													 )
													(
													 t
													 (+ _angle (* 0.5 pi))
													 )
													)
												     (* 2 (getvar 'dimtxt))
											      )
									       )  
									       _angle
							    )
					   	)
					     	(vla-put-textoverride dim_object (rtos (car point_2) 2 2))
					     	(vla-put-textrotation dim_object (cond
										   (
										    	(< (* 0.5 pi) _angle (* 1.5 pi))
										    		(+ pi _angle)
										    )
										   (
										    	t
										    		_angle
									    	   )
										   )
					   )
		     )
		 )
		 division_list
		(cdr division_list)
	)
     )
  )
  (princ)
)

 

Message 3 of 3

paliwal222
Advocate
Advocate
Dear sir
its work perfectly
thanks a lot
no wonder brings a thunder
lovely wonderful wow
thanks again with highly respect
0 Likes