我已经使用方法WblockCloneObjects方法将第一个文件dwg中的blockReference复制到现有文件中。我已经设置了这个blockReference的位置,它运行正常。
问题是当我更改attributeReference textString属性时,我的blockReference更改了位置,并且该属性的值在blockReference中不可见。
这是我的代码:
private bool SetIssueNumber(Transaction toTransaction, BlockReference deepClonedIssue, string identifier)
{
//Get the attributeCollection
Autodesk.AutoCAD.DatabaseServices.AttributeCollection attrCollection = deepClonedIssue.AttributeCollection;
//Get the object
foreach (ObjectId idAttrReference in attrCollection)
{
AttributeReference attributeReference =
toTransaction.GetObject(idAttrReference, OpenMode.ForWrite) as AttributeReference;
if (attributeReference == null)
return false;
if (attributeReference.Tag.Equals("ISSUENUMBER"))
{
attributeReference.TextString = identifier;
return true;
}
}
return false;
}
当我删除时:
attributeReference.TextString = identifier;
blockReference出现在期望的位置但是当它执行时,我发现位置变化和属性的值没有显示出来。
答案 0 :(得分:0)
不确定如何深度克隆块引用,但您可能还需要转换(移动/旋转/缩放)属性。以下是帮助文件中的注释方法。
AttributeReference.SetAttributeFromBlock方法(Matrix3d)
将blockTransform应用于要转换的属性的几何数据 INSERT将要完成的位置,大小和倾斜 命令。保留属性的文本和实体属性数据 单独