乐筑天下

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

[编程交流] 在不同多边形中创建图案填充

[复制链接]

19

主题

60

帖子

41

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 09:52:03 | 显示全部楼层 |阅读模式
尊敬的各位:,
 
我想在不同层的所有多段线上创建图案填充。例如,图层1上的所有多段线将图案填充创建为红色,图层2上的所有多段线将图案填充创建为黄色。。。。是否可以通过lisp自动创建它?
 
谢谢
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:57:44 | 显示全部楼层
当你说“在多段线上图案填充”时,你的意思是在闭合多段线内图案填充吗?
回复

使用道具 举报

19

主题

60

帖子

41

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 10:04:22 | 显示全部楼层
是的,谢谢。闭合多段线内的图案填充
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:09:26 | 显示全部楼层
对闭合多段线进行图案填充并不十分困难。到目前为止,你有什么代码?
 
提示(选择闭合多段线的最佳方法):
  1. (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>")))
回复

使用道具 举报

2

主题

74

帖子

72

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:18:19 | 显示全部楼层
但是如果
  1. ((-1 . <Имя объекта: 7edf4508>) (0 . "LWPOLYLINE") (330 . <Имя объекта:
  2. 7ed49cf8>) (5 . "6369") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
  3. (100 . "AcDbPolyline") (90 . 5) [b][color="Red"](70 . 0)[/color][/b] (43 . 0.0) (38 . 0.0) (39 . 0.0)
  4. [color="Blue"][b](10 -1632.64 5446.11)[/b][/color] (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 -330.423
  5. 2953.1) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 3128.59 4700.92) (40 .
  6. 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 402.075 6001.62) (40 . 0.0) (41 . 0.0)
  7. (42 . 0.0) (91 . 0) [b][color="#0000ff"](10 -1632.64 5446.11)[/color][/b] (40 . 0.0) (41 . 0.0) (42 . 0.0) (91
  8. . 0) (210 0.0 0.0 1.0))
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:20:24 | 显示全部楼层
 
没错,但它还没有正式关闭。然而,您可以轻松地修改代码,以确保闭合或(等于起始点端点)。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:28:05 | 显示全部楼层
啊,见鬼。。。
 
  1. (defun c:Test (/ ss h)
  2. (vl-load-com)
  3. (if (setq ss (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>"))))
  4.    ((lambda (space)
  5.       (vlax-for x (setq ss (vla-get-activeselectionset *AcadDoc*))
  6.         (vla-put-layer
  7.           (setq h (vla-AddHatch space acHatchPatternTypePredefined "SOLID" :vlax-true))
  8.           (vla-get-layer x)
  9.         )
  10.         (vlax-invoke h 'AppendOuterLoop (list x))
  11.         (vlax-invoke h 'Evaluate)
  12.       )
  13.       (vla-delete ss)
  14.     )
  15.      (if (or (eq acmodelspace
  16.                  (vla-get-activespace
  17.                    (cond (*AcadDoc*)
  18.                          ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
  19.                    )
  20.                  )
  21.              )
  22.              (eq :vlax-true (vla-get-mspace *AcadDoc*))
  23.          )
  24.        (vla-get-modelspace *AcadDoc*)
  25.        (vla-get-paperspace *AcadDoc*)
  26.      )
  27.    )
  28. )
  29. (princ)
  30. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:32:05 | 显示全部楼层
稍微修改以接受具有相同起点和终点的开放多段线。。。
 
  1. (defun c:Test (/ ss h)
  2. (vl-load-com)
  3. (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
  4.    ((lambda (space)
  5.       (vlax-for x (setq ss (vla-get-activeselectionset *AcadDoc*))
  6.         (if (or (vlax-curve-isClosed x)
  7.                 (equal (vlax-curve-getStartPoint x) (vlax-curve-getEndPoint x))
  8.             )
  9.           (progn
  10.             (vla-put-layer
  11.               (setq h (vla-AddHatch space acHatchPatternTypePredefined "SOLID" :vlax-true))
  12.               (vla-get-layer x)
  13.             )
  14.             (vlax-invoke h 'AppendOuterLoop (list x))
  15.             (vlax-invoke h 'Evaluate)
  16.           )
  17.         )
  18.       )
  19.       (vla-delete ss)
  20.     )
  21.      (if (or (eq acmodelspace
  22.                  (vla-get-activespace
  23.                    (cond (*AcadDoc*)
  24.                          ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
  25.                    )
  26.                  )
  27.              )
  28.              (eq :vlax-true (vla-get-mspace *AcadDoc*))
  29.          )
  30.        (vla-get-modelspace *AcadDoc*)
  31.        (vla-get-paperspace *AcadDoc*)
  32.      )
  33.    )
  34. )
  35. (princ)
  36. )
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 10:38:04 | 显示全部楼层
有没有办法通过选择内部点来创建图案填充?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:41:39 | 显示全部楼层
 
看看这个。
 
  1. (while
  2. (setq pt (getpoint "\n Internal Point :"))
  3.    (command "_.-hatch" pt "_p" "SOLID" "" "")
  4. )

 
塔瓦特
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:18 , Processed in 0.472805 second(s), 72 queries .

© 2020-2025 乐筑天下

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