Всем здравствуйте!
Есть блок. В нём заданы атрибуты. Эти атрибуты могут быть видны или не видны для разных состояний видимости.
Я создаю экземпляры атрибутов для нового экземпляра блока:
if (blockDef.HasAttributeDefinitions)
{
foreach (ObjectId id in blockDef)
{
DBObject obj = trans.GetObject(id, OpenMode.ForRead);
if (obj is AttributeDefinition attDef)
{
if (attDef.Tag == "Авария" || attDef.Tag == "Состояние") continue;
AttributeReference attRef = new AttributeReference();
attRef.SetAttributeFromBlock(attDef, blockRef.BlockTransform);
attRef.Position = attDef.Position.TransformBy(blockRef.BlockTransform);
attRef.SetDatabaseDefaults(targetDb);
blockRef.SetDatabaseDefaults(targetDb);
blockRef.AttributeCollection.AppendAttribute(attRef);
trans.AddNewlyCreatedDBObject(attRef, true);
}
}
}
Однако, получается, что те атрибуты, которые были не видны в самом первом состоянии видимости у определения блока, тут будут так же не видны.
Если перед созданием экземпляров атрибутов выставить состояние видимости блоку, это никак не повлияет на видимость атрибутов.
Есть ли изящный способ узнать, виден ли аттрибут или любой другой объект динамического блока для разных состояний видимости?