嵌套块和实体颜色l
大家好。我一直在尝试为一个简单的任务编写s lisp代码,但结果表明这可能并不那么容易。我找到了很多信息,但没有找到这一条。
所以我想问的是这是否可行。
我有一个区块,它有许多实体。块具有名称,但所有(2-3)实体具有不同的颜色。
我试图在不分解块和更改实体名称的情况下更改实体颜色。这部分还可以,我甚至找到了一个很好的解决方案。
然而,问题是,我还必须重命名有关实体选定颜色的主块。
我有5-10种颜色选择。(112=蓝色,113=红色等),因此最终块名应为123456-112。
我知道如何找到块名并进行更改,但当我深入实体时,我没有原始块名的DXF代码。
所以我在这里处于一个无尽的循环中。有人可以帮助我或告诉我如何处理这个问题吗?
谢谢 修改块定义时,更改将影响图形中块的所有参照。
从您的描述中,听起来好像您正在寻找重命名单个块定义的单个引用-如果不为您希望创建的每个新块名复制块定义,这是不可能的,但是,如果您确实希望遵循此路线,我的复制或重命名块引用程序将向您展示如何进行。
或者,我建议将块定义中组件的颜色更改为ByBlock,然后更改每个块引用的颜色以适合。 谢谢李的帮助。
不确定我是否正确。
我需要的功能将用于修改位于正确位置的现有块。
我的问题是,我可以使用rename更改块,但我必须首先能够更改实体颜色,然后将块重命名为所选块名xxxxx-112
我们的块是嵌套的,但没有名称。使用零部件颜色对零件进行建模。
此外,块定义修改应更改上述所有相同的块。在我的情况下,不需要复制和重命名。如果我在adwg中有五个这样的块,并且颜色已经改变,那么可以重命名所有相同的块。
现在,我已经能够更改实体颜色了,但是在使用nentsel时,我如何才能找到实体主块名称呢?
有什么提示吗? 尝试
(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)
)
我希望这有帮助。
亨里克 谢谢谢谢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
不客气,Apache2k!
该错误意味着“函数需要一个“字符串”,并且正在接收一个20。
但在那段代码中,我看不出是什么导致了这个错误。。。
亨里克 解决了问题。我从错误的地方调用了错误的函数。对不起,这条信息不好,我注意到它对任何人都没有帮助。下次我会尽量说得更具体些。 很高兴你成功了。
亨里克 同一个项目中还有一个问题。
((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