guosheyang
发表于 2024-1-30 14:33:41
本帖最后由 guosheyang 于 2024-1-30 14:37 编辑
世人皆醉 发表于 2024-1-30 14:19
最后一步好像有问题,中断了
循环体中改为用entmod试试
(repeat(setq i(sslength ss2))
(entmod(append(entget (ssname ss2 (setq i(1- i)))) '((70 . 1))))
)
guosheyang
发表于 2024-1-30 14:35:09
最好上传dwg测试
世人皆醉
发表于 2024-1-30 14:41:21
guosheyang 发表于 2024-1-30 14:35
最好上传dwg测试
改了也不行,放弃两个,附件上传了,你看看
guosheyang
发表于 2024-1-30 14:52:38
先运行下overkill命令 试试
guosheyang
发表于 2024-1-30 14:56:02
guosheyang
发表于 2024-1-30 15:02:26
你上传图中 最后一个是属于悬挂线问题 把悬挂线搜索出来删除然后在闭合 关于悬挂线 搜索找下 大海大佬的代码 论坛有的
x_s_s_1
发表于 2024-1-30 15:19:07
以下代码能解决大部分问题,未下载您的例图
(defun c:tt(/ en n old ss)
(setq old (getvar 'peditaccept))
(setq en (entlast))
(setvar 'peditaccept 1)
(setq ss (ssget '((0 . "line,lwpolyline,arc"))))
(vl-cmdf "pedit" "m" ss "" "j" 0 "")
(while (setq en (entnext en))
(vla-put-Closed (vlax-ename->vla-object en) :vlax-true))
(repeat (setq n (sslength ss))
(setq en (ssname ss (setq n (1- n))))
(if (entget en)
(vla-put-Closed (vlax-ename->vla-object en) :vlax-true)))
(setvar 'peditaccept old))
世人皆醉
发表于 2024-1-30 15:30:43
guosheyang 发表于 2024-1-30 15:02
你上传图中 最后一个是属于悬挂线问题 把悬挂线搜索出来删除然后在闭合 关于悬挂线 搜索找下 大 ...
我的目的不是绘制组成一个集体的多段线,我就是想判断两个曲线端点中没有与其他点重合的那个点,然后绘制线连接这两个端点,和其他的曲线没有关系
世人皆醉
发表于 2024-1-30 15:32:34
x_s_s_1 发表于 2024-1-30 15:19
以下代码能解决大部分问题,未下载您的例图
(defun c:tt(/ en n old ss)
(setq old (getvar 'pedit ...
试了一下,没有啥用
guosheyang
发表于 2024-1-30 15:38:45
本帖最后由 guosheyang 于 2024-1-30 15:40 编辑
世人皆醉 发表于 2024-1-30 15:30
我的目的不是绘制组成一个集体的多段线,我就是想判断两个曲线端点中没有与其他点重合的那个点,然后绘制 ...
假如有三段线 提取所有三段线的起点和终点 然后相同点坐标归类 只有一个点坐标的就是那两点绘制线段连接即可
当然你用join命令连接起来三段线再 提取起点 终点坐标也可以如果要返回非连接状态undo以下即可