悬赏已过期 后悬赏过期
悬赏

插入带特殊属性的块的问题

邀请:

有一个带属性的块,其属性的默认值关联的是某个对象的值,使用下面代码插入时,属性会被改为文本类型,失去和对象的关联。

如下图,第一次插入的块是采用代码插入,关联对象的属性被破坏了;第二次是使用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
收藏0
分享
您的回答

回答

默认排序 时间排序
图片审查中...
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
复制链接
微信扫码
已复制到剪贴板