vla-intersectwith的bug(竟然没有交点)
本帖最后由 hai20110730 于 2018-1-2 17:10 编辑我在用下面的代码求交点,较长的那条多段线(基准对象)和较短的多线相交,但是没有求出交点来,vla-intersectwith的模式为acextendotherentity。我是在2018版上做的测试。哪位大神能给出原因。
(defun pdjd (pdjd_en1 pdjd_en2 mode / pdjd_jdvapdjd_d pdjd_i pdjd_lt
pdjd_ls)
(vl-load-com)
(setqpdjd_jdva (vlax-variant-value
(vla-intersectwith pdjd_en1 pdjd_en2 mode)
)
)
(if (not (minusp (vlax-safearray-get-u-bound pdjd_jdva 1)))
(setq pdjd_d (vlax-safearray->list pdjd_jdva))
)
(setq pdjd_i 0)
(setq pdjd_ls nil)
(repeat (/ (length pdjd_d) 3)
(setq pdjd_lt nil)
(setq pdjd_lt (cons (nth pdjd_i pdjd_d) pdjd_lt))
(setq pdjd_lt (cons (nth (+ pdjd_i 1) pdjd_d) pdjd_lt))
(setq pdjd_lt (cons (nth (+ pdjd_i 2) pdjd_d) pdjd_lt))
(setq pdjd_ls (cons (reverse pdjd_lt) pdjd_ls))
(setq pdjd_i (+ pdjd_i 3))
)
pdjd_ls
)
(defun C:TEST()
(pdjd (vlax-ename->vla-object (car(entsel"\n较长线")))
(vlax-ename->vla-object (car(entsel"\n较短线")))
acextendotherentity)
)
首先谢谢大家的回复,用2018版返回值为nil,2014版返回是成功的。这说明2018的内部的交点算法极有可能改变了,出现了bug。但是不是也可能是我的2018版系统变量设置有问题?有哪位大神能出来解答下吗?
本帖最后由 llsheng_73 于 2018-1-2 09:42 编辑
pengfei2010 发表于 2018-1-2 09:28
这种笔误不应该啊actexendotherentity在test中误为ctexendotherentity ,写程序最怕这种笔误
我也没发现他这个问题,直到运行出错才发现
_$ (C:TEST)
; 错误: ActiveX 服务器返回错误: 非选择性的参数。
然后才想到应该是mode写错了
其实这些模式一般都可以直接用数值,这样就很难拼写错误了
_$ acextendotherentity
2
llsheng_73 发表于 2018-1-2 08:41
actexendotherentity在test中误为ctexendotherentity,纠正后交点为((583845.0 3.44798e+006 0.0))
如果把模式改为acextendnone(两个对象都不延伸),acextendboth(两个对象都延伸),acextendthisentity(延伸基准对象)三种都能得到交点,唯独actexendotherentity不可以,但是我的算法里要求用这个模式。 ntwison 发表于 2018-1-1 23:31
是不是mode没给值?0-3?
mode的值为acextendnone(两个对象都不延伸),acextendboth(两个对象都延伸),acextendthisentity(延伸基准对象),actexendotherentity(延伸后一个对象),我在主程序C:TEST中用的是actexendotherentity模式,但是没有交点,但是实际上长的多段线的那个顶点是那条短多段线的交点。 是不是mode没给值?0-3? 本帖最后由 llsheng_73 于 2018-1-2 08:45 编辑
actexendotherentity在test中误为ctexendotherentity,纠正后交点为((583845.0 3.44798e+006 0.0))
这种笔误不应该啊actexendotherentity在test中误为ctexendotherentity ,写程序最怕这种笔误 pengfei2010 发表于 2018-1-2 09:28
这种笔误不应该啊actexendotherentity在test中误为ctexendotherentity ,写程序最怕这种笔误
这个是在lisp编辑器中是亮显的,我在明经的主题里手写的,写错了。 本帖最后由 hai20110730 于 2018-1-2 19:08 编辑
llsheng_73 发表于 2018-1-2 09:40
我也没发现他这个问题,直到运行出错才发现
_$ (C:TEST)
; 错误: ActiveX 服务器返回错误: 非选择性的 ...
主要想是容易理解的,所以都用英文了。我改成数字再试试。谢谢你的回复。 llsheng_73 发表于 2018-1-2 09:40
我也没发现他这个问题,直到运行出错才发现
_$ (C:TEST)
; 错误: ActiveX 服务器返回错误: 非选择性的 ...
我把上面代码从新发了下,测试结果交点返回值还是为nil
页:
[1]
2