Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: zr74 от 02-09-2024, 19:52:29

Название: Изменение видимости динамического блока
Отправлено: zr74 от 02-09-2024, 19:52:29
Добрый день всем!
Есть динамический блок у него есть таблица свойств блока "Таблица блоков1", есть параметр видимости "Вид аппарата".
Пытаюсь программно поменять видимость блока. Через таблицу свойство блока не смог, так как values.Lehgth для неё равняется нулю.
Через параметр видимости выдает ошибку. Что не так с моим кодом?. Прилагаю файл с динамическим блоком и скан ошибки.
Код - C# [Выбрать]
  1. DynamicBlockReferencePropertyCollection props = br.DynamicBlockReferencePropertyCollection;
  2. foreach (DynamicBlockReferenceProperty prop in props)
  3. {
  4.     object[] values = prop.GetAllowedValues();
  5.  
  6.     if (prop.PropertyName == "Длина фазы" && !prop.ReadOnly)
  7.     {
  8.         prop.Value = Convert.ToDouble(findGroup.Count * 28 * mas_tek);
  9.     }
  10.  
  11.     if (block_Name == "ЭОМ_Схемы_Аппарат защиты отходящий")
  12.     {
  13.         if (prop.PropertyName == "Вид аппарата" && !prop.ReadOnly)
  14.         {                            
  15.             for (int i = 0; i < values.Length; i++)
  16.             {
  17.                 //ed.WriteMessage("\nvalues[{0}] = {1}", i, values[i].ToString());
  18.                 if (values[i].ToString().Contains("Автомат_1P_L+N+PE"))
  19.                 {
  20.                     prop.Value = values[i];
  21.                     break;
  22.                 }
  23.                 else
  24.                 {
  25.                     continue;
  26.                 }
  27.             }
  28.         }            
  29.     }
  30.   }
  31.  
Название: Re: Изменение видимости динамического блока
Отправлено: alz от 03-09-2024, 11:07:52
Что-то у вас как-то имхо переусложнено, я уже фиг знает сколько времени пользуюсь таким методом и проблемы были только с параметрами Origin, все никак не хватает времени разобраться что это за хрень.
Код - C# [Выбрать]
  1. public static void SetBlockreferenceProperties(this BlockReference reference, Dictionary<string, object> properties)
  2. {          
  3.     DynamicBlockReferencePropertyCollection collection = reference.DynamicBlockReferencePropertyCollection;
  4.     foreach (DynamicBlockReferenceProperty property in collection)
  5.     {
  6.         try
  7.         {
  8.             if (properties.ContainsKey(property.PropertyName) && !property.PropertyName.Contains("Origin")) property.Value = properties[property.PropertyName];
  9.  
  10.         } catch { }
  11.     }
  12. }