Telegram: API Model Studio CS #7059

Учитывая что за полгода не могут пофиксить какие-то мелкие баги, то блог будет не посильной задачей

https://developer.nanocad.ru/ клуб разработчиков nanoCAD. ПО Model Studio не знаю есть ли такой форум.

Там про моделсутдио всё глухо

Я поэтому и написал, что про МС не знаю о таковом

Ок, постараюсь в ближайшие дни выложить выложил под MIT лицензией пример минимального плагина для Нанокад+MS.

Добрый день, помучают тогда тут сообщество по библиотеке для Трубопроводов (vCSViperCSObjCom 1.0 Type Library)

У интерфейса IWrSubSegment (Трубы в модели) есть поле
dynamic Insulation { get; set; }

И собственно вопрос а как присваивать set его?? По идее, это значит автоматически создать Изоляцию у объекта трубопровода …
Метода, создающего новый интерфейс WrInsulation нет, логика копирования его от другого элемента не работает, а логика new vCSViperCSObjComLib.WrInsulation() вообще крашит среду отладки и тоже, не работает … очень интересно зачем это введено в API если это не реализовано .. или как этим пользоваться? Я сколько смотрели у других приложений COM API, только тут натолкнулся на использование интерфейсов в режиме set.

Для начале надо копать ViperCSObjCom.idl. Строка :
[propput, id(112), helpstring(“Объект изоляции”)] HRESULT Insulation([in] IDispatch* newVal);
утверждает, что в set надо передать ссылку на интерфейс IDispatch существующего объекта.
Значит, необходимо как-то создать в пространстве чертежа объект изоляции, получить из него ссылку на интерфейс и уж эту ссылку передать в процедуту set. Есть ли всё это в API, ведомо только разработчикам…

Спасибо за комментарий, то есть условно создать изоляцию при её отсутствии невозможно, получается?

Создать как отдельный объект видимо нельзя … а используя например Copy() от чего-то существующего, она так не присваивается, уже пробовал

Иван Мишкин
Вас поблагодарили 4 раза

Добрый день, для интереса, вопросы по Cadlib API сюда же можно или где-то есть другая ветка?

Мне тут понадобился доступ к API по нему на С++ на импорт информационной модели из специфичного формата в базу данных, sdk к которому есть стабильное только на С++. Среди немногочисленных примеров из поставки зацепился за файл-пример mstApiTester (судя по дате от 2016 года), где используются “плюсовые” функции, но напрягает что в “Указаниях разработчику Cadlib” приводятся только методы c .NET … если кто пробовал, из-под C++ рабочее там всё?

И прямое ли это подключение (без COM)?, т.к. наличие там конструкций из ATL-библиотеки наводит на такие мысли, мне скорость обработки очень критична из-за очень громоздкой геометрии целевых файлов…

Добрый день. Может, конечно, не по адресу обращаюсь, но нигде больше про COM не увидел. Подскажите, как в запросе типа

object.elementaxis.element.Parameters.Item(“TECH_COMMODITY”).Value

обратиться к вложенному в объект подобъекту? Например, child(2)

Где вообще можно почитать описание построения запросов к COM, а то инструмент в мастере функций есть, а никто не знает, как им пользоваться.

к свойствам подчиненного объекта можно обратиться так:
object.Element.SubElements[“Параметризация”].Parameters[“L1”]
Только что проверил на отводе в МС, работает

По COM мануала тоже не видел, мб это где-то в материалах для разработчиков есть

Спасибо! А конкретизировать SubElement не нужно? Если у них, к примеру одинаковый набор атрибутов.

Eugene Pasko
Вас поблагодарили 5 раз

по идее, должна еще быть возможность обращаться к SubElement не по имени, а по индексу. На случай, если у объекта есть несколько подчиненных объектов с одинаковым именем. Но у меня что-то не получилось так сделать

2021_Model_Studio_CS_Коллекции_мастера_функций_.pdf

Есть вот такой мануал по функциям com

Можно по индексу обратиться

findMax(object.Element.SubElements.item(0).SubElements, item.Parameters[“PART_PIPE_DIAMETER”]/2) в примере

Жаль только, что в этой инструкции один и тот же объект, но с разными формулами. И формулы там обращаются к одним и тем же элементам внутри объекта. В моем примере обращение идёт к определенному типу обьекта типа “elementAXIS”. Было бы интересно узнать имена других типов объектов. Например, чтобы обратиться в параметре объекта к металлоконструкции. Хотя тут возникает другая сложность. Между объектом осевой и осевой (МС Трубопроводы, Техсхемы) существует некая зависимость. А вот между объектом осевой и металлоконструкцией нужно сначала эту зависимость как-то установить.