回复 nameld001 的帖子
没有容错处理
 - (defun c:tt(/ ss en1 en2 s1 s2 s3 endent)
- (if (and
- (setq en1 (car (entsel "\n第一个多段线:")))
- (setq en2 (car (entsel "\n第二个多段线:")))
- )
- (progn
- (command "undo" "be")
- (setq s1 (vla-get-area (vlax-ename->vla-object en1))
- s2 (vla-get-area (vlax-ename->vla-object en2))
- )
- (setq endent (entlast))
- (command "region" en1 en2 "")
- (setq ss (ssadd))
- (while (setq endent (entnext endent))
- (ssadd endent ss)
- )
- (setq endent (entlast))
- (command "intersect" ss "")
- (if (not (equal endent (entlast)))
- (progn
- (setq s3 (vla-get-area (vlax-ename->vla-object (entlast))))
- (princ (strcat "\n交集占第一个多段线" (rtos (* 100 (/ s3 s1)) 2 2) "%"))
- (princ (strcat "\n交集占第二个多段线" (rtos (* 100 (/ s3 s2)) 2 2) "%"))
- )
- )
- (command "undo" "e")
- (command "u")
- )
- )
- (princ)
- )
|