本帖最后由 lisperado 于 2019-10-20 16:05 编辑
为避免画四条线,干嘛不用瞬态?
注意:inters函数只合适2D平面,如果四个点3D不同高度将无法得到交叉点?所以修改以下lisp所画的交点都只限于平面: (x y 0.0)
 - (defun c:tt (/ pt1 pt2 pt3 pt4 pt5 xy)
- (defun xy (p)(mapcar '* '(1. 1.) p))
- (and (setq pt1 (getpoint "\nFirst line\n1st point.. "))
- (setq pt2 (getpoint "\n2nd point" pt1))
- (not (grdraw pt1 pt2 2 1))
- (setq pt3 (getpoint "\nSecond line\n1st point"))
- (setq pt4 (getpoint "\n2nd point" pt3))
- (not (grdraw pt3 pt4 2 1))
- ;;; (setq pt5 (inters pt1 pt2 pt3 pt4 nil))
- (setq pt5 (apply 'inters (reverse (cons nil (mapcar 'xy (list pt4 pt3 pt2 pt1))))))
- (foreach x (list pt1 pt3)
- (entmakex
- (cons '(0 . "LINE") (mapcar '(lambda (a b) (cons a (xy (trans b 1 0)) )) '(10 11) (list x pt5)))
- )
- )
- )
- (redraw)
- (princ)
- )
|