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

0

Параметры кинематической операции выдавливания (ksBaseEvolutionDefinition)

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

У интерфейса ksBaseEvolutionDefinition всего одно свойство.

sketchShiftType – задает характер движения сечения по траектории. Возможные значения данного свойства представлены в таблице ниже.

Значение

Описание

0

Сечение переносится параллельно самому себе.

1

Сечение при переносе сохраняет свой исходный угол с

траекторией.

2

Сечение выставляется ортогонально (перпендикулярно)

траектории. При переносе эта ортогональность сохраняется.

Рассмотрим основные методы интерфейса ksBaseEvolutionDefinition.

GetSketch() – возвращает интерфейс ksEntity, описывающий эскиз сечения.

PathPartArray() – возвращает интерфейс ksEntityCollection (см. главу 63), описывающий массив объектов ksEntity. Согласно документации КОМПАС элементами данного массива должны являться кривые, образующие траекторию, по которой перемещается сечение. Как показывает эксперимент, в качестве элемента такого массива может выступать объект эскиз, в котором в виде отрезков и кривых содержится траектория.

SetSketch – установить эскиз сечения. В качестве единственного параметра данный метод принимает интерфейс ksEntity, описывающий эскиз

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

Пример

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

const

pTop_Part = -1;

o3d_planeXOZ = 2;

o3d_planeYOZ = 3;

o3d_sketch  = 5;

o3d_baseEvolution = 45;

vm_Shaded = 3;

var

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

EntitySketch1, EntitySketch2: ksEntity; EntityPlaneYOZ,EntityPlaneXOZ:ksEntity; EntityEvolution: ksEntity;

EntityCollection: ksEntityCollection; SketchDefinition: ksSketchDefinition; Document2D : ksDocument2D;

BaseEvolutionDefinition: ksBaseEvolutionDefinition;

begin

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

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

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

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

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

Document3D.Create(FALSE,true);

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

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

//Получаем интерфейс объекта "плоскость YOZ" EntityPlaneYOZ:=ksEntity(Part.GetDefaultEntity(o3d_planeYOZ));

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

EntityPlaneXOZ:=ksEntity(Part.GetDefaultEntity(o3d_planeXOZ));

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

//Эскиз 1 (сечение)

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

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

EntitySketch1:=ksEntity(Part.NewEntity(o3d_sketch));

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

SketchDefinition:=ksSketchDefinition(EntitySketch1.GetDefinition());

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

SketchDefinition.SetPlane(EntityPlaneYOZ);

//Создаем эскиз

EntitySketch1.Create();

//Входим в режим редактирования эскиза

Document2D:=ksDocument2D(SketchDefinition.BeginEdit());

//Строим окружность

Document2D.ksCircle(-20,-20,20,1);

//Выходим из режима редактирования эскиза

SketchDefinition.EndEdit();

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

//Эскиз 2 (траектория)

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

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

EntitySketch2:=ksEntity(Part.NewEntity(o3d_sketch));

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

SketchDefinition:=ksSketchDefinition(EntitySketch2.GetDefinition());

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

SketchDefinition.SetPlane(EntityPlaneXOZ);

//Создаем эскиз

EntitySketch2.Create();

//Входим в режим редактирования эскиза

Document2D:=ksDocument2D(SketchDefinition.BeginEdit());

//Строим траекторию

Document2D.ksLineSeg(0,-20,30,-20,1); Document2D.ksArcByPoint(30,-40,20,30,-20,50,-40,-1,1);

Document2D.ksLineSeg(50,-40,50,-80,1);

//Выходим из режима редактирования эскиза

SketchDefinition.EndEdit();

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

//Кинематическая операция выдавливания

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

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

EntityEvolution:=ksEntity(Part.NewEntity(o3d_baseEvolution));

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

BaseEvolutionDefinition:=ksBaseEvolutionDefinition(EntityEvolution.GetDefinition());

//Тип движения

BaseEvolutionDefinition.sketchShiftType:=1;

//Устанавливаем эскиз сечения

BaseEvolutionDefinition.SetSketch(EntitySketch1);

//Получаем массив объектов

EntityCollection:=ksEntityCollection(BaseEvolutionDefinition.PathPartArray()); EntityCollection.Clear();

//Добавляем в массив эскиз с траекторией

EntityCollection.Add(EntitySketch2);

//Создаем операцию

EntityEvolution.Create();

end;

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

Document3D.drawMode:=vm_Shaded;

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

Document3D.shadedWireframe:=TRUE;

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

kompas.Visible:=true;

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

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

По теме:

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