hubeiwdlue 发表于 2023-11-19 16:17:50

多段线单向剪切

我希望做个一个插件,先选择多段线,在选择方向,就可以把多段线范围内,该方向的线全部减掉。我自己做出来的是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)
)

lee50310 发表于 2023-11-23 15:22:36



封閉圖形(含多段線)剪切

取自國外論壇
http://www.theswamp.org/index.php?topic=24646.30

封閉圖形剪切 CookieCutter2 v1.2.lsp
執行指令cc
               1.擇圓或閉合多段線、橢圓或樣條曲線來修剪邊緣:
               2.選取一側的點(物體內側或外側)進行修剪: 外側
               3.擦除裡面的所有物體 外側? <N>:N

freedom_ice 发表于 2023-11-22 18:07:01

用intersection函数获取拟剪切对象与剪切多段线的交点,以交点为分界点,将拟剪切多段线分解成多个图元,然后分别判断各个图元是否是你需要的,是则保留,不是则删除。
需要一个判断点在多段线内外的算法,还有点在多段线上下的算法。

masterlong 发表于 2023-11-19 18:55:11

多段线如果有自相交的话会挺麻烦的
记得et工具有一个批量剪切命令
不如就用那个

hubeiwdlue 发表于 2023-11-19 19:02:29

masterlong 发表于 2023-11-19 18:55
多段线如果有自相交的话会挺麻烦的
记得et工具有一个批量剪切命令
不如就用那个

谢谢长老,我们现在已经不允许用acad了,单位买的中望。自己写自己用,不用很完美。有缺陷,自己心里有数就行。

hubeiwdlue 发表于 2023-11-22 19:39:40

freedom_ice 发表于 2023-11-22 18:07
用intersection函数获取拟剪切对象与剪切多段线的交点,以交点为分界点,将拟剪切多段线分解成多个图元,然 ...

感觉好复杂,我研究下。谢谢您了。

lee50310 发表于 2023-11-23 12:12:04

本帖最后由 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

hubeiwdlue 发表于 2023-11-23 13:06:15

lee50310 发表于 2023-11-23 12:12
提供思路 => 可參考2個範例
1[源码]
http://bbs.mjtd.com/thread-187988-1-1.html


谢谢您的指导。

fangmin723 发表于 2023-11-23 14:00:41


看看这是不是你想要的效果
https://www.bilibili.com/video/BV1A24y1N7UH/

hubeiwdlue 发表于 2023-11-23 15:22:13

fangmin723 发表于 2023-11-23 14:00
看看这是不是你想要的效果

是的,真牛逼。听说.net比lisp强大很多。
页: [1] 2
查看完整版本: 多段线单向剪切