Главная » Delphi, OLE, САПР » Управление расположением детали в сборке – КОМПАС в DELPHI

0

Системы координат

При работе с документом-сборкой мы имеем дело минимум с двумя системами координат: глобальной и локальной. Причем локальных систем координат обычно несколько.

Глобальная система координат представляет собой систему координат самой сборки. Она не привязана к какой-либо детали и ее положение не может быть изменено.

Локальная система координат представляет собой систему координат отдельной детали. Каждая деталь имеет свою локальную систему координат и жестко привязана к ней. Для большей ясности взгляните на рисунок ниже.

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

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

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

На этом и основывается изменение положения детали в сборке. Мы перемещаем (поворачиваем) не саму деталь, а ее локальную систему координат.

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

Положение локальной системы координат (ksPlacement)

Положение локальной системы координат описывается с помощью интерфейса ksPlacement.  Получить  его можно с помощью метода GetPlacement() интерфейса ksPart. Свойств  у интерфейса ksPlacement нет. Рассмотрим основные его методы.

SetOrigin – устанавливает новое положение центра локальной системы координат. Ниже представлен прототип этого метода.

SetOrigin(

x: Double;

y: Double; z: Double

): WordBool;

Все три параметра этого метода представляют собой новые координаты центра локальной системы координат детали. Координаты задаются в глобальной системе координат.

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

GetOrigin – позволяет получить координаты центра локальной системы координат детали в глобальной системе  координат. Данный метод имеет такой же прототип что и метод SetOrigin с той лишь разницей, что ко всем параметрам применен квалификатор var. В случае успеха метод GetOrigin возвращает значение TRUE.

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

SetAxes(

Xx: Double;

Xy: Double; Xz: Double; Yx: Double; Yy: Double; Yz: Double

): WordBool;

Параметры Xx, Xy и Xz представляют собой координаты точки, через которую проходит и в сторону которой направлена координатная ось Ox локальной системы координат.

Параметры Yx,Yy и Yz представляют собой координаты точки, через которую проходит и в сторону которой направлена координатная ось Oy локальной системы координат.

Направление координатной оси Oz  определяется из направлений координатных осей Ox и Oy автоматически самой системой КОМПАС.

Все координаты данного метода задаются в локальной системе координат детали.

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

SetAxis – позволяет задать направление одной из координатных осей (либо Ox, либо Oy). Ниже представлен прототип этого метода.

SetAxis(

x: Double; y: Double; z: Double;

type_: Integer    //Признак оси

): WordBool;

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

Параметр type_ указывает на то, направление какой координатной оси (Ox или Oy) мы меняем. Если значение этого параметра равно нулю, то мы изменяем направление оси Ox. Если же значение этого параметра больше нуля, то мы меняем направление оси Oy. Другие значения этого параметра в

документации не описаны.

Координаты точки задаются в глобальной системе координат. В случае успеха данный метод возвращает значение TRUE.

GetAxis – позволяет получить направление заданной координатной оси. Данный метод имеет тот же прототип, что и метод SetAxis но с двумя отличиями: 1) к параметрам x,y и z применен квалификатор var; 2) расширены допустимые значения параметра type_.

Если значение параметра type_ равно нулю, то мы запрашиваем направление оси Ox. Если значение параметра type_ равно единице, то мы запрашиваем направление оси Oy. Если же значение параметра type_ больше единицы, то мы запрашиваем направление оси Oz.

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

С расположением локальной системы координат также связан еще один важный метод интерфейса ksPart.

UpdatePlacement() –  обновляет расположение детали. Данный метод

нужно вызывать после любого изменения в расположении детали.

Пример 1. Перемещение детали

Для перемещения детали достаточно изменить координаты центра локальной системы координат детали.

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

const

pTop_Part = -1;

vm_Shaded = 3;

var

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

Placement: ksPlacement; path: string;

begin

path:=’D:\Study\Деталь1.m3d';

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

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

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

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

//Создаем сборку

Document3D.Create(FALSE,FALSE);

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

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

//Добавляем модель в сборку

Document3D.SetPartFromFile(path,Part,TRUE);

//Получаем интерфейс добавленной модели в сборке Part:=ksPart(Document3D.GetPart(0));

//Получаем интерфейс расположения модели Placement:=ksPlacement(Part.GetPlacement());

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

Placement.SetOrigin(20,20,20);

//Обновляем расположение модели

Part.UpdatePlacement();

//Перерисовываем сборку

Document3D.RebuildDocument();

end;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

Обратите внимание, что локальная система координат детали как и сама деталь смещена относительно глобальной системы координат.

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

По теме:

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