LISP2LEARN 发表于 2022-7-6 09:19:59

偏移图案填充

是否可以使用lisp在所有侧面将图案填充边界延伸/偏移8厘米?
 
我使用重新创建图案填充边界,然后使用bpoly获得多段线中的边界,然后将pline偏移8并再次对其进行图案填充。这是一项耗时的任务,希望有人能帮我。非常感谢。

Ahankhah 发表于 2022-7-6 09:28:43

下面是一个简单的代码,但在使用之前请注意:
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*)
)

LISP2LEARN 发表于 2022-7-6 09:42:13

谢谢阿汗哈,这很有效,但只有一个布达里(皮卡点)。如果图案填充有多个边界,则不起作用。我暂时不谈这个。
 
我在考虑分解边界/区域,并对分解的区域线和pedit进行pedit,使其成为一条pline,并将其偏移8。我的问题是,如何使用“ssget”拾取分解的边界/区域线,以便进行pedit并加入选择集。
 
或者可以编写一段代码,将区域更改为多段线lisp。我已经搜索过了,但找不到一个有效的。谢谢

Ahankhah 发表于 2022-7-6 09:51:36

如果我在写“仅适用于一个边界”时正确理解了你的意思,那么如果你用多个边界分离出唯一的图案填充,问题可能会部分解决。
因此,将此添加到您的代码中:
 
(defun C:SepH()(command"_.-HATCH" (entsel) "_H" ""))

 
... 在运行“Oh”之前,发出“Seph”命令。

jcap91163 发表于 2022-7-6 09:55:30

很好,但是有没有一种方法可以让用户输入任意距离?,在本例中,图案填充偏移8米,但如果我们需要一个偏移0.10米,另一个偏移1.5米呢?,提前感谢

Ahankhah 发表于 2022-7-6 10:10:02

(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*)
)

jcap91163 发表于 2022-7-6 10:19:59

非常感谢,工作尽善尽美,祝贺你,付出了巨大的努力

Ahankhah 发表于 2022-7-6 10:20:03

不客气:)。
页: [1]
查看完整版本: 偏移图案填充