乐筑天下

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

[编程交流] 嵌套块和实体颜色l

[复制链接]

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 18:34:09 | 显示全部楼层 |阅读模式
大家好。
我一直在尝试为一个简单的任务编写s lisp代码,但结果表明这可能并不那么容易。我找到了很多信息,但没有找到这一条。
 
所以我想问的是这是否可行。
 
我有一个区块,它有许多实体。块具有名称,但所有(2-3)实体具有不同的颜色。
 
我试图在不分解块和更改实体名称的情况下更改实体颜色。这部分还可以,我甚至找到了一个很好的解决方案。
然而,问题是,我还必须重命名有关实体选定颜色的主块。
 
我有5-10种颜色选择。(112=蓝色,113=红色等),因此最终块名应为123456-112。
 
我知道如何找到块名并进行更改,但当我深入实体时,我没有原始块名的DXF代码。
 
所以我在这里处于一个无尽的循环中。有人可以帮助我或告诉我如何处理这个问题吗?
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:44:25 | 显示全部楼层
修改块定义时,更改将影响图形中块的所有参照。
 
从您的描述中,听起来好像您正在寻找重命名单个块定义的单个引用-如果不为您希望创建的每个新块名复制块定义,这是不可能的,但是,如果您确实希望遵循此路线,我的复制或重命名块引用程序将向您展示如何进行。
 
或者,我建议将块定义中组件的颜色更改为ByBlock,然后更改每个块引用的颜色以适合。
回复

使用道具 举报

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 18:51:03 | 显示全部楼层
谢谢李的帮助。
不确定我是否正确。
 
我需要的功能将用于修改位于正确位置的现有块。
 
我的问题是,我可以使用rename更改块,但我必须首先能够更改实体颜色,然后将块重命名为所选块名xxxxx-112
 
我们的块是嵌套的,但没有名称。使用零部件颜色对零件进行建模。
 
此外,块定义修改应更改上述所有相同的块。在我的情况下,不需要复制和重命名。如果我在adwg中有五个这样的块,并且颜色已经改变,那么可以重命名所有相同的块。
193410bzb9d3d5zl38t537.jpg
回复

使用道具 举报

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 18:53:09 | 显示全部楼层
现在,我已经能够更改实体颜色了,但是在使用nentsel时,我如何才能找到实体主块名称呢?
有什么提示吗?
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:59:37 | 显示全部楼层
尝试
  1. (vl-load-com)
  2. (defun c:demo (/ nsel l ll)
  3.    (if (and (princ "\nSelect a block entity: ")
  4.             (setq nsel (nentsel))
  5.             (setq l (last nsel))
  6.             (setq ll (last l))
  7.             (= (type ll) 'ENAME)
  8.        )
  9.        (progn
  10.            (setq obj  (vlax-ename->vla-object ll)
  11.                  name (vla-get-effectivename obj)
  12.            )
  13.            (princ (strcat "\nThe block name is: " name))
  14.        )
  15.        (princ "\nThe selected object was not from a block...")
  16.    )
  17.    (princ)
  18. )

 
我希望这有帮助。
亨里克
回复

使用道具 举报

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 19:09:33 | 显示全部楼层
谢谢谢谢hmsilva做得很好。
 
还有一个问题。我发现一个函数正在调用“(setq color(acad\u colordlg 256))”
然而,我建立了一个dcl,我只给了4-7个选项的颜色。替换对话框的首选方式是什么?
 
现在我得到了这些:
 
将(setq color(acad\U colordlg 256))更改为(setq color(def\U函数))
 
 
(setq宽度(dimx_平铺“im1”)
高度(dimy_平铺“im1”)
)
(启动图像“im1”)
(填充图像0 0宽高20)
(end_图像)
 
 

 
(action_tile“im1”“(setq la(itoa 20))))
 
 
这会给我错误消息:
命令:;错误:错误的参数类型:stringp 20
 
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:12:34 | 显示全部楼层
不客气,Apache2k!
 
该错误意味着“函数需要一个“字符串”,并且正在接收一个20。
但在那段代码中,我看不出是什么导致了这个错误。。。
 
亨里克
回复

使用道具 举报

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 19:19:04 | 显示全部楼层
解决了问题。我从错误的地方调用了错误的函数。对不起,这条信息不好,我注意到它对任何人都没有帮助。下次我会尽量说得更具体些。
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:26:57 | 显示全部楼层
很高兴你成功了。
 
 
亨里克
回复

使用道具 举报

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 19:33:21 | 显示全部楼层
同一个项目中还有一个问题。
 
((1.0 0.0 0.0) (0.0 1.0 0.0) (0.0 0.0 1.0) (5400.0 -1800.0 0.0))(6571.82 -607.697 0.0)
 
如何强制lisp从顶部列表中仅选择此选项(6571.82-607.697 0.0)?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:50 , Processed in 0.462626 second(s), 74 queries .

© 2020-2025 乐筑天下

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