清风明月名字 发表于 2013-6-25 19:10 
有可能是啊!但短期无法证明,只有等用多了看是不是会出问题。等于这个代码使用时我要设为不捕捉
以下代码不用考虑捕捉和ucs
 - (defun c:tt (/ L1 L2 P1 P2 A1 D1 P3 P4 A2 D2 PL1 PL2 PTS)
- (while(and
- (setq l1 (car(entsel "\n选择直线1:")))
- (= "LINE" (cdr (assoc 0 (setq l1 (entget l1)))))
- (setq l2 (car(entsel "\n选择直线2:")))
- (= "LINE" (cdr (assoc 0 (setq l2 (entget l2)))))
- )
- (setq p1 (cdr (assoc 10 l1))
- p2 (cdr (assoc 11 l1))
- a1 (angle p1 p2)
- d1 (* 0.1 (distance p1 p2))
- p3 (cdr (assoc 10 l2))
- p4 (cdr (assoc 11 l2))
- a2 (angle p3 p4)
- d2 (* 0.1 (distance p3 p4))
- pl1 (list p1)
- pl2 (list p3)
- )
- (repeat 9
- (setq pl1 (cons (setq p1 (polar p1 a1 d1)) pl1)
- pl2 (cons (setq p3 (polar p3 a2 d2)) pl2)
- )
- )
- (setq pl1 (cons p2 pl1)
- pl2 (cons p4 pl2)
- )
- (if (inters (car pl1) (car pl2) (last pl1) (last pl2))
- (setq pl2 (reverse pl2))
- )
- (setq pts (mapcar 'list pl1 pl2))
- (mapcar
- '(lambda (x)
- (entmake
- (list
- '(0 . "line")
- (cons 10 (car x))
- (cons 11 (cadr x))
- )
- )
- )
- pts
- )
- )
- (princ)
- )
|