This's Object-reactor test.
when Circle's radius or line's endpoint changed, I want the line's startpoint chang too. but in this lisp file , only Circle radius change can modifi line startpoint.
Need help!
(defun c:test (/ CEN CIRCLE CLA-LST ENDPOINT LINE RAD)
(if (setq cen (getpoint "\nCenters:"))
(if (setq rad (getdist cen "\nRadius:"))
(if (setq
circle (vla-addcircle *ModelSpace* (vlax-3d-point cen) rad)
)
(setq cla-lst (cons circle cla-lst))
)
)
)
(if (setq endpoint (getpoint cen "\nLine EndPoint:"))
(if (setq line (vla-addline
*ModelSpace*
(vlax-3d-point cen)
(vlax-3d-point endpoint)
)
)
(setq cla-lst (cons line cla-lst))
)
)
(if cla-lst
(vlr-object-reactor
cla-lst
cla-lst
'((:vlr-modified . *object-reactor*))
)
)
)
(defun *object-reactor*
(obj reactor part-list / CEN CIRCLE LINE P10 P11 RAD)
(foreach syb (vlr-data reactor)
(if (and (eq 'VLA-OBJECT (type syb))
(vlax-write-enabled-p syb) ; test if object can be modified
(vlax-read-enabled-p obj) ; test if object can be read
)
(if (vlax-property-available-p syb 'centers)
(progn
(setq cen (vlax-safearray->list
(vlax-variant-value (vla-get-center syb))
)
)
(setq rad (vla-get-radius syb))
(setq line (car (vlr-data reactor)))
(setq p11 (vlax-safearray->list
(vlax-variant-value (vla-get-endpoint line))
)
)
(setq p10 (polar cen (angle cen p11) rad))
(vla-put-startpoint line (vlax-3d-point p10))
)
(progn
(setq circle (cadr (vlr-data reactor)))
(setq cen (vlax-safearray->list
(vlax-variant-value (vla-get-center circle))
)
)
(setq rad (vla-get-radius circle))
(setq p11 (vlax-safearray->list
(vlax-variant-value (vla-get-endpoint syb))
)
)
(setq p10 (polar cen (angle cen p11) rad))
(vla-put-startpoint syb (vlax-3d-point p10))
)
)
)
)
)