Последние сообщения

Последние сообщения

Страницы: [1] 2 3 ... 10
1
В общем, вся проблема оказалась в том, что атрибут для первого состояния видимости отмечен в определении блока как постоянный.
Прилагаю файл. В нём есть блок "Т1". В котором 3 состояния видимости (0-1-2). Для 0 и 1 состояний атрибуты помечены как постоянные, для 2-го состояния атрибут не помечен как постоянный.
В таком виде, если ставить блок для всех состояний видимости следующим кодом, то всегда будет виден только ATTR1:
Извините, вам запрещён просмотр содержимого спойлеров.

Если все атрибуты сделать непостоянными, то вставка атрибутов будет происходить в соответствие с состоянием видимости блока.
2
Можно попробовать сменить состояние видимости на начальное, добавить атрибуты и вернуть то, которое было, возможно разнести на разные транзакции.
3
Выложите пример, двух состояний блока. Естакой вот с такими атрибутами, есть такой же но тут вот так и выдеы только эти атрибуты.
4
По пробовать возвращать свойство Visible  и проверять его.
не очень понял. В какой момент и у кого свойство visible проверять?

Тут фишка именно при создании нового вхождения блока (blockReferenct) нужно "восстановить" атрибуты. Но у моего определения блока некоторые атрибуты видны для определенного состояния видимости, а некоторые не видны. По факту же получается, что когда я создаю новые вхождения атрибутов для вхождения блока, у меня видимость атрибутов всегда соответствует только первому состоянию видимости в определении блока, а не текущему состоянию видимости вхождения блока.
Возможно код, указанный выше, не верный.
5
По пробовать возвращать свойство Visible  и проверять его.
6
Всем здравствуйте!
Есть блок. В нём заданы атрибуты. Эти атрибуты могут быть видны или не видны для разных состояний видимости.

Я создаю экземпляры атрибутов для нового экземпляра блока:
       
Код - C# [Выбрать]
  1.                      if (blockDef.HasAttributeDefinitions)
  2.                         {
  3.                             foreach (ObjectId id in blockDef)
  4.                             {
  5.                                 DBObject obj = trans.GetObject(id, OpenMode.ForRead);
  6.  
  7.                                 if (obj is AttributeDefinition attDef)
  8.                                 {
  9.                                     if (attDef.Tag == "Авария" || attDef.Tag == "Состояние") continue;
  10.                                     AttributeReference attRef = new AttributeReference();
  11.                                     attRef.SetAttributeFromBlock(attDef, blockRef.BlockTransform);
  12.                                     attRef.Position = attDef.Position.TransformBy(blockRef.BlockTransform);
  13.                                     attRef.SetDatabaseDefaults(targetDb);
  14.                                     blockRef.SetDatabaseDefaults(targetDb);
  15.                                     blockRef.AttributeCollection.AppendAttribute(attRef);
  16.                                     trans.AddNewlyCreatedDBObject(attRef, true);
  17.                                 }
  18.                             }
  19.                         }
Однако, получается, что те атрибуты, которые были не видны в самом первом состоянии видимости у определения блока, тут будут так же не видны.
Если перед созданием экземпляров атрибутов выставить состояние видимости блоку, это никак не повлияет на видимость атрибутов.

Есть ли изящный способ узнать, виден ли аттрибут или любой другой объект динамического блока для разных состояний видимости?
7
AutoLisp / VisualLISP и DCL / Re: блок из полилиний
« Последний ответ от altver 05-04-2025, 23:08:13 »
Спасибо!
8
AutoLisp / VisualLISP и DCL / Re: блок из полилиний
« Последний ответ от Александр Ривилис 04-04-2025, 00:39:59 »
Что я не так делаю???
Всё ты так делаешь. Так и задумано. Не каждая полилиния при разном масштабировании по X и Y может остаться полилинией. Представь себе полилинию с дуговыми сегментами. Дуга при таком масштабировании перестает быть дугой, а становится эллиптической дугой и не может быть сегментом полилинии.
9
AutoLisp / VisualLISP и DCL / блок из полилиний
« Последний ответ от altver 04-04-2025, 00:35:22 »
Добый день, господа!
Создал простой блок из полилиний, установил в чертеж, взорвал, получил полилинии, все отлично,
однако стоит изменить scale factor блока по Х и/или по У, то после взрыва блока взрываются и полилинии...
ПОЧЕМУ???
Что я не так делаю???
10
AutoLisp / VisualLISP и DCL / Re: свойства штрховки
« Последний ответ от altver 04-04-2025, 00:28:01 »
отлично!
 спасибо!
Страницы: [1] 2 3 ... 10