块引用、属性和属性同步
我有一个应用程序,在其中我将块引用插入到文件空间中的辅助数据库中。如果块引用包含某些属性,那么我将使用计算文本填充属性。我遇到的问题是文本格式不正确,属性设置为中心对齐,但生成的属性不是。运行例程后,我打开创建的绘图并选择属性。文本说它是中心对齐的,但它不是以这种方式显示的。我可以在命令行执行属性同步,文本将捕捉到其正确的位置。所以我想我只需要在代码中同步属性,使用giles Brute force方法并尽可能多地跟踪所有链接,但没有太大成功。这是我用来将我的属性添加到块引用的代码,public静态ull AddAttie teReduce(此BlockReagedblock,Dicpedia属性值)。{。
如果(块引用==null)。
{。
抛出新的ArgumentNullException(“块参考”);。
}。
。
。
var事务=blockReference.Database.TransactionManager.TopTransaction;。
如果(事务==null)。
{。
抛出新的AcRx.Exception(ErrorStatus.NoActiveTransactions);。
}。
。
。
var block TableRecord=blockReference.BlockTableRecord.GetObject();。
var数据库=blockReference.Database;。
。
。
foreach(块表记录中的var对象ID)。
{。
如果(objectId.ObjectClass!=GlobalAcad.AttributeDefinitionClass)。
{。
继续;。
}。
。
。
使用(新的WorkingDatabase aseSwitcher(数据库))。
{。
var属性定义=objectId.GetObject();。
var属性引用=new属性引用();。
attributeReference.SetDatabaseDefaults(数据库);。
attributeReference.SetAttributeFromBlock(属性定义,blockReference.BlockTransform);。
如果(属性值!=null&&attributeValues.ContainsKey(attributeDefinition.Tag.ToUpper ()))。
{。
如果(attributeReference.IsMTextAttribute)。
{。
attributeReference.MTextAttribute.Contents=属性值;。
}。
其他。
{。
attributeReference.TextString=属性值;。
}。
。
。
如果(attributeDefinition.Justify!=AttachmentPoint.BaseLeft)。
{。
attributeReference.AlignmentPointattributeDefinition.AlignmentPoint.TransformBy(blockReference.BlockTransform)。
attributeReference.AdjustAlignment(数据库);。
}。
}。
。
。
blockReference.AttributeCollection.AppendAttribute(属性参考);。
transaction.AddNewlyCreatedDBObject(属性引用,真);。
}。
}。
}我尝试了许多不同的可能性,包括尝试设置位置等。然而,我所读到的所有内容都表明您只需要设置对齐点,然后调用调整对齐。这适用于我使用活动文档的其他应用程序,但由于某种原因我无法让它在侧数据库中工作。有人有其他想法吗?。
**** Hidden Message ***** 翻译错误代码(429):请求 QPS 超过限制。 翻译错误代码(429):请求 QPS 超过限制。
页:
[1]