lgx9612
发表于 2014-7-17 22:25:32
lgx9612 发表于 2014-7-17 20:32 static/image/common/back.gif
在这个图中不能得出正确包容盒子我只是在你的代码中加了一句
(command "rectang" (apply 'mapcar (con ...
知道了,不好意思,可以了,我打开捕捉点,关掉就可以了.
lgx9612
发表于 2014-7-17 23:15:05
lgx9612 发表于 2014-7-17 22:25 static/image/common/back.gif
知道了,不好意思,可以了,我打开捕捉点,关掉就可以了.
受益非浅,谢谢Gu_xl!!;;;经典,费点工夫理解
(SETQlst
(mapcar '(lambda (a b)
(vlax-curve-getClosestPointToProjection curve a b t))
(list p1 p2 p3 p4)
'((1.0 0 0) (0 -1.0 0) (-1.0 0 0) (0 1.0 0))
)
)
;;;按我的思路如果罗嗦成下面这样,我就很容易理解了。
(setq p1 (vlax-curve-getClosestPointToProjection curve p1 (list 1.0 0 0) t))
(setq p2 (vlax-curve-getClosestPointToProjection curve p2 (list 0 -1.0 0) t))
(setq p3 (vlax-curve-getClosestPointToProjection curve p3 (list -1.0 0 0) t))
(setq p4 (vlax-curve-getClosestPointToProjection curve p4 (list 0 1.0 0) t))
(SETQlst (list p1 p2 p3 p4))
(vla-GetBoundingBox obj 'p1 'p3);;确保这个函数能够包容整个曲线,如果不能就会出错,
;;曾经我遇到几个spline线就是不能全包住,就是ug转图的,我现在不能确认是不像刚才一样打开
;;捕捉点了
Gu_xl
发表于 2014-7-18 10:31:02
lgx9612 发表于 2014-7-17 23:15 static/image/common/back.gif
受益非浅,谢谢Gu_xl!!
还有包不住的?从来没遇见过!请把样例发上来见识下!
ysq101
发表于 2014-7-18 11:01:15
风树 发表于 2014-7-16 20:40 static/image/common/back.gif
楼主,你是哪里人啊,写"程式"的人好少哦
广东人~~~哈哈
lgx9612
发表于 2014-7-18 12:21:35
ysq101 发表于 2014-7-18 11:01 static/image/common/back.gif
广东人~~~哈哈
这都猜到了!
lgx9612
发表于 2014-7-18 12:26:31
Gu_xl 发表于 2014-7-18 10:31 static/image/common/back.gif
还有包不住的?从来没遇见过!请把样例发上来见识下!
Gu_xl大师,你好!你是我学习的偶像.但就spline线来说我深有体会,我为我的程序,试验研究不下一个月,现有大师这几行代码就让我佩服的五体投地,但在我佩服之余,我一直回想我做过的试验,找我做的cad图档,终于让我找出来了并附上让大家研究研究.在大师面前讲我的心得和经验确实有点班门弄斧,献丑了.
spline的情况很多,autocad中画的spline线是通过点做的,故问题不是很大,但现在的3d做出的spline线就有通过点和通过控制点来画线;从阶次上又分1,2,3,4.....阶次的曲线,在曲线上的每个点都可调整它的曲率及刚度,所以用vla-getboundingbox做的包容盒子情况也很多,多数是可以把整个曲线包住,但有的只包到一点,更有的则整个在曲线之外.
裤裆有异味
发表于 2014-7-18 12:38:00
lgx9612 发表于 2014-7-18 12:26 static/image/common/back.gif
Gu_xl大师,你好!你是我学习的偶像.但就spline线来说我深有体会,我为我的程序,试验研究不下一个月,现 ...
recover
一下呢?行不行呢?
lgx9612
发表于 2014-7-18 12:55:19
裤裆有异味 发表于 2014-7-18 12:38 static/image/common/back.gif
recover
一下呢?行不行呢?
不行吧,修复只是修复错误,而这图本无错误.
Gu_xl
发表于 2014-7-18 13:16:33
lgx9612 发表于 2014-7-18 12:26 static/image/common/back.gif
Gu_xl大师,你好!你是我学习的偶像.但就spline线来说我深有体会,我为我的程序,试验研究不下一个月,现 ...
第一次遇见1阶SPLINE!14楼的代码已修正1阶SPLINE的错误问题!
lgx9612
发表于 2014-7-18 19:45:46
Gu_xl 发表于 2014-7-18 13:16 static/image/common/back.gif
第一次遇见1阶SPLINE!14楼的代码已修正1阶SPLINE的错误问题!
再一次让你失望了,你的代码还是不能正确执行,附gif。
(setq pl (vlax-safearray->list
(vlax-variant-value (vla-get-ControlPoints obj))
)
)
这句太经典了,我就是认识不多vl的高级函数.其实下面我的程序就是要表达你的这种效果.
[*](setq bbb (entget partname_lgx))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(while (/= (assoc 10bbb) nil)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq p1_lgx (assoc 10bbb))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq p_lgx (cons (cdr p1_lgx) p_lgx))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq bbb (vl-remove p1_lgx bbb))
[*]
这句(vlax-curve-getClosestPointToProjection curve a b t)也很经典,但不是很好,因为把曲线压缩投影到平面后就成一直线了,所以得出的结果不一定是最正确的。
以我之见,单从这一句好像还不是很能够完全包住曲线
(setq pl (vlax-safearray->list
(vlax-variant-value (vla-get-ControlPoints obj))
)
),
因为有的3d软件如果在一个最高的极点调整一曲率,使曲线的最高点高出的控制点就可能出错了.适当的加一此余量会更好.
学生愚见,请指教!