Главная » Delphi, OLE, САПР » Документ, содержащий 3D-модель (сборку) – КОМПАС в DELPHI

0

Документ, содержащий 3D-модель или сборку (ksDocument3D)

Интерфейс ksDocument3D служит для описания документа, содержащего 3D-модель или сборку. Получить этот интерфейс можно двумя способами.

Первый способ: с помощью метода Document3D() интерфейса KompasObject. Данный метод не имеет входных параметров и возвращает интерфейс ksDocument3D.

Второй способ: с помощью метода ActiveDocument3D() интерфейса KompasObject. Данный метод не имеет входных параметров и возвращает интерфейс ksDocument3D текущего документа, содержащего 3D-модель или сборку. Если в системе КОМПАС нет активного документа, содержащего 3D-модель или сборку, данный метод вернет значение NULL. Поэтому будьте осторожны с этим методом.

Открытие существующей 3D модели (сборки)

Для открытия существующей 3D-модели (сборки) используется метод Open интерфейса ksDocument3D. Вот прототип этого метода.

Open(

const fileName: WideString; //Строка с именем открываемого файла

invisible: WordBool        //Признак видимости

): WordBool

filename определяет строку с именем открываемого документа.

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

В случае успеха метод Open возвращает значение TRUE.

Ниже приводится ключевой фрагмент исходного текста программы, демонстрирующей открытие существующего документа.

var

kompas: KompasObject; Document3D: ksDocument3D;

begin

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

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

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

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

//Открываем деталь

Document3D.Open(‘D:\Study\Деталь.m3d’,FALSE);

kompas.Visible:=true;

end;


Создание новой 3D-модели (сборки)

Для создания  новой 3D-модели (сборки) используется  метод Create интерфейса ksDocument3D. Вот прототип этого метода.

Create(

Visible: WordBool; //Видимость документа

typeDoc: WordBool //Тип документа

): WordBool;

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

Параметр typeDoc определяет тип создаваемого документа. Если его значение равно TRUE, то создается 3D-модель. Если же его значение равно FALSE, то создается сборка.

В случае успеха метод Create возвращает значение TRUE.

Ниже приводится ключевой фрагмент исходного кода программы, демонстрирующей создание новой 3D-модели (детали).

Var

kompas: KompasObject; Document3D: ksDocument3D;

begin

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

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

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

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

//Создаем деталь

Document3D.Create(FALSE,TRUE); kompas.Visible:=true;

end;

Закрытие 3D-модели (сборки)

Для закрытия документа, содержащего 3D-модель или сборку, используется метод Close() интерфейса ksDocument3D. Данный метод не имеет входных параметров и, в случае успеха, возвращает значение TRUE.

Будьте осторожны с этим методом, так как при его вызове изменения в документе не сохраняются.

Ниже приводится ключевой фрагмент исходного кода программы, демонстрирующей закрытие 3D-модели.

var

kompas: KompasObject; Document3D: ksDocument3D;

begin

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

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

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

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

//Создаем деталь

Document3D.Create(FALSE,TRUE);

//Делаем КОМПАС видимым, чтобы пользователь мог увидеть деталь

kompas.Visible:=true;

//Ждем 2 секунды (в течение них пользователь видит созданную деталь)

Sleep(2000);

//Закрываем документ с деталью

Document3D.close();

end;

Сохранение 3D-модели (сборки)

Для сохранения 3D-модели (сборки) используется метод SaveAs интерфейса ksDocument3D. В качестве единственного параметра данный метод принимает строку с наименованием файла, в котором следует сохранить 3D-модель (сборку).

В случае успеха метод SaveAs возвращает значение TRUE.

Ниже приводится ключевой фрагмент исходного кода программы, демонстрирующей сохранение 3D-модели.

var

kompas: KompasObject; Document3D: ksDocument3D;

begin

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

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

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

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

//Создаем деталь

Document3D.Create(FALSE,TRUE);

//Сохраняем созданную деталь

Document3D.SaveAs(‘D:\Study\Деталь2.m3d’);

//Закрываем документ с деталью

Document3D.Close();

//Завершаем работу КОМПАСа

kompas.Quit();

end;

Управление отображением 3D-модели (сборки)

Основная часть свойств интерфейса ksDocument3D позволяет настраивать отображение 3D-модели (сборки). Рассмотрим некоторые из этих свойств.

drawMode – тип отображения 3D-модели (сборки). Принимает одно из значений, перечисленных в таблице ниже.


Тип1

Числовое значение

Описание

Пример 3D-модели

vm_Wireframe

0

каркас

vm_HiddenRemoved

1

без невидмимых линий

vm_HiddenThin

2

невидимые линии тонкие

vm_Shaded

3

полутоновой

1 К сожалению, в модуле ksConstTLB  данные константы не представлены, поэтому здесь я привожу их числовые значения

hideAllPlaces – задает видимость начала координат. Если значение этого свойства равно TRUE, то начало координат невидимо, если же значение этого свойства равно FALSE, то начало координат видимо. На рисунке показано два отображения одной и той же 3D-модели при различных значениях данного свойства.

hideAllPlanes – задает видимость конструктивных (вспомогательных) плоскостей. Если значение этого  свойства равно TRUE, то плоскости  не видны. Если же значение этого свойства равно FALSE, то плоскости видны.

hideAllAxis – задает видимость конструктивных (вспомогательных) осей. Если значение этого свойства равно TRUE, то оси не видны. Если же значение этого свойства равно FALSE, то оси видны.

perspective – задает отображение 3D-модели (сборки) в перспективной проекции. Если значение данного свойства равно TRUE, то перспективная проекция включена, если же значение данного свойства равно FALSE, то перспективная проекция выключена. На рисунке ниже показано два отображения одной и той же 3D-модели при различных значениях этого

свойства. Для 3D-модели слева перспективная проекция выключена, а для 3D-модели справа перспективная проекция включена.

shadedWireframe – для полутонового изображения 3D-модели (сборки) включает отображение каркаса. Если значение данного свойства равно TRUE, то 3D-модель (сборка) отображается с каркасом, если же значение этого  свойства  равно  FALSE,  то  3D-модель  (сборка)  отображается  без

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

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

По теме:

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