来个实例
 - (defun c:tt(/ ipts lst myspace obj1 obj2)
- (setq myspace(vla-get-modelspace(vla-get-activedocument (vlax-get-acad-object))));取得模型空间对象,图纸空间是vla-get-paperspace
- (setq obj1 (vla-addcircle myspace (vlax-3d-point '(0 0 0)) 50);模型空间创建圆
- obj2 (vla-addcircle myspace (vlax-3d-point '(1 1 0)) 50)
- )
- (setq ipts(vla-intersectwith obj1 obj2 0));取得俩物体的交点变体
- (setq ipts(vlax-safearray->list(vlax-variant-value ipts));将vla交点变体转化成表的形式
- lst '())
- (if (>(length ipts) 3);分离多个交点
- (repeat(/(length ipts)3)
- (setq lst(cons(list(car ipts)(cadr ipts)(caddr ipts)) lst))
- (setq ipts(cdddr ipts))
- )
- )
- lst
- )
- (defun c:tt2(/ en1 en2 ipts lst obj1 obj2)
- (setq en1(entmakex(list '(0 . "circle")(cons 10 '(0 0 0))(cons 40 50)))
- en2(entmakex(list '(0 . "circle")(cons 10 '(1 1 0))(cons 40 50)))
- )
- (setq obj1(vlax-ename->vla-object en1)
- obj2(vlax-ename->vla-object en2)
- )
- (setq ipts(vla-intersectwith obj1 obj2 0));取得俩物体的交点变体
- (setq ipts(vlax-safearray->list(vlax-variant-value ipts));将vla交点变体转化成表的形式
- lst '())
- (if (>(length ipts) 3);分离多个交点
- (repeat(/(length ipts)3)
- (setq lst(cons(list(car ipts)(cadr ipts)(caddr ipts)) lst))
- (setq ipts(cdddr ipts))
- )
- )
- lst
- )
- (defun c:tt3(/ en1 en2 ipts lst obj1 obj2)
- (command "circle" "non" '(0 0 0) "non" "50")
- (setq en1(entlast))
- (command "circle" "non" '(1 1 0) "non" "50")
- (setq en2(entlast))
- (setq obj1(vlax-ename->vla-object en1)
- obj2(vlax-ename->vla-object en2)
- )
- (setq ipts(vla-intersectwith obj1 obj2 0));取得俩物体的交点变体
- (setq ipts(vlax-safearray->list(vlax-variant-value ipts));将vla交点变体转化成表的形式
- lst '())
- (if (>(length ipts) 3);分离多个交点
- (repeat(/(length ipts)3)
- (setq lst(cons(list(car ipts)(cadr ipts)(caddr ipts)) lst))
- (setq ipts(cdddr ipts))
- )
- )
- lst
- )
-
|