- 积分
- 654
- 明经币
- 个
- 注册时间
- 2022-8-31
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2023-2-8 18:56:03
|
显示全部楼层
我暂时写的代码如下,里面关于 属性的赋予,我有点迷糊,还请各路大神,指导一二。
- @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[i])
复制代码
|
|