当我更改attributeReference textString属性时,我的BlockReference的位置会发生变化吗?

时间:2015-06-26 14:03:42

标签: c# .net autocad

我已经使用方法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出现在期望的位置但是当它执行时,我发现位置变化和属性的值没有显示出来。

1 个答案:

答案 0 :(得分:0)

不确定如何深度克隆块引用,但您可能还需要转换(移动/旋转/缩放)属性。以下是帮助文件中的注释方法。

  

AttributeReference.SetAttributeFromBlock方法(Matrix3d)

     

将blockTransform应用于要转换的属性的几何数据   INSERT将要完成的位置,大小和倾斜   命令。保留属性的文本和实体属性数据   单独