 - ;;;使用反应器
- ;将
- (command "pline" d a ""
- "text" b tt "90" (rtos c 2 aa))
- ;;;修改为如下:
- (progn
- (command "pline" d a "")
- (setq enpline (entlast))
- (command "text" b tt "90" (rtos c 2 aa))
- (setq enText (entlast))
- ;;;添加反应器
- (vlr-pers (VLR-Object-Reactor (list (vlax-ename->vla-object enText)) (list (cdr (assoc 5 (entget enpline)))) '((:VLR-modified . text-Change))))
- )
- ;;;回调函数
- (defun text-Change (text-Object Reactor-Object Parameter-list / hand enpline)
- (setq Hand (vlr-data Reactor-Object))
- (setq enpline (handent (car hand))
- objPline (vlax-ename->vla-object enpline))
- (setq pt (cdr (assoc 10 (entget (setq entext (vlax-vla-object->ename text-Object)))))
- Rot (cdr (assoc 50 (entget entext)))
- pend (vlax-curve-getEndPoint enpline)
- )
- ;;;根据text的坐标计算pline端点坐标
- (cond ((equal rot 0 0.0001)
- (setq pt1 (polar pt pi (/ tt 2.0))
- pt1 (list (car pt1) (cadr pend))
- )
- )
- ((equal rot (/ pi 2) 0.0001)
- (setq pt1 (polar pt (/ pi 2) (/ tt 2.0 -1))
- pt1 (list (car pend) (cadr pt1))
- )
- )
- )
- ;;;修改pline 端点坐标
- (vla-put-Coordinate objPline (vlax-curve-getEndParam objPline)
- (vlax-safearray-fill
- (vlax-make-safearray vlax-vbdouble '(0 . 1))
- pt1
-
- )
-
- )
- )
|