- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I have this lisp i want modify it for marking triangle with dimensions refer attached autocad file ......
(defun c:IPMark (/ bulge ptcp pct delta/2 ang chord radius tangent enpi pilst)
(setq en (car (entsel "Select Alignment: "))
lst (listpolb en)
pilst nil
)
(while (> (length lst) 1)
(if (not (zerop (setq bulge (cadar lst))))
(setq ptc (caar lst)
pct (caadr lst)
delta/2 (* (atan bulge) 2.0)
ang (- (angle ptc pct) delta/2)
chord (distance ptc pct)
radius (/ chord (* 2 (sin delta/2)))
tangent (* radius (tan delta/2))
pilst (cons (polar ptc ang tangent) pilst)
enpi (entmakex (list (cons 0 "POINT") (cons 10 (car pilst))))
)
)
(setq lst (cdr lst))
)
(print pilst)
(princ)
)
;; tan From std-lib ;
(defun tan (z / cosz)
(cond ((zerop (rem z pi)) 0.0)
((zerop (rem z (/ pi 2))) 1.7e308)
((zerop (setq cosz (cos z))) 1.7e308)
(t (/ (sin z) cosz))))
;; ;
;; listpolb by ymg ;
;; ;
;; Parameter: en, Entity Name or Object Name ;
;; ;
;; Returns: List of Points and Bulge in WCS ;
;; ;
;; Notes: On Closed Polyline the Last Vertex is Same as First) ;
;; ;
(defun listpolb (en / obj i p l)
(if (= (type en) 'ENAME)
(setq obj (vlax-ename->vla-object en))
(setq obj en en (vlax-vla-object->ename en))
)
(repeat (setq i (fix (vlax-curve-getEndParam en)))
(setq l (cons (list (vlax-curve-getPointAtParam en (setq i (1- i)))
(vla-getbulge obj i)
)
l
)
)
)
(if (= (vla-get-closed obj) :vlax-true)
(append l (list (car l)))
l
)
)
Solved! Go to Solution.