Изменение видимости динамического блока

Автор Тема: Изменение видимости динамического блока  (Прочитано 501 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн zr74Автор темы

  • ADN OPEN
  • Сообщений: 47
  • Карма: 1
Добрый день всем!
Есть динамический блок у него есть таблица свойств блока "Таблица блоков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.  

Оффлайн alz

  • ADN OPEN
  • **
  • Сообщений: 95
  • Карма: 11
Что-то у вас как-то имхо переусложнено, я уже фиг знает сколько времени пользуюсь таким методом и проблемы были только с параметрами 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. }