在CAD2004下测试是OK的。。。就不多说了。 (defun C:Test () (princ "\n选择曲线") (setq eTest (car (entsel))) (setq objTest (vlax-ename->vla-object eTest)) (or eTest (alert "未选中eTest")) (princ "\n选择相交曲线") (if (setq ss (ssget)) (progn (setq i -1) (while (< (setq i (1+ i)) (sslength ss)) (setq ename (ssname ss i)) (setq ptList (EF:Curve-inters eTest ename 0)) (setq ptList (mapcar '(lambda (e) (princ "\n交点: ") (princ e) (princ "\n最近点: ") (princ (vlax-curve-getClosestPointTo objTest e)) (princ "距离(交点): ") (princ (vlax-curve-getDistAtPoint objTest e ) ) (princ "距离(最近点): ") (princ (vlax-curve-getDistAtPoint objTest (vlax-curve-getClosestPointTo objTest e) ) ) ) ptList ) ) ) ) ) (princ) ) 测试CAD2008情况: 一、初始状态: 交点: (1.76562e+006 -1.36126e+006 0.0) 最近点: (1.76562e+006 -1.36126e+006 0.0)距离(交点): 312780.0距离(最近点): 312780.0 交点: (1.7519e+006 -1.34938e+006 0.0) 最近点: (1.7519e+006 -1.34938e+006 0.0)距离(交点): nil距离(最近点): nil 二、以矩形的左下角点为基点,将line和矩形移到0,0,0点: 交点: (13724.2 0.0 0.0) 最近点: (13724.2 0.0 0.0)距离(交点): 312780.0距离(最近点): 312780.0 交点: (0.0 11873.8 0.0) 最近点: (2.91038e-011 11873.8 0.0)距离(交点): 294632.0距离(最近点): nil 三、在初始图形状态下,移动LINE之后: 交点: (1.79347e+006 -1.36126e+006 0.0) 最近点: (1.79347e+006 -1.36126e+006 0.0)距离(交点): 326504.0距离(最近点): 326504.0 交点: (1.7519e+006 -1.32529e+006 0.0) 最近点: (1.7519e+006 -1.32529e+006 0.0)距离(交点): 271534.0距离(最近点): 271534.0 |