本帖最后由 xyccf 于 2017-8-19 08:32 编辑
可惜,现在回答估计你也用不上了,想了想还是留给后来人吧^_^ - ;获得两个选择集的交集
- (defun ssinter (ss1 ss2)
- (vl-cmdf "_.select" ss1 "r" ss2 "")
- (setq ss (ssget "P"))
- (vl-cmdf "_.select" ss1 "r" ss "")
- (ssget "P")
- )
- ;线上测距 by xyccf
- (defun c:qds (/ pt1 pt2 ss1 ss2 ss obj dist)
- (setq pt1 (getpoint "选择曲线上一点: ")
- pt2 (getpoint pt1 "\n选择曲线另上一点: ")
- )
- (setq ss1 (ssget "c" pt1 pt1)
- ss2 (ssget "c" pt2 pt2)
- ss (ssinter ss1 ss2)
- )
- (if (or (< (sslength ss) 0) (> (sslength ss) 1)) (exit))
- (setq obj (vlax-ename->vla-object (ssname ss 0)))
- (setq dist (abs (- (vlax-curve-getDistAtPoint obj pt1) (vlax-curve-getDistAtPoint obj pt2))))
- (princ (strcat "\n曲线上两点距离为:" (rtos dist 2 4)))
- (princ)
- )
|