请教 如何用Pycad提取一个已经设置好的 属性块
请请教,我在dwg文件内已经设置好一个 属性块,如何用Pycad代码来提取属性块,并赋予相应的属性参数呢?有大神能给我简单的代码案例吗?谢谢我自己提取的属性块,没有属性值,不知道怎么赋予进去参数值。
我暂时写的代码如下,里面关于 属性的赋予,我有点迷糊,还请各路大神,指导一二。
@command()
def cp_block(doc):
""""
+ 获取布置块,并判断块是否是 属性块
"""
with dbtrans(doc) as tr:
while True:
block_entity = edx.entsel(message="\n选择布置块(动态块)。")
if block_entity.cancel(): return
elif block_entity.error(): continue
sel_obj = tr.getobject(block_entity.ObjectId)
if not isinstance(sel_obj, acdb.BlockReference):
print('\n选择的物体不是块。')
continue
print("选择的块:%s" % (sel_obj.Name))
break
record = sel_obj.ObjectId.GetObject(acdb.OpenMode.ForRead).BlockTableRecord
flag_block_has_attritube = record.HasAttributeDefinitions # 判断块是否是有属性块
# 获取 块 当前的所有属性值
if flag_block_has_attritube:
attribute_collection = sel_obj.AttributeCollection
"""
# 布置块
# 提取 数据库中的当前选择的块,并赋予属性 和 粘贴到相应的位置
"""
#假设布置的点如下
archer_list = [(0, 0, 0), (100, 100, 0)]
with dbtrans(doc) as tr:
sel_block = tr.getobject(block_entity.ObjectId)
block_cp = tr.addblock(sel_block.Name)
for i in range(len(archer_list)):
bref = acdb.BlockReference(acge.Point3d.Origin, block_cp)# position, bt
print(u"插入块: " + str(bref.Name))
btr = tr.opencurrspace()
tr.addentity(btr, bref)
"""
# 此处 不知道如何 将之前的属性 赋予到这个 新的块中!!!!
"""
if flag_block_has_attritube:
block_Attritube = bref.AttributeCollection
bref.Position = acge.Point3d(archer_list)
学习学习 . python就别指望能找到教程了 已我用ifox的经验,有一个insertblock函数,可以通过字典在插入的时候直接设置属性值 d1742647821 发表于 2023-2-9 18:15
python就别指望能找到教程了
所以发出来,看看有没有有兴趣的人 交流交流。 pycad不知道,pywin32可以用 GetAttributes() 方法获取属性 然后修改TextString的值, 属性块动态块操作,读取Excel - AutoCAD.net/VB.net/C# 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz!
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=187136&highlight=pycad 枫叶棋语 发表于 2023-2-12 12:12
属性块动态块操作,读取Excel - AutoCAD.net/VB.net/C# 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered...
非常感谢分享的示例
页:
[1]