- (defun c:ff()
- (command "undo" "be")
- (setvar "cmdecho" 0)
- (setq bz(getvar "osmode"))(setvar "osmode" 0)
- (setq p1(getpoint "\n选择桥接起点:"))
- (setq p2(getpoint p1 "\n选择桥接终点:"))
- (setq p3(polar p1 (angle p2 p1) 0.01));---外扩点(为后面框选做准备)
- (setq p4(polar p2 (angle p1 p2) 0.01));---外扩点(为后面框选做准备)
- (setq p5(polar p1 (angle p1 p2) 0.01));---内缩点(为后面修剪做准备)
- (setq p6(polar p2 (angle p2 p1) 0.01));---内缩点(为后面修剪做准备)
- (setq jk(getdist "\n量取或输入桥接宽度:<5>"))(if (null jk)(setq jk 5))
- (setq d(* jk 0.5))
- (setq dd(* d 0.999));---内缩
- (setq ddd(* d 1.001));---外扩
- (setq r(+ (angle p1 p2) (* pi 0.5)))
- (command "pline" (polar p1 r (- d)) (polar p2 r (- d)) (polar p2 r d) (polar p1 r d) "c")
- (setq rec(entlast))
- (command "trim" rec "" "f" (polar p5 r (- dd)) (polar p6 r (- dd)) (polar p6 r dd) (polar p5 r dd) (polar p5 r (- dd)) "" "")
- (setq ss(ssget "wp" (list (polar p3 r (- ddd)) (polar p4 r (- ddd)) (polar p4 r ddd) (polar p3 r ddd))))
- (command "erase" ss "")
- (setvar "osmode" bz)
- (command "undo" "e")
- (setvar "cmdecho" 0)
- (princ)
- )
网友答: 本帖最后由 cq4920 于 2023-2-24 19:18 编辑

- ;;平面开门洞
- (defun c:ttr (/ os p1 p2 ss layername i n ptla obj ptl ent )
- (setvar "cmdecho" 0)
- (setq os (getvar "osmode"))
- (setq p1 (getpoint"\n 指定双线外侧第一点"))
- (setq p2 (getpoint p1 "\n 指定双线另一侧的点"))
- (setq
- ss (ssget "_f" (list p1 p2))
- layername (cdr (assoc 8 (entget (ssname ss 0)))))
- (entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p2)))
- (setq ent (entlast))
- (setq i 0 n (sslength ss) ptla '())
- (repeat n
- (setq obj (ssname ss i))
- (setq ptl (HH:TwoEntsInters ent obj 0))
- (setq ptla (append ptla ptl))
- (setq i (1+ i))
- )
- (setq ptla (MC-pt ptla))
- (COMMAND "_.erase" ENT "")
- (command "_.BOUNDARY" (mc:md (car ptla) (cadr ptla)) "")
- (mc:ggtc (last_ent ent) layername)
- (setvar "osmode" 0)
- (vl-cmdf "trim" "" "f" p1 p2 "" "")
- (lj (ssget "x" (list (cons 0 "line,LWPOLYLINE,arc") (cons 8 layername))) )
- (command "._undo" "end")
- (setvar "osmode" os)
- (princ)
- )
如果是这样的问题那我其他的帖子可以看一看!!
网友答:
aws 发表于 2023-2-24 18:56
如果能获取到四个端点,加个判断,两两连接,是可以做到的。问题是,怎么获取这四个端点?
就是 你图中的状态是一开始就是如此,还是你将双线,用命令TR剪切后形成的,如果一开始如此,那就可以直接框选,如果一开始是双线,那么在你打断的时候 就已经得到了4个的坐标!网友答:
aws 发表于 2023-2-24 18:11
现在就差最后一步了,就是把四个点,进行连线,但是没有头绪,有没有大佬,能提供思路
框选4个端点 并且得到每个端点与之对应的下一点,如果是直线就求另一点 如果是多义线,就求相邻点,然后计算这两点的在空间内的方向,按照方向相同分两组,分别连接网友答: 现在就差最后一步了,就是把四个点,进行连线,但是没有头绪,有没有大佬,能提供思路网友答:
aws 发表于 2023-2-24 18:11
现在就差最后一步了,就是把四个点,进行连线,但是没有头绪,有没有大佬,能提供思路
按什么规则连接?找出规则,就不是难事。网友答:
mahuan1279 发表于 2023-2-24 18:53
按什么规则连接?找出规则,就不是难事。
这还不太好语言表达,就按照图片上的情况连接网友答:
cq4920 发表于 2023-2-24 18:41
框选4个端点 并且得到每个端点与之对应的下一点,如果是直线就求另一点 如果是多义线,就求相邻点,然后 ...
如果能获取到四个端点,加个判断,两两连接,是可以做到的。问题是,怎么获取这四个端点?网友答: 如图所示,我需要连接p1和p3,p2和p4,如果能获取到这四个点,分别计算他们的angle函数值。如果等于起点和终点的angle函数值,就进行连线。否则就不连线。
网友答:
cq4920 发表于 2023-2-24 19:04
就是 你图中的状态是一开始就是如此,还是你将双线,用命令TR剪切后形成的,如果一开始如此,那就可以直 ...
一开始是两个完整矩形,通过tr修剪后形成的缺口,那么我怎么调出来那四个坐标呢