Georg Grebenyuk

Личный блог и информация по репозиториям


Project maintained by GeorgGrebenyuk Hosted on GitHub Pages — Theme by mattgraham

ModelStudio CS - формулы и COM. Часть 1

Обучающий материал по использованию COM-запросов (хотя, и не только их) в формулах параметров в среде ModelStudio CS (а также и в некоторых вертикальных приложениях Нанософт).

©Telegram: Contact @memestudiocs

1. Что ты такое?

В общем случае COM переводится как СлОмай Мозг - это технология обмена информацией между различными процессами в системе и своим появлением в контексте формул в среде ModelStudio CS обязана тем, что “формульный движок” позволяет использовать некоторые процедуры nanoCAD/AutoCAD & ModelStudio ActiveX (COM) API. Таким образом, задумай разработчики CSoft Development использовать LISP или Python, история могла бы пойти по иному варианту, и про COM никто бы не услышал, но … живём с тем, что есть :)

2. Знания - сила или о компетенциях

Пользователю, желающему освоить глубины некромантии автоматизации при помощи COM следует быть подкованым в вопросах:

3. О постулатах

Для стороннего человека, тем более не знакомого с разработкой, погружаться в COM будет тяжело, поэтому будет удобно перед начало погружения принять к сведению ряд фундаментальных понятий. Назовём их громко “постулатами”:

Примечание: некоторые типы объектов имеют внутренние параметры, не отображенные в диалоговом окне “Свойства объекта”

4. Виды COM-объектов

В объектной модели чертежа доступ через COM имеют материальные объекты, коллекции объектов, служебные объекты и некоторые прочие элементы. Что же к ним относятся – давайте разбираться.

Под материальными объектами будем понимать такие, что мы видим в модели или на листах – это любые объекты платформы nanoCAD (AutoCAD), описываемые COM-типом AcadEntity(отрезки, штриховки, параметрические объекты ModelStudio CS, видовые экраны и т.д.).

Коллекции объектов – это фиксированные типы объектов, содержащие в себе иные объекты. В nanoCAD (AutoCAD) это:

application.ActiveDocument.Database.Blocks

Примечание: Блоком в чертеже являются именованные пространства модели и листов, а также все определения “Вхождений блоков”;

application.ActiveDocument.Database.Dictionaries

Примечание: Словарем называется служебная ассоциативная коллекция данных раличных типов, доступная по строковому ключу. Далее мы будем активно работать с этими типами данных;

application.ActiveDocument.Database.DimStyles

application.ActiveDocument.Database.FileDependencies

application.ActiveDocument.Database.Groups

Примечание: Группой называют именованный набор объектов в модели или на листе;

application.ActiveDocument.Database.Layers

application.ActiveDocument.Database.Layouts

Примечание: В составе листов также есть и пространство модели. Эту коллекцию можно использовать для перебора всех объектов в модели;

application.ActiveDocument.Database.Linetypes

application.ActiveDocument.Database.Materials

application.ActiveDocument.Database.PlotConfigurations

application.ActiveDocument.Database.TextStyles

application.ActiveDocument.Database.UserCoordinateSystems

application.ActiveDocument.Database.Viewports

application.ActiveDocument.Database.Views

application.Documents

object.Hyperlinks

application.ActiveDocument.SelectionSets

В ModelStudio CS коллекцией является только набор параметров Element.Parameters.

Служебные объекты – XRecord, Layer и т.д. (не имеющие материального отображения и не являющиеся коллекцией) .

5. О структуре параметрического объекта

Мы уже оговорили, что любой параметрический объект [ModelStudio CS] имеет параметры. Со стороны формул доступ к ним осуществляется через свойство

=Element;

Перечень свойств и методов, какими обладает Element (из справки COM API).

Они же, доступные через встроенное окно вставки COM-функции.

//Способ 1
=object.Element.Parameters.Item("PART_GROUP");
//Способ 2 (показывает, что .Item по отношению к Parameters можно опустить)
=object.Element.Parameters("PART_GROUP");
//Способ 3
=object.Element.Parameters["PART_GROUP"];
//Способ 4
[PART_GROUP]

Все 4 способа (может, даже, есть ещё) возвратят верный результат. Последний вариант, правда, актуален только для данного элемента (то есть в первых трех вместо object можно было бы обратиться к другим элементам модели).

Обращение к целевому параметру ведется по его Внутреннему имени

Если имя имеет символы пробела, то оно должно заключаться в кавычки. Рекомендуется внутренние имена делать латиницей (регистр не важен) без пробелов и любых символов кроме нижнего подчеркивания.

6. Тестирование формул

Для апробации механики формул достаточно зайти в свойства любого объекта и создать\редактировать любой параметр. При этом важно помнить: