乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 23|回复: 7

[编程交流] 偏移图案填充

[复制链接]

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 09:19:59 | 显示全部楼层 |阅读模式
是否可以使用lisp在所有侧面将图案填充边界延伸/偏移8厘米?
 
我使用重新创建图案填充边界,然后使用bpoly获得多段线中的边界,然后将pline偏移8并再次对其进行图案填充。这是一项耗时的任务,希望有人能帮我。非常感谢。
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 09:28:43 | 显示全部楼层
下面是一个简单的代码,但在使用之前请注意:
1-它没有错误捕捉,因此请注意不要出错。
2-程序不会删除选定图案填充的现有边界。
3-可能是选定图案填充的边界不止一个。
4-可能是边界偏移导致创建多个边界。
  1. (defun C:OH () (C:OffsetHatch))
  2. (defun C:OffsetHatch (/ *h* *pt* *b1* *b2*)
  3.    (setq *h* (entsel "\nSelect Hatch to offset: ")); [be sure to select hatch object, not other kind of entity]
  4.    (setq *pt* (getpoint "Specify point on side to offset: "))
  5.    (command "_.-HATCHEDIT" *h* "_B"; Rrecreate Boundary
  6.             "_P"; Polyline, [sometimes autocad creates region]
  7.             "_Y"; Yes
  8.    )
  9.    (setq *b1* (entlast)); boundary, [may be more than one boundary created]
  10.    (command "_.OFFSET" 8 *b1* *pt* "")
  11.    (setq *b2* (entlast))
  12.    (command "_.-HATCHEDIT" *h* "_AD" "_S" *b2* "" "")
  13.    (entdel *b1*)
  14. )
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 09:51:36 | 显示全部楼层
如果我在写“仅适用于一个边界”时正确理解了你的意思,那么如果你用多个边界分离出唯一的图案填充,问题可能会部分解决。
因此,将此添加到您的代码中:
 
  1. (defun C:SepH()(command"_.-HATCH" (entsel) "_H" ""))

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

使用道具 举报

6

主题

30

帖子

24

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:55:30 | 显示全部楼层
很好,但是有没有一种方法可以让用户输入任意距离?,在本例中,图案填充偏移8米,但如果我们需要一个偏移0.10米,另一个偏移1.5米呢?,提前感谢
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 10:10:02 | 显示全部楼层
  1. (defun C:OH () (C:OffsetHatch))
  2. (defun C:OffsetHatch (/ *h* *pt* [color=red]*dist*[/color] *b1* *b2*)
  3.    (setq *h* (entsel "\nSelect Hatch to offset: ")); [be sure to select hatch object, not other kind of entity]
  4.    (setq *pt* (getpoint "Specify point on side to offset: "))
  5.    [color=red](setq *dist* (getdist "\nSpecify offset distance: "))[/color]
  6.    (command "_.-HATCHEDIT" *h* "_B"; Rrecreate Boundary
  7.             "_P"; Polyline, [sometimes autocad creates region]
  8.             "_Y"; Yes
  9.    )
  10.    (setq *b1* (entlast)); boundary, [may be more than one boundary created]
  11.    (command "_.OFFSET" [color=red]*[/color][color=red]dist*[/color] *b1* *pt* "")
  12.    (setq *b2* (entlast))
  13.    (command "_.-HATCHEDIT" *h* "_AD" "_S" *b2* "" "")
  14.    (entdel *b1*)
  15. )
回复

使用道具 举报

6

主题

30

帖子

24

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 10:19:59 | 显示全部楼层
非常感谢,工作尽善尽美,祝贺你,付出了巨大的努力
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 10:20:03 | 显示全部楼层
不客气:)。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 03:12 , Processed in 0.332986 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表