Apache2k 发表于 2022-7-5 18:34:09

嵌套块和实体颜色l

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

Lee Mac 发表于 2022-7-5 18:44:25

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

Apache2k 发表于 2022-7-5 18:51:03

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

Apache2k 发表于 2022-7-5 18:53:09

现在,我已经能够更改实体颜色了,但是在使用nentsel时,我如何才能找到实体主块名称呢?
有什么提示吗?

hmsilva 发表于 2022-7-5 18:59:37

尝试

(vl-load-com)
(defun c:demo (/ nsel l ll)
   (if (and (princ "\nSelect a block entity: ")
            (setq nsel (nentsel))
            (setq l (last nsel))
            (setq ll (last l))
            (= (type ll) 'ENAME)
       )
       (progn
         (setq obj(vlax-ename->vla-object ll)
               name (vla-get-effectivename obj)
         )
         (princ (strcat "\nThe block name is: " name))
       )
       (princ "\nThe selected object was not from a block...")
   )
   (princ)
)
 
我希望这有帮助。
亨里克

Apache2k 发表于 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
 

hmsilva 发表于 2022-7-5 19:12:34

不客气,Apache2k!
 
该错误意味着“函数需要一个“字符串”,并且正在接收一个20。
但在那段代码中,我看不出是什么导致了这个错误。。。
 
亨里克

Apache2k 发表于 2022-7-5 19:19:04

解决了问题。我从错误的地方调用了错误的函数。对不起,这条信息不好,我注意到它对任何人都没有帮助。下次我会尽量说得更具体些。

hmsilva 发表于 2022-7-5 19:26:57

很高兴你成功了。
 
 
亨里克

Apache2k 发表于 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)?
页: [1] 2
查看完整版本: 嵌套块和实体颜色l