Задание напряжения и количества полюсов электрической цепи

Автор Тема: Задание напряжения и количества полюсов электрической цепи  (Прочитано 2801 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • Сообщений: 35
  • Карма: 2
Добрый день. Есть ли возможность задать напряжение и количество полюсов при создании (либо после создания) электрической цепи? Использовал метод
ElectricalSystem.Create(Connector, ElectricalSystemType). Цепь создается, но напряжение равно 0, а свойства Voltage и PolesNumber доступны только для чтения.
Использовал код для создания цепи:
 
Код - C# [Выбрать]
  1. FilteredElementCollector collector = new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_ElectricalFixtures);
  2.                 IList<Element> instances = collector.ToElements();
  3.                 //находим не подключенный элемент
  4.                 FamilyInstance fi = (from elem in instances
  5.                                      let fielem = elem as FamilyInstance
  6.                                      let mep = fielem?.MEPModel
  7.                                      where mep != null && mep.ElectricalSystems == null && mep?.ConnectorManager?.Connectors!=null
  8.                                      select fielem).FirstOrDefault();
  9.                 if(fi!=null)
  10.                 {
  11.                     foreach(Connector con in fi.MEPModel.ConnectorManager.Connectors)
  12.                     {                        
  13.                         if(con.Domain==Domain.DomainElectrical && con.ElectricalSystemType==ElectricalSystemType.PowerCircuit)
  14.                         {
  15.                             using (Transaction t = new Transaction(doc, "ChangeWallTypeJoin"))
  16.                             {
  17.  
  18.                                 t.Start();
  19.                                 ElectricalSystem el=ElectricalSystem.Create(con, ElectricalSystemType.PowerCircuit);                              
  20.                                 t.Commit();
  21.                                 if (el != null)
  22.                                 {
  23.                                     TaskDialog.Show("info", $"Цепь была создана {el.Name} напряжение {el.Voltage}");
  24.                                 }
  25.                             }
  26.                         }
  27.                     }
  28.                 }

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Эм, так это у тебя семейство такое. Эти параметры в свойстве электрического соединителя внутри семейства задаются.

Чисто для проверки набросал:



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

  • ADN OPEN
  • Сообщений: 35
  • Карма: 2
Я читал, что это от соединителя зависит, но не могу понять что с этим семейством не так. Напряжение у семейства задано параметрами экземпляра, связанными с параметрами соединителя (см. скриншот)
 И когда средствами Revit создается цепь проблемы нет. Другие соединители в семействе не электрические.


Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
На вскидку (по скриншоту судя) - задаёшь неправильный ElectricalSystemType



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

  • ADN OPEN
  • Сообщений: 35
  • Карма: 2
А когда убрал привязку параметра экземпляра семейства к коннектору, и забил руками в коннекторе напряжение, все сработало как надо. А есть возможность обойти это ограничение. Просто стоит задача создавать цепи для семейств. Но у нас почти во всех семействах характеристики коннектора связаны с параметрами экземпляра.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Насчёт ElectricalSystemType я, по-видимому, не прав.

У нас тоже на параметры завязано. Работает всё...



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

  • ADN OPEN
  • Сообщений: 35
  • Карма: 2
У Вас наверное завязано на параметр типа а не экземпляра. Я поменял на параметр типа-все заработало, поменял обратно-перестало работать. Походу это проблема чисто при привязке к параметру экземпляра. Видимо этот вопрос уже поднимался в теме: https://forums.autodesk.com/t5/revit-api-forum/newelectricalsystem-specify-voltage-amp-poles/td-p/6293992     Я просто подумал может есть какое-то решение

Отмечено как Решение Ksarrik 19-05-2021, 16:35:26

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Да с параметрами инстанса всё не очень здорово.

Решение, как мне кажется, есть, но не красивое. Заведи служебное семейство с настройками напряжения в типоразмере. При необходимости загружаешь его в проект, настраиваешь значения параметров в типоразмере, создаешь FamilyInstance этого типа, из его коннектора - ElectricalSystem, потом удаляешь созданный FamilyInstance из этой системы и подчищаешь проект - удаляешь загруженное вложенное семейство.

Это для одного, для всех неподключенных, конечно, желательно предварительно сгруппировать так, чтобы лишний раз не загружать семейства/создавать экземпляры.

Ну и желательно проверить, что всю эту мороку делать нужно, т.е. из коннектора получить GetMEPConnectorInfo, привести к MEPFamilyConnectorInfo, получить связанные параметры семейства методом GetConnectorParameterValue и выяснить, являются ли они параметрами семейства или типоразмера.

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

  • ADN OPEN
  • Сообщений: 35
  • Карма: 2
Спасибо. Попробую такое решение