偏移图案填充
是否可以使用lisp在所有侧面将图案填充边界延伸/偏移8厘米?我使用重新创建图案填充边界,然后使用bpoly获得多段线中的边界,然后将pline偏移8并再次对其进行图案填充。这是一项耗时的任务,希望有人能帮我。非常感谢。 下面是一个简单的代码,但在使用之前请注意:
1-它没有错误捕捉,因此请注意不要出错。
2-程序不会删除选定图案填充的现有边界。
3-可能是选定图案填充的边界不止一个。
4-可能是边界偏移导致创建多个边界。
(defun C:OH () (C:OffsetHatch))
(defun C:OffsetHatch (/ *h* *pt* *b1* *b2*)
(setq *h* (entsel "\nSelect Hatch to offset: "));
(setq *pt* (getpoint "Specify point on side to offset: "))
(command "_.-HATCHEDIT" *h* "_B"; Rrecreate Boundary
"_P"; Polyline,
"_Y"; Yes
)
(setq *b1* (entlast)); boundary,
(command "_.OFFSET" 8 *b1* *pt* "")
(setq *b2* (entlast))
(command "_.-HATCHEDIT" *h* "_AD" "_S" *b2* "" "")
(entdel *b1*)
)
谢谢阿汗哈,这很有效,但只有一个布达里(皮卡点)。如果图案填充有多个边界,则不起作用。我暂时不谈这个。
我在考虑分解边界/区域,并对分解的区域线和pedit进行pedit,使其成为一条pline,并将其偏移8。我的问题是,如何使用“ssget”拾取分解的边界/区域线,以便进行pedit并加入选择集。
或者可以编写一段代码,将区域更改为多段线lisp。我已经搜索过了,但找不到一个有效的。谢谢 如果我在写“仅适用于一个边界”时正确理解了你的意思,那么如果你用多个边界分离出唯一的图案填充,问题可能会部分解决。
因此,将此添加到您的代码中:
(defun C:SepH()(command"_.-HATCH" (entsel) "_H" ""))
... 在运行“Oh”之前,发出“Seph”命令。 很好,但是有没有一种方法可以让用户输入任意距离?,在本例中,图案填充偏移8米,但如果我们需要一个偏移0.10米,另一个偏移1.5米呢?,提前感谢 (defun C:OH () (C:OffsetHatch))
(defun C:OffsetHatch (/ *h* *pt* *dist* *b1* *b2*)
(setq *h* (entsel "\nSelect Hatch to offset: "));
(setq *pt* (getpoint "Specify point on side to offset: "))
(setq *dist* (getdist "\nSpecify offset distance: "))
(command "_.-HATCHEDIT" *h* "_B"; Rrecreate Boundary
"_P"; Polyline,
"_Y"; Yes
)
(setq *b1* (entlast)); boundary,
(command "_.OFFSET" *dist* *b1* *pt* "")
(setq *b2* (entlast))
(command "_.-HATCHEDIT" *h* "_AD" "_S" *b2* "" "")
(entdel *b1*)
) 非常感谢,工作尽善尽美,祝贺你,付出了巨大的努力 不客气:)。
页:
[1]