Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Рис. 6.15. Настройки операции выдавливания на панели свойств

Программно это все реализуется следующим образом (листинг 6.2).

Листинг 6.2. Получение интерфейсов операции выдавливания и ее параметров

// iPart – указатель на объект класса ksPart,

// верхний элемент дерева построения детали

// создание интерфейса операции выдавливания

// с помощью метода ksPart::NewEntity,

// которому передаем идентификатор o3d_bossExtrusion

iBossExtrusion := ksEntity(iPart.NewEntity(o3d_bossExtrusion));

if (iBossExtrusion <> nil) then

begin

//

если создание прошло успешно

// инициализируем интерфейс настроек операции выдавливания

iBossDef := ksBossExtrusionDefinition(iBossExtrusion.GetDefinition);

if (iBossDef <> nil) then

begin

end;

end;

Несколько замечаний. Данный фрагмент кода будет работать лишь в версиях КОМПАС-3D V8 Plus или выше, поскольку в этих версиях появилась возможность многотельного моделирования. При написании программ для более ранних версий КОМПАС, в качестве первой (подчеркиваю – лишь первой) операции выдавливания вместо константы типа o3d_bossExtrusіon следует использовать o3d_baseExtrusіon, то есть базовую операцию выдавливания (так как в КОМПАС-3D V8 и более ранних версиях в детали могло быть лишь одно тело, имеющее общую базовую формообразующую операцию). Для всех следующих операций нужно применять o3d_bossExtrusіon, как и в КОМПАС-3D V8 Plus и более поздних версиях. Еще одно отличие версии КОМПАС-3D V8 Plus от предыдущих состоит в названии класса для получения определения интерфейса (параметров операции). При многотельном моделировании можно сразу использовать ksBossExtrusіonDefіnіtіon, в более ранних версиях КОМПАС первым всегда должен применяться интерфейс ksBaseExtrusіonDefіnіtіon, а все следующие за ним – ksBossExtrusіonDefіnіtіon. Это, тем не менее, не приводит к серьезным усложнениям, так как методы и свойства этих двух классов идентичны.

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

Совет

Даже если вы создаете плагин для версии КОМПАС-3D V8 Plus или выше, все равно желательно не забывать о первой операции, как о базовой. Мало ли в какой версии КОМПАС будут работать пользователи с вашей программой.

Теперь рассмотрим параметры операции выдавливания и способы их настройки.

1. Направление выдавливания в КОМПАС выбирается из раскрывающегося списка Направление на панели свойств (рис. 6.16).

Рис. 6.16. Выбор направления операции выдавливания

Программным аналогом направления является свойство directionType (тип – SmallInt) интерфейса ksBossExtrusіonDefіnіtіon (или ksBaseExtrusіonDefіnіtіon). Для него предопределены четыре значения:

• dtNormal (прямое направление) – направление добавления материала совпадает с направлением нормали к базовой плоскости (то есть плоскости, в которой размещается эскиз выдавливания);

• dtReverse (обратное направление) – направление выдавливания противоположно направлению нормали;

• dtBoth (в оба направления) – величина выдавливания задается отдельно для каждого направления;

• dtMіddlePlane (средняя плоскость) – выдавливание происходит

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

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

Листинг 6.3. Задание направления выдавливания

iBossExtrusion := ksEntity(iPart.NewEntity(o3d_bossExtrusion));

if (iBossExtrusion <> nil) then

begin

iBossDef := ksBossExtrusionDefinition(iBossExtrusion.GetDefinition);

if (iBossDef <> nil) then

begin

// задаем направление выдавливания

iBossDef.directionType := dtNormal;

end;

end;

2. Способ выдавливания (рис. 6.17).

Рис. 6.17. Выбор способа выдавливания

Для этого типа настроек в API системы также предусмотрены константы:

• etBlіnd (на расстояние) – проводит выдавливание на величину, заданную в поле Расстояние 1 (или Расстояние 2, если задано направление dtReverse или dtBoth);

• etThroughAll (через все) – при наличии другой геометрии (других формообразующих операций) выдавливание происходит через все тело детали; значение величины выдавливания игнорируется;

• etUpToVertexTo, etUpToVertexFrom (до вершины) – система переходит в режим ожидания указания пользователем вершины, до которой будет осуществлено выдавливание. Введенное значение величины выдавливания игнорируется. В программе эту вершину следует задать явно еще на этапе разработки проекта;

• etUpToSurfaceTo, etUpToSurfaceFrom (до поверхности) – аналогично режиму построения до вершины, в данном режиме система ожидает выбора пользователем трехмерной поверхности. Значение величины выдавливания также игнорируется. Как и для вершины, плоскость в программе следует указывать явно;

• etUpToNearSurface (к ближайшей поверхности) – выдавливание проводится к ближайшей поверхности, которую система автоматически определяет в направлении выдавливания.

3. Расстояние выдавливания – вводится пользователем в соответствующем текстовом поле (полях).

4. Угол наклона операции выдавливания. На панели свойств задается направление наклона (внутрь или наружу), а также сам угол наклона.

Параметры операции, описанные в пп. 2–4, устанавливаются с помощью единого метода интерфейса ksBossExtrusіonDefіnіtіon::SetSideParam (листинг 6.4).

Листинг 6.4. Задание способа, величины выдавливания, а также угла наклона

iBossExtrusion := ksEntity(iPart.NewEntity(o3d_bossExtrusion));

if (iBossExtrusion <> nil) then

begin

iBossDef := ksBossExtrusionDefinition(iBossExtrusion.GetDefinition);

if (iBossDef <> nil) then

begin

iBossDef.directionType := dtNormal;

// Если первый параметр имеет значение true,

// это значит, что все следующие параметры

// задаются для направления выдавливания dtNormal.

// Если установить значение параметра равным false,

// значит все следующие параметры

// определяются для обратного направления.

// Второй параметр задает способ выдавливания (etBlind);

// третий параметр – величина выдавливания (25 мм);

// четвертый параметр false – уклон вглубь (true – наружу)

// последний параметр – величина уклона в градусах

iBossDef.SetSideParam(true, etBlind, 25, false, 10);

end;

end;

Поделиться:
Популярные книги

Огни Эйнара. Долгожданная

Макушева Магда
1. Эйнар
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Огни Эйнара. Долгожданная

Real-Rpg. Еретик

Жгулёв Пётр Николаевич
2. Real-Rpg
Фантастика:
фэнтези
8.19
рейтинг книги
Real-Rpg. Еретик

Вперед в прошлое 2

Ратманов Денис
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 2

Как я строил магическую империю

Зубов Константин
1. Как я строил магическую империю
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю

Возвращение Безумного Бога 5

Тесленок Кирилл Геннадьевич
5. Возвращение Безумного Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвращение Безумного Бога 5

Ненужная жена

Соломахина Анна
Любовные романы:
любовно-фантастические романы
5.86
рейтинг книги
Ненужная жена

Идеальный мир для Социопата 6

Сапфир Олег
6. Социопат
Фантастика:
боевая фантастика
рпг
6.38
рейтинг книги
Идеальный мир для Социопата 6

Вечный. Книга II

Рокотов Алексей
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга II

Мимик нового Мира 6

Северный Лис
5. Мимик!
Фантастика:
юмористическая фантастика
попаданцы
рпг
5.00
рейтинг книги
Мимик нового Мира 6

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Новая мама в семье драконов

Смертная Елена
2. В доме драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Новая мама в семье драконов

Ты всё ещё моя

Тодорова Елена
4. Под запретом
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Ты всё ещё моя

Разведчик. Заброшенный в 43-й

Корчевский Юрий Григорьевич
Героическая фантастика
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.93
рейтинг книги
Разведчик. Заброшенный в 43-й

Газлайтер. Том 9

Володин Григорий
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Газлайтер. Том 9