Главная » Delphi, OLE, САПР » Параметризованная 3D-модель – КОМПАС в DELPHI

0

Переменная (ksVariable)

Интерфейс ksVariable используется для описания отдельно взятой переменной. Рассмотрим свойства этого интерфейса.

name – строка с именем переменной.

note – строка с комментарием к переменной.

value – значение переменной. Методов у интерфейса ksVariable нет.

Массив внешних переменных (ksVariableCollection)

Интерфейс ksVariableCollection служит для описания массива внешних переменных 3D-модели. Его возвращает метод VariableCollection() интерфейса ksPart. В этот массив попадают только внешние переменные. Свойств у интерфейса ksVariableCollection нет. Поэтому сразу переходим к рассмотрению его основных методов.

First() – возвращает интерфейс ksVariable первой переменной в этом массиве.

GetByIndex – позволяет получить интерфейс ksVariable, описывающий внешнюю переменную с заданным индексом. Нумерация переменных начинается   с    нуля.    Порядковый    номер   запрашиваемой   переменной

передается в качестве единственного параметра метода.

GetByName – позволяет получить интерфейс ksVariable, описывающий внешнюю переменную с заданным наименованием (свойством name). Ниже представлен прототип этого метода.

GetByName(

const name: WideString;  //имя переменной

testFullName: WordBool;  //это полное наименование?

testIgnoreCase: WordBool //нужно ли учитывать регистр?

): IDispatch;

Параметр name задает строковое имя переменной, которую мы ищем.

Параметр testFullName указывает, является ли наименование, указанное в значении параметра name, полным или частичным наименованием переменной, которую мы хотим найти. Если значение параметра testFullName равно TRUE, то параметр name содержит полное наименование переменной. Если же значение параметра testFullName равно FALSE, то параметр name содержит часть полного имени переменной.

Параметр testIgnoreCase указывает, нужно ли учитывать регистр букв при поиске переменной. Если  значение этого  параметра равно TRUE, то регистр букв не учитывается. Если же его значение равно FALSE, то регистр букв в имени переменной учитывается.

GetCount() – возвращает количество переменных в массиве.

Last() – возвращает интерфейс ksVariable, описывающий последнюю переменную в массиве.

Next() – возвращает интерфейс ksVariable, описывающий следующую переменную в массиве.

Prev() – возвращает интерфейс ksVariable, описывающий предыдущую переменную в массиве.

Refresh() – отменяет все изменения, сделанные с переменными в данном массиве после последнего вызова метода RebuildModel() интерфейса ksPart.

Пример

Рассмотрим пример взаимодействия с параметризованной 3D-моделью. Допустим, у нас есть параметризованная деталь как на рисунке ниже.

У этой детали две внешних переменных: «D» – диаметр основания; и

«H» – высота цилиндра. Ниже представлен ключевой фрагмент исходного текста программы, демонстрирующей взаимодействие с этой моделью.

const

pTop_Part = -1;

vm_Shaded = 3;

var

kompas: KompasObject; Document3D: ksDocument3D; Part: ksPart;

VariableCollection: ksVariableCollection;

Variable: ksVariable;

begin

//Подключаемся к КОМПАСу

kompas:=KompasObject(CreateOleObject(‘Kompas.Application.5′));

//Получаем интерфейс документа-модели

Document3D:=ksDocument3D(kompas.Document3D());

//Открываем документ-модель

Document3D.Open(‘D:\Study\ПараметризованнаяДеталь.m3d’,FALSE);

//Получаем интерфейс компонента

Part:= ksPart(Document3D.GetPart(pTop_Part));

//Получаем массив переменных модели

VariableCollection:=ksVariableCollection(Part.VariableCollection());

//Изменяем значение первой переменной

Variable:=ksVariable(VariableCollection.GetByName(‘D’,TRUE,TRUE)); Variable.value:=100;

//Изменяем значение второй переменной

Variable:=ksVariable(VariableCollection.GetByName(‘H’,TRUE,TRUE)); Variable.value:=10;

//Перестраиваем модель

Part.RebuildModel();

//Перерисовываем документ

Document3D.RebuildDocument();

end;

//Устанавливаем полутоновое отображение модели

Document3D.drawMode:=vm_Shaded;

//Включаем отображение каркаса

Document3D.shadedWireframe:=TRUE;

//Делаем КОМПАС видимым

kompas.Visible:=true;

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

Источник: Норсеев Сергей, «РАЗРАБОТКА ПРИЛОЖЕНИЙ ПОД КОМПАС В DELPHI»

По теме:

  • Комментарии