本帖最后由 zdqwy19 于 2025-10-27 10:29 编辑
同样是spline文件,输入(vlax-invoke (setq obj (vlax-ename->vla-object(car(entsel)))) 'intersectwith obj acextendnone),有的返回结果,有的返回nil.
![]()
(defun tt(m / a b l u i p)
(setq a (vla-copy m))
(vla-getboundingbox a 'l 'u)
(setq b (mapcar '* '(0.5 0.5 0.5) (apply 'mapcar (cons '+ (mapcar 'vlax-safearray->list (list l u))))))
(vla-move a (vlax-3d-point b) (vlax-3d-point '(0.0 0.0 0.0)))
(setq b (mapcar '(lambda(x)(mapcar '+ x b))
(progn
(setq i (vlax-invoke a 'intersectwith a acextendnone))
(while (setq p (cons (list (car i) (cadr i) (caddr i)) p) i (cdddr i)))
p)))
(vla-delete a)
b)
(tt (vlax-ename->vla-object(car(entsel))))
可以使用了.
网友答: 曲线自己和自己的相交判断,相当于在判断曲线是否自相交。那肯定是自相交的有结果,不自相交的返回nil网友答: 有没有可能坐标太大??
同样是spline文件,输入(vlax-invoke (setq obj (vlax-ename->vla-object(car(entsel)))) 'intersectwith obj acextendnone),有的返回结果,有的返回nil.
(defun tt(m / a b l u i p)
(setq a (vla-copy m))
(vla-getboundingbox a 'l 'u)
(setq b (mapcar '* '(0.5 0.5 0.5) (apply 'mapcar (cons '+ (mapcar 'vlax-safearray->list (list l u))))))
(vla-move a (vlax-3d-point b) (vlax-3d-point '(0.0 0.0 0.0)))
(setq b (mapcar '(lambda(x)(mapcar '+ x b))
(progn
(setq i (vlax-invoke a 'intersectwith a acextendnone))
(while (setq p (cons (list (car i) (cadr i) (caddr i)) p) i (cdddr i)))
p)))
(vla-delete a)
b)
(tt (vlax-ename->vla-object(car(entsel))))
可以使用了.
网友答: 曲线自己和自己的相交判断,相当于在判断曲线是否自相交。那肯定是自相交的有结果,不自相交的返回nil网友答: 有没有可能坐标太大??