VBA:移动At的Z坐标
我被一些VBA代码卡住了。是的,我知道我应该搬到。净额。VBA已经相当过时了,但我所有的宏仍然在VBA中,它们可以完成这项工作。
我的目标:
在块定义中移动属性定义的插入点(或对齐点)的Z坐标值。
(我稍后将对所有更改的块定义执行attsync)
原因:
在“不透明”OBEJCT前面提升文本,以便在打印时更好地阅读文本。
我在哪里:
-我想更改块定义的“集合”。
-我循环浏览“集合”中的所有“块定义”。
-我递归地遍历块定义中的所有“项”,以检查该项是否为AttributeDefinition。
-我想设置属性def的Z坐标。值为2,但我没有这样做。
代码的关键部分:
我记得我必须先在一个双精度数组中定义目标坐标,但我无法实现任何一个。
有没有人不像我那样对VBA生疏?
使用VBA enabler在AutoCAD 2013上运行(仍然可以正常工作)
我附上了一个样本图纸和剥离*。DVB项目到原岗位。
我通常用lisp,对于你来说BlockAttributes=BlockDef。获取属性。
所以我会得到多少属性,你似乎没有这样做,然后通过每个单独的属性循环,改变属性,以满足需要。
循环遍历属性的示例。
1 嗨,比格尔,
谢谢你的帮助,但不幸的是,我根本不擅长LISP。我需要一个更详细的例子,使我的工作。
我已经可以在VBA中循环浏览块定义的属性,只需要编辑我附加到原始帖子的图片中高亮显示的坐标。
您能在VBA或LISP中提供帮助吗?
同样在LISP中,我首先不知道如何创建集合块定义。(在某些属性上筛选集合)
谨致问候,
iTijn。 您好@iTijn,
我没有打开您的代码,但据我所知,如果在使用自己的属性创建块的过程中允许移动属性,则可以移动属性。
因此,即使在块对象属性中看到属性坐标,这(在我看来)并不意味着可以从定义的位置移动。
在任何情况下,下面是一个简单的测试代码
再见 只是个问题peterpan
A=对象。获取属性
MyAttCoord=A(0)。文本对齐点
如果一个块中有多个属性,则a没有计数,因此a(0)只是第一个属性,其余属性如何?在lisp示例中,我使用if标记字符串仅获取1个属性。只是对VBA不感兴趣。
是Cntr=0到A.Count-1吗
Myattcord=A(cntr)。文本对齐点 你好
代码只是一个示例,但当您从块中获取属性时,这些属性在任何情况下都存储在数组中,即使属性只是一个。
每个数组行将包含属性属性,例如文本位置、值或颜色等。
属性按与在块上创建的顺序相同的顺序存储到数组中。
嗨,比格尔,可能我回答得太快了。
当然,下一个数组行(A(1)、A(2)等)将包含下一个属性属性。
但是,如果在同一个变量上使用for下一个循环,则属性坐标将始终应用于同一个数组变量(MyAttCoord(0)、MyAttCoord(1)、MyAttCoord(2))。同样,上面的代码只是一个如何使用文本属性位置的示例。
再见
页:
[1]