乐筑天下

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

[编程交流] 基于环境创建图案填充

[复制链接]

41

主题

120

帖子

84

银币

后起之秀

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

铜币
200
发表于 2022-7-5 15:28:40 | 显示全部楼层 |阅读模式
你好
我有一个包含多段线“Test*”的块。
我想做什么?
1、获取多段线的形状
2、将形状分为2部分
3.使用RGB颜色和单个图层(2个形状)创建图案填充(见图)
有可能吗?
162841t6679pn76ozmn9o6.png
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:34:50 | 显示全部楼层
你只是在避免手动操作吗?
 
作为一个使用这种方法的lisp非常简单的自动化工具,你知道如何使用lisp吗?
拾取pt1
拾取pt2
拾取pt3
选取pt4
线路pt1 pt2
-舱口pt1 pat1
-舱口pt2 pat2
回复

使用道具 举报

41

主题

120

帖子

84

银币

后起之秀

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

铜币
200
发表于 2022-7-5 15:35:35 | 显示全部楼层
我想使用autolisp。但我有个问题。我不知道如何创建点列表(计算分割点并从块中获取点列表)。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:39:58 | 显示全部楼层
我额外的问题是,你想要真实的区域1=区域2吗?如果是这样,那么可能没有一个图像是正确的,或者我只想用一些规则选取两个点,比如另一条线的中间。
 
lisp代码实际上是将我已经发布的内容转换为lisp。
 
请张贴关于额外的问题,它使事情复杂化,如果不需要a1=a2,那么它需要几分钟的代码。
回复

使用道具 举报

41

主题

120

帖子

84

银币

后起之秀

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

铜币
200
发表于 2022-7-5 15:42:23 | 显示全部楼层
你好
图片是草图(请不要建议)
我假设了这种情况。
搜索最大左/下角。
获取长度多段线并拆分为2部分。
设定点并创建两个目标。
 
也许这是个错误的假设。。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:46:58 | 显示全部楼层
试试这个。演示。
 
  1. (defun c:foo (/ _addhatch _bnd a ao b d doc e ll mp o s sp ur vc vs)
  2. (defun _addhatch (e c sp l / h)
  3.    (if        (setq h (vla-addhatch sp achatchpatterntypepredefined "SOLID" :vlax-false))
  4.      (progn (vlax-invoke h 'appendouterloop (list e))
  5.      (vla-put-color h c)
  6.      (vla-evaluate h)
  7.      (vla-update h)
  8.      (entmod (append (entget (vlax-vla-object->ename h)) (list (cons 8 l))))
  9.      h
  10.      )
  11.    )
  12. )
  13. (defun _bnd (p l / e)
  14.    (setq e (entlast))
  15.    (command "_.-boundary" p "")
  16.    (cond ((not (equal e (entlast)))
  17.    (entmod (append (entget (setq e (entlast))) (list (cons 8 l))))
  18.    (vlax-ename->vla-object e)
  19.   )
  20.    )
  21. )
  22. (if (setq s (ssget '((0 . "LWPOLYLINE") (-4 . "&") (70 . 1))))
  23.    (progn
  24.      (setq doc (vla-get-activedocument (setq ao (vlax-get-acad-object))))
  25.      (vla-startundomark doc)
  26.      (setq sp (vlax-get doc
  27.                  (cond ((= 1 (getvar 'cvport)) 'paperspace)
  28.                        ('modelspace)
  29.                  )
  30.        )
  31.      )
  32.      (vla-put-lock (vlax-ename->vla-object (tblobjname "layer" (getvar 'clayer))) :vlax-false)
  33.      (setq vc (getvar 'viewctr))
  34.      (setq vs (getvar 'viewsize))
  35.      (foreach b (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
  36. (setq o (vlax-ename->vla-object b))
  37. (if
  38.   (and (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list o 'll 'ur))))
  39.        (mapcar 'set '(ll ur) (mapcar 'vlax-safearray->list (list ll ur)))
  40.        (setq e (entmakex (list '(0 . "line") '(8 . "tempfoo") (cons 10 ll) (cons 11 ur))))
  41.   )
  42.    (progn (setq mp (mapcar '(lambda (a b) (/ (+ a b) 2.)) ll ur))
  43.           (vlax-invoke ao 'zoomcenter mp (setq d (distance ll ur)))
  44.           (and (setq a (_bnd (list (+ (car mp) (* d 0.1)) (cadr mp)) "BoundaryA"))
  45.                (_addhatch a 1 sp "HatchA")
  46.           )
  47.           (and (setq b (_bnd (list (- (car mp) (* d 0.1)) (cadr mp)) "BoundaryB"))
  48.                (_addhatch b 3 sp "HatchB")
  49.           )
  50.    )
  51. )
  52. (and e (entdel e))
  53.      )
  54.      (vla-endundomark doc)
  55.      (vlax-invoke ao 'zoomcenter vc vs)
  56.    )
  57. )
  58. (princ)
  59. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 15:49:32 | 显示全部楼层
很酷,罗恩!
但有几个问题:
是否需要缩放到对象?
如果是:也许使用zoomextents和zoomprevious方法会更快。
 
有人知道舱口评估是否重要吗?(vla评估)
因为我以前使用AddHatch方法,而不需要它。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:52:33 | 显示全部楼层
 
我使用“boundary”命令缩放对象以提高速度,这样它就不会查看整个图形。。试试看,我也可以打电话给(bpoly pt)。。但想想看,对于屏幕上的许多对象来说,速度仍然是一个问题。
 
*编辑。。刚刚测试过,速度要慢得多。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 15:54:19 | 显示全部楼层
 
谢谢你的确认,罗恩。
回复

使用道具 举报

41

主题

120

帖子

84

银币

后起之秀

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

铜币
200
发表于 2022-7-5 15:58:58 | 显示全部楼层
我对“CAD克隆”有问题-BricsCad
有没有可能以某种方式避免它
 
“;-----表达式周围出错-----
(BPOLY“P”)
;
; 错误:没有函数定义;[eval]处的预期功能
"
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 00:28 , Processed in 1.159165 second(s), 75 queries .

© 2020-2025 乐筑天下

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