yzr2002626 发表于 2010-7-18 20:44:00

怎样实现TEXT与几何图形关联

请问班主,怎样实现那TEXT与图形关联,不是用那字段的功能,主要是标面积和长度<!--++ plugin_code qcomic begin--> <!--++ plugin_code qcomic end-->

Gu_xl 发表于 2010-7-22 12:33:00

使用反应器!

(defun c:test (/ *Acad* *AcDocument* *Model-Space* en obj obj1 obj2 hand1 hand2 Height area Len pt pt1)
(defun obj-Change (Object Reactor-Object Parameter-list / area Len data obj1 obj2)
    (setq area (strcat"面积:" (rtos (vla-get-area Object) 2))
Len (strcat "长度:" (rtos (vla-get-Length Object) 2))
)
    (setq data (vlr-data Reactor-Object))
    (setq obj1 (vlax-ename->vla-object(handent (car data)))
   obj2 (vlax-ename->vla-object(handent (cadr data)))
   )
    (vla-put-TextString obj1 area)
    (vla-put-TextString obj2 Len)
    )
(setq *Acad*    (vlax-get-acad-object)
      *AcDocument* (vla-get-activedocument *Acad*)
      *Model-Space* (vla-get-modelspace *AcDocument*)
)
(princ "\n选择多段线:")
(setq en (car (entsel)))
(setqobj (vlax-ename->vla-object en))
(setq area (rtos (vla-get-area obj) 2)
Len (rtos (vla-get-Length obj) 2)
)
(initget 7)
(setq pt (getpoint "\n选择注记位置:"))
(initget 7)
(setq Height (getreal "\n注记字高:"))
(setq pt1 (polar pt (/ pi 2) (* Height -1.2)))
(setq obj1 (vla-addtext *Model-Space* (strcat "面积:" area)(vlax-3d-point pt)Height))
(setq Hand1 (vla-get-Handle obj1))
(setq obj2 (vla-addtext *Model-Space* (strcat "长度:" Len)(vlax-3d-point pt1)Height))
(setq Hand2 (vla-get-Handle obj2))
(vlr-pers (VLR-Object-Reactor (list obj) (list Hand1 Hand2) '((:VLR-modified . obj-Change))))
(princ)
)

yzr2002626 发表于 2010-7-22 17:08:00

可以用,但是提个想法,关联时能框选多个,字高能记住上次输入的,最好是有默认的高度。面积能设小数位。那面积能根据单位设置,4舍5入。实际面积小数点位置前移6位

Gu_xl 发表于 2010-7-22 18:26:00

<p>只是给你提供个思路,剩下具体细节你可以根据自己需要进行定制啦!主要程序都有了,剩下的就很简单了。。。</p>

yzr2002626 发表于 2010-7-22 19:45:00

不晓得怎样搞,请帮忙搞下行不?

124350440 发表于 2010-8-15 11:00:00

<p>对于我们初学者太难了~</p>

124350440 发表于 2010-9-29 16:23:00

能否只标注保留3位小数的面积值啊,并且不需要标注文字“面积”,
页: [1]
查看完整版本: 怎样实现TEXT与几何图形关联