pearldrumbum 发表于 2022-7-5 18:33:59

插入动态块并

你好
 
我是新来的,不是lisp程序员,但唉,我的任务是为我的公司开发一个新系统,以补充我们的工作流程。
 
我拥有的是一个只包含一个动态块的模板文件,但它可能有数千种不同的变体。
 
我已经通过以下方法将块插入到默认状态:
 
这可能非常简单,但到目前为止,它实现了我希望它做的事情(插入块并让用户选择插入点,但绕过手动更改缩放和旋转的能力)。
 
下一步是选择最后插入的块并设置块的属性和可见性状态。该块有50个可见性状态(全部在一个参数中,“Visibility1”简称为1-50),可能要设置多达104个属性。所有这些变量的值都将从中读取。csv文件,使用我已经编写并正常工作的一点lisp和dcl选择。最终,这些值将作为3个字符串和2个字符串列表传递到此函数中。
 
不过,我真的不确定接下来该怎么办。我在谷歌机器上找到的一切似乎比我要做的要复杂得多。是的,这是很多潜在的变体,但实际上这是一个相当简单的块。
 
要记住的是-
-在一个项目中,该块有许多实例,所有实例的属性数量和值都不同
-我还希望能够用一个唯一的ID插入每个,我可以稍后引用(我猜他们已经有了一个,但我不知道以后如何访问、更改或引用它)
 
我应该彻底改变我的方法,还是我走在正确的轨道上?我如何完成下一组任务?
 
谢谢

jonathann3891 发表于 2022-7-5 18:40:26

我会这样设置attreq:
(setq oattreq (getvar 'attreq)
(setvar 'attreq 0)
(command "_insert" "IO")
(command "S" "1" "R" "0")
(setvar 'attreq oattreq)
 
Lee Mac有一个“更新标题栏属性”lisp,可以读取csv。
http://www.lee-mac.com/updatetitleblock.html

iconeo 发表于 2022-7-5 18:43:13

这就是控制动态块特性所需的。
 
http://www.lee-mac.com/dynamicblockfunctions.html

pearldrumbum 发表于 2022-7-5 18:46:41

谢谢大家的回复。
 
@乔纳森-这些变化背后的原因是什么?我对Lisp程序和在飞中学习很陌生。我试过你的代码,在实践中效果是一样的,所以我只是想知道它的好处是什么(为了学习和理解)。
 
@iconeo-这是一个非常有用的链接。非常感谢。实际上,我在搜索中偶然发现了它,但我不确定如何实现这些功能。在“设置动态块属性值”函数中,程序对blk参数的期望值是什么?它说它是一个VLA动态块引用对象,在我看来,它就像是一个特定块的排序ID。但是,如何获取最后放置的块的参考对象?

pearldrumbum 发表于 2022-7-5 18:49:42

如何获取最近插入的块的VLA动态块引用对象,以便在Lee的setdynpropvalue函数中使用它,它对块的每个实例都是唯一的吗?

iconeo 发表于 2022-7-5 18:52:25

哈哈,我不得不问李同样的问题。这应该能让你达到目的。
 
(vlax-ename->vla-object (entlast))

pearldrumbum 发表于 2022-7-5 18:53:17

令人惊叹的谢谢你们的快速回复,伙计们。出于好奇,是否可以自定义或将块引用对象设置为我喜欢的对象?我可以看到这在以后创建报告时有一些用处。。。

iconeo 发表于 2022-7-5 18:57:02

可能
 
(setq myblock (vlax-ename->vla-object (entlast)))
 
那么你的VLA参考应该是myblock,对吗?我还没有测试它是否有效。

pearldrumbum 发表于 2022-7-5 19:00:47

哦正当

iconeo 发表于 2022-7-5 19:04:32

是否每个状态都有50个可见性状态?
页: [1] 2
查看完整版本: 插入动态块并