(grread)拖动多义线顶点动态显示面积
(defun c:KK ()
(setq loop T)
(setvar "osmode" 37)
(setq p0 (getpoint "pick point:"))
(setq e (ssget "c" (polar p0 (/ pi 4) 0.001)
(polar p0 (* 1.25 pi) 0.001)))
(setq ent (ssname e 0))
(setq obj (vlax-ename->vla-object ent)
pp (vlax-curve-getclosestpointto obj (trans p0 1 0))
n (fix (vlax-curve-getparamatpoint obj pp)))
(setq pts (variant-value (vla-get-coordinates obj)))
(while loop
(setq p (grread T))
(setq k (car p)
p (cadr p))
(if (= k 3)(setq loop nil))
(vlax-safearray-put-element pts (* n 2) (car p))
(vlax-safearray-put-element pts (1+ (* n 2))(cadr p))
(vla-put-coordinates obj pts)
(princ "\n")
(princ (vlax-curve-getarea obj))
)
)
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 【KAIXIN】的微博 非常好,感谢大大无私分享 好东西,看看学学 程序不错,因工作需要能否加个通过输入固定面积的数值,点击某个点后,程序能自动计算使该点沿指定方向移动一定距离,使得面积刚好为输入的面积数据。谢谢。
zbwei120 发表于 2011-12-10 15:23 static/image/common/back.gif
程序不错,因工作需要能否加个通过输入固定面积的数值,点击某个点后,程序能自动计算使该点沿指定方向移动 ...
楼主的程序仅仅是演示动态。如果要按你的要求,没必要动态。 那倒是,楼上能否帮个忙?谢谢。 真是厉害啊 本帖最后由 byghbcx 于 2011-12-12 11:34 编辑
17.(vlax-safearray-put-element pts(car p))
18.(vlax-safearray-put-element pts (1+ (* n 2))(cadr p))
程序有问题,没有针对二维多段线
(cond ((= (vla-get-objectname obj) "AcDbPolyline")
(vlax-safearray-put-element pts (* n 2) (car p))
(vlax-safearray-put-element pts (1+ (* n 2))(cadr p)))
((= (vla-get-objectname obj) "AcDb2dPolyline")
(vlax-safearray-put-element pts (* n 3) (car p))
(vlax-safearray-put-element pts (1+ (* n 3))(cadr p)))
)
byghbcx 发表于 2011-12-12 11:21 static/image/common/back.gif
17.(vlax-safearray-put-element pts(car p))
18.(vlax-safearray-put-element pts (1+ (* n 2))(cadr...
2006测试通过,GIF图片就是演习,不过谢谢朋友的提醒,我看看 面积值显示在屏幕上就好了 可以实现面积直接显示在屏幕上吗? wgl4810 发表于 2012-9-15 14:21 static/image/common/back.gif
可以实现面积直接显示在屏幕上吗?
动态显示在拖动点的边上。
页:
[1]
2