 - ;我的意图是:
- ;1,有两个线,使两个线的最近端点连接
- ;2,连接后对整条线进行拟合
- ;主要是用于等高线连接应用
- (defun C:cjlj (/ Ss1 ss2 Pt1 Pt2 p1 p2)
- (vl-load-com)
- (setvar "Cmdecho" 0)
- (setq Ss1 (entsel "\n 选择1线:"))
- (setq Ss2 (entsel "\n 选择2线:"))
- (setq p1s (vlax-curve-getStartPoint (car ss1)))
- (setq p1d (vlax-curve-getEndPoint (car ss1)))
- (setq p2d (vlax-curve-getEndPoint (car ss2)))
- (setq p2s (vlax-curve-getStartPoint (car ss2)))
- (setq Z1 (car(assoc 38 (entget (car ss1)))))
- (setq Z2 (car(assoc 38 (entget (car ss2)))))
- (setq d1 (distance p1s p2s)
- d2 (distance p1s p2d)
- d3 (distance p1d p2s)
- d4 (distance p1d p2d))
- (cond
- ((equal d1 (min d1 d2 d3 d4) 1e-5) (setq p1 p1s p2 p2s))
- ((equal d2 (min d1 d2 d3 d4) 1e-5) (setq p1 p1s p2 p2d))
- ((equal d3 (min d1 d2 d3 d4) 1e-5) (setq p1 p1d p2 p2s))
- (T (setq p1 p1d p2 p2d))
- )
- (if (= z1 z2)
- (vl-cmdf "line" p1 p2 "" ".Pedit" "L" "Yes" "J" Ss1 ss2 "" "")
- )
- (setvar "Cmdecho" 1)
- (princ)
- )
|