多段线单向剪切
我希望做个一个插件,先选择多段线,在选择方向,就可以把多段线范围内,该方向的线全部减掉。我自己做出来的是2点多段线的,想请教各位大神,如果多段线是多节点多段线,应该怎么做。(defun err1 (msg)
(command)
(setvar "OSMODE" osmode_bak)
(setvar "CMDECHO" cmdecho_bak)
(command "_.undo" "_end");;定义撤销结束处
(setq *error* olderr)
(princ)
)
(defun c:tt(/ )
(command "_.undo" "_begin");;定义撤销开始处
(setq olderr *error*
*error* err1
);定义错误函数
(setq osmode_bak (getvar "OSMODE"));;记录当前捕捉设置
(setq cmdecho_bak (getvar "CMDECHO"));;记录当前回显设置
(setvar "OSMODE" 0)
(setvar "CMDECHO" 0)
(setq rongcha 0.1);设置容差
(setq ss (ssget ":E:S"'((0 . "*LINE"))))
(setq en (ssname ss 0))
(setq p1 (getpoint "\n剪切方向"));用户坐标
(command "OFFSET" rongcha en p1 "")
(setq e1 (entlast))
(setq pt1 (vlax-curve-getstartpoint e1))
(setq pt2 (vlax-curve-getendpoint e1))
(entdel e1)
(setq pt1 (trans pt1 0 1)
pt2 (trans pt2 0 1)
);转为用户坐标
(command "_trim" en "" "F" pt1 pt2 "")
(setvar "OSMODE" osmode_bak)
(setvar "CMDECHO" cmdecho_bak)
(command "_.undo" "_end");;定义撤销结束处
(princ)
)
封閉圖形(含多段線)剪切
取自國外論壇
http://www.theswamp.org/index.php?topic=24646.30
封閉圖形剪切 CookieCutter2 v1.2.lsp
執行指令cc
1.擇圓或閉合多段線、橢圓或樣條曲線來修剪邊緣:
2.選取一側的點(物體內側或外側)進行修剪: 外側
3.擦除裡面的所有物體 外側? <N>:N
用intersection函数获取拟剪切对象与剪切多段线的交点,以交点为分界点,将拟剪切多段线分解成多个图元,然后分别判断各个图元是否是你需要的,是则保留,不是则删除。
需要一个判断点在多段线内外的算法,还有点在多段线上下的算法。 多段线如果有自相交的话会挺麻烦的
记得et工具有一个批量剪切命令
不如就用那个
masterlong 发表于 2023-11-19 18:55
多段线如果有自相交的话会挺麻烦的
记得et工具有一个批量剪切命令
不如就用那个
谢谢长老,我们现在已经不允许用acad了,单位买的中望。自己写自己用,不用很完美。有缺陷,自己心里有数就行。 freedom_ice 发表于 2023-11-22 18:07
用intersection函数获取拟剪切对象与剪切多段线的交点,以交点为分界点,将拟剪切多段线分解成多个图元,然 ...
感觉好复杂,我研究下。谢谢您了。 本帖最后由 lee50310 于 2023-11-23 12:14 编辑
提供思路 => 可參考2個範例
1[源码] <*** 畫線裁減實體:點選側灰階 & 刪除 ***>
http://bbs.mjtd.com/thread-187988-1-1.html
2.[源码] <*** 修剪水平線和垂直線 ***>
http://bbs.mjtd.com/thread-188120-1-1.html lee50310 发表于 2023-11-23 12:12
提供思路 => 可參考2個範例
1[源码]
http://bbs.mjtd.com/thread-187988-1-1.html
谢谢您的指导。
看看这是不是你想要的效果
https://www.bilibili.com/video/BV1A24y1N7UH/
fangmin723 发表于 2023-11-23 14:00
看看这是不是你想要的效果
是的,真牛逼。听说.net比lisp强大很多。
页:
[1]
2