Главная » Delphi, OLE, САПР » Ось на пересечении двух плоскостей – КОМПАС в DELPHI

0

Параметры оси на пересечении двух плоскостей (ksAxis2PlanesDefinition)

Параметры оси, образованной в результате пересечения двух плоскостей описываются интерфейсом ksAxis2PlanesDefinition. Его возвращает метод GetDefinition() интерфейса ksEntity. Свойств у интерфейса ksAxis2PlanesDefinition нет. Рассмотрим его основные методы.

GetPlane – возвращает интерфейс ksEntity, описывающий одну из пересекающихся  плоскостей.  Номер  запрашиваемой  плоскости  (1  или  2)

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

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

SetPlane(

number: Integer;     //Номер устанавливаемой плоскости (1 или 2) const plane: IDispatch//Интерфейс ksEntity устанавливаемой плоскости

): WordBool;

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

Пример 1

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

В данном примере ось совпадает с координатной осью OY.

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_planeYOZ = 3;

o3d_axis2Planes = 9;

var

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

EntityPlaneXOY, EntityPlaneYOZ: ksEntity; EntityAxis: ksEntity;

Axis2PlanesDefinition: ksAxis2PlanesDefinition;

begin

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

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

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

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

//Создаем документ-модель

Document3D.Create(FALSE,true);

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

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

//Получаем интерфейс объекта "плоскость XOY"

EntityPlaneXOY:=ksEntity(Part.GetDefaultEntity(o3d_planeXOY));

//Получаем интерфейс объекта "плоскость YOZ"

EntityPlaneYOZ:=ksEntity(Part.GetDefaultEntity(o3d_planeYOZ));

//////////////////////////////////////////////

//Ось, как результат пересечения двух плоскостей

//////////////////////////////////////////////

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

EntityAxis:=ksEntity(Part.NewEntity(o3d_axis2Planes));

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

Axis2PlanesDefinition:=ksAxis2PlanesDefinition(EntityAxis.GetDefinition());

//Устанавливаем первую плоскость

Axis2PlanesDefinition.SetPlane(1,EntityPlaneXOY);

//Устанавливаем вторую плоскость

Axis2PlanesDefinition.SetPlane(2,EntityPlaneYOZ);

//Создаем ось

EntityAxis.Create();

end;

//Делаем оси видимыми

Document3D.hideAllAxis:=FALSE;

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

kompas.Visible:=true;

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

Пример 2

Теперь рассмотрим чуть более сложный пример, в котором ось не совпадает ни с одной из координатных осей. Для построения такой оси, мы будем использовать смещенную плоскость (см. главу 55), параллельную плоскости YOZ.

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

const

pTop_Part = -1;

o3d_planeXOY = 1;

o3d_planeYOZ = 3;

o3d_planeOffset = 14;

o3d_axis2Planes = 9;

var

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

EntityPlaneXOY, EntityPlaneYOZ,EntityPlaneOffset: ksEntity; EntityAxis: ksEntity;

PlaneOffsetDefinition: ksPlaneOffsetDefinition; Axis2PlanesDefinition: ksAxis2PlanesDefinition;

begin

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

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

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

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

//Создаем документ-модель

Document3D.Create(FALSE,true);

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

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

//Получаем интерфейс объекта "плоскость XOY"

EntityPlaneXOY:=ksEntity(Part.GetDefaultEntity(o3d_planeXOY));

//Получаем интерфейс объекта "плоскость YOZ"

EntityPlaneYOZ:=ksEntity(Part.GetDefaultEntity(o3d_planeYOZ));

//////////////////////////////////////////////

//Смещенная плоскость

/////////////////////////////////////////////

//Получаем интерфейс объекта "смещенная плоскость"

EntityPlaneOffset:=ksEntity(Part.NewEntity(o3d_planeOffset));

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

PlaneOffsetDefinition:=ksPlaneOffsetDefinition(EntityPlaneOffset.GetDefinition());

//Направление смещения – обратное

PlaneOffsetDefinition.direction:=FALSE;

//Смещение

PlaneOffsetDefinition.offset := 20;

//Устанавливаем базовую плоскость

PlaneOffsetDefinition.SetPlane(EntityPlaneYOZ);

//Создаем смещенную плоскость

EntityPlaneOffset.Create();

//////////////////////////////////////////////

//Ось, как результат пересечения двух плоскостей

//////////////////////////////////////////////

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

EntityAxis:=ksEntity(Part.NewEntity(o3d_axis2Planes));

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

Axis2PlanesDefinition:=ksAxis2PlanesDefinition(EntityAxis.GetDefinition());

//Устанавливаем первую плоскость

Axis2PlanesDefinition.SetPlane(1,EntityPlaneXOY);

//Устанавливаем вторую плоскость

Axis2PlanesDefinition.SetPlane(2,EntityPlaneOffset);

//Создаем ось

EntityAxis.Create();

end;

//Делаем плоскости невидимыми Document3D.hideAllPlanes:=TRUE;

//Делаем оси видимыми

Document3D.hideAllAxis:=FALSE;

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

kompas.Visible:=true;

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

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

По теме:

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