大师帮忙急解决此有关批量打断问题
求大师帮助 能批量打断每个图元中Y为0,寻找X方向第一个交点,然后断开1mm.本帖最后由 llsheng_73 于 2016-7-31 02:20 编辑
**** Hidden Message *****
你这个也不是打断啊,只是把最下面一条水平线向右拉伸1mm即可。 你这么多图实际上应该是分别放在不同的dwg文档吧?批量打开然后DWG 然后断开? 偶尔做做怪 发表于 2016-7-26 21:33 static/image/common/back.gif
你这么多图实际上应该是分别放在不同的dwg文档吧?批量打开然后DWG 然后断开?
是在一个图形中 如果都在一个DWG!逻辑判断很复杂!需要缩短的线Y坐标并不好确认。做这个程序得花一番功夫的!我开始后以为是每个图形一个DWG,那样的话简单不少! 本帖最后由 kozmosovia 于 2016-7-27 15:32 编辑
首先需要分组,然后针对每一组内遍历提取Y坐标最小的水平直线及其最左边X坐标最小的直线,修改其左端点X坐标+1
大概示意,没有测试
(Defun _Process (ss / I MAXX MINX MINY OBJ S10 S11 SN)
(setq i -1
miny 1e99
minx 1e99
)
(repeat (sslength ss)
(setq sn(ssname ss (Setq i (1+ i)))
s10 (car (assoc 10 (entget sn)))
s11 (car (assoc 11 (entget sn)))
)
(if (and (equal (cadr s10) (cadr s11))
(< (cadr s10) miny)
)
(progn
(setq miny (car s10))
(if (< (min (car s10) (car s11)) minx)
(setq minx (min (car s10) (car s11))
objsn
)
)
)
)
)
(if obj
(setq s10(car (assoc 10 (entget obj)))
s11(car (assoc 11 (entget obj)))
maxx (max (car s10) (car s11))
minx (1+ minx)
s10(list minx miny 0.0)
s11(list maxx miny 0.0)
obj(entget obj)
obj(subst (cons 10 s10) (assoc 10 obj) obj)
obj(subst (cons 11 s11) (assoc 11 obj) obj)
obj(entmod obj)
)
)
)
kozmosovia 发表于 2016-7-27 15:17 static/image/common/back.gif
首先需要分组,然后针对每一组内遍历提取Y坐标最小的水平直线及其最左边X坐标最小的直线,修改其左端点X坐标 ...
感谢您百忙之中抽空给予支持,老师这思路是对的,希望帮忙完善程序。我也是最近上明经学道来的。逐步提高水平。 kozmosovia 发表于 2016-7-27 15:17 static/image/common/back.gif
首先需要分组,然后针对每一组内遍历提取Y坐标最小的水平直线及其最左边X坐标最小的直线,修改其左端点X坐标 ...
感谢您百忙之中抽空给予支持,老师这思路是对的,希望帮忙完善程序。我也是最近上明经学道来的。逐步提高水平。 本帖最后由 llsheng_73 于 2016-7-30 15:53 编辑
页:
[1]
2