本帖最后由 hai20110730 于 2018-1-2 17:10 编辑
我在用下面的代码求交点,较长的那条多段线(基准对象)和较短的多线相交,但是没有求出交点来,vla-intersectwith的模式为acextendotherentity。我是在2018版上做的测试。哪位大神能给出原因。
 - (defun pdjd (pdjd_en1 pdjd_en2 mode / pdjd_jdva pdjd_d pdjd_i pdjd_lt
- pdjd_ls)
- (vl-load-com)
- (setq pdjd_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版系统变量设置有问题?有哪位大神能出来解答下吗?
|