在边界内删除
对不起,如果这一切都已经准备好处理,但我找不到任何具体的时候,我做了搜索。使用AC2008
希望能够在由直线、多段线等组成的图形上绘制方框(边界),并能够删除方框外的所有内容。这意味着多段线和直线等将在边界处断开并删除
这些图纸是城镇的,显示了所有的房屋边界、道路和主要服务基础设施(水、下水道等),但我只需要在1或2条街道上工作,而不是整个城镇。
我知道我可以修剪、延伸和打断线条,但能在一个comand中完成这件事太酷了
提前感谢
亨利·约翰 试试Express Tools命令“extrim”,应该可以处理这个问题。 天哪。。。以前从未使用过extrim-绝对神奇的命令 你可能会喜欢这个。。。
http://www.theswamp.org/index.php?topic=24646.0 不错,但是当我运行extrim时,并不是所有的行都被删除,只有其中的一些行。
我做错什么了吗??? 如果要修剪的对象不是连续线型,并且“空间”恰好落在修剪边界上,则不会修剪。此外,我发现extrim命令的结果不确定。 您可以在运行它之前将ltscale设置为真正的小,以避免大多数“断线”问题。一个不便,但不经常使用的BTN。 试试这个。它需要一些错误捕捉,使其坚实,但你可以得到的想法。我使用express tools extended trim程序的前端,使其接受2个参数1-矩形的实体名称和矩形的角点。然后,它将使用express tool extend trim程序的其余部分,因此,只有在安装了expresstools的情况下,这才有效。
在命令行上加载并进行类型测试
(定义c:测试(/rect llc urc)
(setq rect(car(entsel“\n选择矩形或闭合多段线”))_获取矩形
(vla GetBoundingBox(vlax ename->vla object rect)“minpt”maxpt)_检查高度/宽度
(setq)
llc(vlax safearray->list minpt)
urc(vlax safearray->list maxpt)
);_setq公司
(extrim2 rect llc)_调用扩展修剪过程ent名称和点
(命令“erase”“all”“r”“w”urc llc“”)_删除矩形外的所有内容
(普林斯)
);_德芬
;;; 借用expresstools扩展修剪代码,并使其适用于此
(defun extrim2(ag1 ag2/na e1 p1 redraw\u it lst n)
(acet error init(列表
(列出“cmdecho”0)
“突出显示”0
“regenmode”1
“osmode”0
“ucsicon”0
“offsetdist”0
“attreq”0
“plinewid”0
“plinetype”1
“gridmode”0
“celtype”“连续”
“ucsfollow”0
“limcheck”0
)
T旗帜True表示使用undo清除错误。
'(如果重新绘制(重新绘制na 4))
);列表
);acet错误初始化
(setq na ag1)
(如果不适用
(程序
(setq e1(entget na));;setq公司
(如果(或(等于“文本”(cdr(assoc 0 e1)))
(等于“多行文字”(cdr(assoc 0 e1)))
(等于“ATTDEF”(cdr(assoc 0 e1)))
(相等的“图像”(cdr(assoc 0 e1)))
(等于“插入”(cdr(assoc 0 e1)))
(等于“固体”(cdr(assoc 0 e1)))
(等于“3DFACE”(cdr(assoc 0 e1)))
(相等的“跟踪”(cdr(assoc 0 e1)))
);或
(程序
(setq lst(acet geom对象点列表na nil))
(setq n 0)
(命令“_.pline”)
(重复(长度lst)
(命令(第n个lst))
(setq n(+n 1));setq公司
);重复
(如果(不(等于(car lst)(last lst)0.0000001))
(命令“_cl”)
(命令“”)
);如果
(setq na(entlast)
e1不适用
);setq公司
);然后绘制一条温度曲线作为切割边缘。
(setq e1 nil)
);如果
(重新绘制na 3)
(setq redraw\u it T)
(setq p1 ag2)
(重新绘制na 4)
(setq redraw_it nil)
(如果p1(etrim na p1));如果
(如果e1
(程序
(如果(setq p1(acet层锁定(getvar“clayer”))
(命令“.layer”“\u un”(getvar“clayer”)“”)
);如果
(entdel e1)
(如果p1
(命令“.layer”“\u lock”(getvar“clayer”)“”)
);如果
);然后编程
);如果
);程序
);如果
(acet错误恢复)
(普林斯)
);defun c:extrim
页:
[1]