有一个带属性的块,其属性的默认值关联的是某个对象的值,使用下面代码插入时,属性会被改为文本类型,失去和对象的关联。
如下图,第一次插入的块是采用代码插入,关联对象的属性被破坏了;第二次是使用CAD内置命令插入的块,还保留着关联的属性。
不知是否有哪位知道如何解决这个问题。
' 添加块参照到模型空间或块表记录空间
Dim ms As BlockTableRecord = CType(trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite), BlockTableRecord)
ms.AppendEntity(blkRef)
trans.AddNewlyCreatedDBObject(blkRef, True)
' 处理块中的属性
Dim btr As BlockTableRecord = CType(trans.GetObject(btrId, OpenMode.ForRead), BlockTableRecord)
For Each objId As ObjectId In btr
Dim obj As DBObject = trans.GetObject(objId, OpenMode.ForRead)
If TypeOf obj Is AttributeDefinition Then
Dim attDef As AttributeDefinition = CType(obj, AttributeDefinition)
If Not attDef.Constant Then
' 创建属性并设置值
Dim attRef As New AttributeReference()
attRef.SetAttributeFromBlock(attDef, blkRef.BlockTransform)
' 添加属性到块参照
blkRef.AttributeCollection.AppendAttribute(attRef)
trans.AddNewlyCreatedDBObject(attRef, True)
End If
End If
Next