Читаем КОМПАС-3D V10 на 100 % полностью

Листинг 6.14. Построение модели колеса

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

iPart := ksPart(doc3.GetPart(pNew_Part));

if (iPart <> nil) then

begin

// интерфейсы ортогональных плоскостей

PlaneXOY := ksEntity(iPart.GetDefaultEntity(o3d_planeXOY));

PlaneXOZ := ksEntity(iPart.GetDefaultEntity(o3d_planeXOZ));

PlaneYOZ := ksEntity(iPart.GetDefaultEntity(o3d_planeYOZ));

// интерфейс эскиза (половина контура сечения колеса)

iSketchEntity := ksEntity(iPart.NewEntity(o3d_sketch));

if (iSketchEntity <> nil) then

begin

// интерфейс параметров эскиза

iSketchDef := ksSketchDefinition(iSketchEntity.GetDefinition);

if (iSketchDef <> nil) then

begin

if (PlaneXOY <> nil) then

begin

// устанавливаем плоскость,

// на которой создается эскиз

iSketchDef.SetPlane(PlaneXOY);

iSketchEntity.Create;

// запускаем процесс редактирования эскиза

// doc – указатель на интерфейс ksDocument2D

doc := ksDocument2D(iSketchDef.BeginEdit);

if (doc <> nil) then

begin

// вычерчиваем изображение эскиза

// с помощью методов интерфейса ksDocument2D

// код пропущен

end;

// завершение редактирования эскиза

iSketchDef.EndEdit;

end;

end;

end;

// интерфейс базовой операции вращения

iBaseRotatedEntity := ksEntity(iPart.NewEntity(o3d_baseRotated));

// интерфейс параметров цвета и визуальных свойств

Color := ksColorParam(iBaseRotatedEntity.ColorParam);

Color.specularity := 0.8;

Color.shininess := 1;

if (iBaseRotatedEntity <> nil) then

begin

// интерфейс параметров вращения

iBaseRotatedDef :=

ksBaseRotatedDefinition(iBaseRotatedEntity.GetDefinition);

if (iBaseRotatedDef <> nil) then

begin

// настройка параметров вращения

iBaseRotatedDef.SetThinParam(false, dtNormal, 1, 1);

iBaseRotatedDef.SetSideParam(true, 360);

iBaseRotatedDef.toroidShapeType := false;

iBaseRotatedDef.SetSketch(iSketchEntity);

// создаем операцию вращения

// результат – заготовка зубчатого колеса

iBaseRotatedEntity.Create;

end;

end;

// интерфейс эскиза (отверстия в диске)

iSketch1Entity := ksEntity(iPart.NewEntity( o3d_sketch ));

if (iSketch1Entity <> nil) then

begin

iSketch1Def := ksSketchDefinition(iSketch1Entity.GetDefinition);

if (iSketch1Def <> nil) then

begin

if (PlaneYOZ <> nil) then

begin

// размещаем эскиз на плоскости YOZ

iSketch1Def.SetPlane(PlaneYOZ);

iSketch1Entity.Create;

doc := ksDocument2D(iSketch1Def.BeginEdit);

if (doc <> nil) then

begin

// изображение в эскизе – 4 окружности

// создаются вызовом метода ksDocument2D::ksCircle

doc.ksCircle(0, Dotv/2, 0.4*(d_fk/2-delta0-Dm/2), 1);

doc.ksCircle(0, -Dotv/2, 0.4*(d_fk/2-delta0-Dm/2), 1);

doc.ksCircle(Dotv/2, 0, 0.4*(d_fk/2-delta0-Dm/2), 1);

doc.ksCircle(-Dotv/2, 0, 0.4*(d_fk/2-delta0-Dm/2), 1);

end;

iSketch1Def.EndEdit;

end;

end;

end;

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

iCutExtrusion := ksEntity(iPart.NewEntity(o3d_cutExtrusion));

if (iCutExtrusion <> nil) then

begin

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

iCutExtrusionDef :=

ksCutExtrusionDefinition(iCutExtrusion.GetDefinition);

if (iCutExtrusionDef <> nil) then

begin

// настройка параметров

iCutExtrusionDef.SetSketch(iSketch1Entity);

// направление

iCutExtrusionDef.directionType := dtBoth;

// величина вырезания по каждому из направлений

iCutExtrusionDef.SetSideParam(true, etBlind, c/2,

0, false);

iCutExtrusionDef.SetSideParam(false, etBlind, c/2,

0, false);

iCutExtrusionDef.SetThinParam(false, 0, 0, 0);

// создаем отверстия в диске

iCutExtrusion.Create;

end;

end;

// интерфейс смещенной плоскости

iOffsetPlaneEntity := ksEntity(iPart.NewEntity(o3d_planeOffset));

if (iOffsetPlaneEntity <> nil) then

begin

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

iOffsetPlaneDef :=

ksPlaneOffsetDefinition(iOffsetPlaneEntity.GetDefinition);

if (iOffsetPlaneDef <> nil) then

begin

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

iOffsetPlaneDef.Offset := b_k/2;

iOffsetPlaneDef.SetPlane(PlaneYOZ);

iOffsetPlaneDef.direction := false;

// делаем плоскость скрытой

iOffsetPlaneEntity.Hidden := true;

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

iOffsetPlaneEntity.Create;

end;

end;

// эскиз первого выреза между зубьями

iSketch2Entity := ksEntity(iPart.NewEntity(o3d_sketch));

if (iSketch2Entity <> nil) then

begin

iSketch2Def := ksSketchDefinition(iSketch2Entity.GetDefinition);

if (iSketch2Def <> nil) then

begin

// базовая плоскость – вспомогательная iOffsetPlaneEntity

iSketch2Def.SetPlane(iOffsetPlaneEntity);

iSketch2Entity.Create;

doc := ksDocument2D(iSketch2Def.BeginEdit);

alfa1 := 360/z;

doc.ksMtr(0, 0, 90, 1, 1);

// вычерчивание изображения эскиза

// вместо эвольвент для простоты

// берем обычные дуги по трем точкам

// код пропущен

doc.ksDeleteMtr;

iSketch2Def.EndEdit;

end;

end;

// интерфейс второго эскиза выреза между зубьями

iSketch3Entity := ksEntity(iPart.NewEntity(o3d_sketch));

if (iSketch3Entity <> nil) then

begin

iSketch3Def := ksSketchDefinition(iSketch3Entity.GetDefinition);

if (iSketch3Def <> nil) then

begin

// строим на плоскости YOZ

iSketch3Def.SetPlane(PlaneYOZ);

iSketch3Entity.Create;

doc := ksDocument2D(iSketch3Def.BeginEdit);

alfa2 := -RadToDeg(b_k*tan(DegToRad(beta))/d_k);

doc.ksMtr(0, 0, 90, 1, 1);

// вычерчивание изображения эскиза

// вместо эвольвент для простоты

// берем обычные дуги по трем точкам

// код пропущен

doc.ksDeleteMtr;

iSketch3Def.EndEdit;

end;

end;

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

iOffsetPlane1Entity := ksEntity(iPart.NewEntity(o3d_planeOffset));

if (iOffsetPlane1Entity <> nil) then

begin

iOffsetPlane1Def :=

ksPlaneOffsetDefinition(iOffsetPlane1Entity.GetDefinition);

if (iOffsetPlane1Def <> nil) then

begin

// величина смещения та же

iOffsetPlane1Def.Offset := b_k/2;

// направление противоположное

iOffsetPlane1Def.direction := true;

iOffsetPlane1Def.SetPlane(PlaneYOZ);

// делаем плоскость скрытой

iOffsetPlane1Entity.Hidden := true;

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

iOffsetPlane1Entity.Create;

end;

end;

// третий (последний) эскиз выреза между зубьями

iSketch4Entity := ksEntity(iPart.NewEntity(o3d_sketch));

if (iSketch4Entity <> nil) then

begin

iSketch4Def := ksSketchDefinition(iSketch4Entity.GetDefinition);

if (iSketch4Def <> nil) then

begin

// базовая плоскость – только что созданная смещенная

iSketch4Def.SetPlane(iOffsetPlane1Entity);

iSketch4Entity.Create;

doc := ksDocument2D(iSketch4Def.BeginEdit);

alfa2 := -RadToDeg(2*b_k*tan(DegToRad(beta))/d_k);

doc.ksMtr(0, 0, 90, 1, 1);

// вычерчивание изображения эскиза

// вместо эвольвент для простоты

// берем обычные дуги по трем точкам

// код пропущен

doc.ksDeleteMtr;

iSketch4Def.EndEdit;

end;

end;

// интерфейс операции Вырезать по сечениям

iCutLoftEntity := ksEntity(iPart.NewEntity(o3d_cutLoft));

if (iCutLoftEntity <> nil) then

begin

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

iCutLoftDef := ksCutLoftDefinition(iCutLoftEntity.GetDefinition);

if (iCutLoftDef <> nil) then

begin

// интерфейс массива ksEntityCollection

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

Collect := ksEntityCollection(iCutLoftDef.Sketchs);

// добавляем эскизы в колекцию

Collect.Add(iSketch2Entity);

Collect.Add(iSketch3Entity);

Collect.Add(iSketch4Entity);

// создаем операцию по сечениям

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

iCutLoftEntity.Create;

end;

end;

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

iAxis := ksEntity(iPart.NewEntity(o3d_axis2Planes));

if (iAxis <> nil) then

begin

// интерфейс параметров вспомогательной оси

// на пересечении плоскостей

iAxis2PlDef := ksAxis2PlanesDefinition(iAxis.GetDefinition);

if (iAxis2PlDef <> nil) then

begin

// задаем плоскости

iAxis2PlDef.SetPlane(1, PlaneXOZ);

iAxis2PlDef.SetPlane(2, PlaneXOY);

// делаем ось невидимой

iAxis.hidden := true;

// создаем вспомогательную ось

iAxis.Create;

end;

end;

// интерфейс операции Массив по концентрической сетке

iCircularCopy := ksEntity(iPart.NewEntity(o3d_circularCopy));

if (iCircularCopy <> nil) then

begin

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

iCirCopyDef :=

ksCircularCopyDefinition(iCircularCopy.GetDefinition);

if (iCirCopyDef <> nil) then

begin

// коллекция операций для копирования

Collect1 :=

ksEntityCollection(iCirCopyDef.GetOperationArray);

// операция всего лишь одна – вырезание зуба

Collect1.Add(iCutLoftEntity);

// количество копий, равно количеству зубьев

iCirCopyDef.count2 := z;

iCirCopyDef.factor2 := true;

// ось копирования

iCirCopyDef.SetAxis(iAxis);

// создаем концентрический массив – колесо готово!

iCircularCopy.Create;

end;

end;

end;

Перейти на страницу:

Все книги серии На 100%

Восстановление данных на 100%
Восстановление данных на 100%

В книге изложены методы восстановления данных с различных носителей информации – жестких дисков, массивов RAID, CD, DVD, карт флэш-памяти, карт фотоаппаратов и мобильных телефонов. Ремонт поврежденного оборудования рассматривается в издании только как один из аспектов всего процесса извлечения данных. Основная тема – извлечение данных, поврежденных из-за физических или логических нарушений в работе компьютерной системы либо неверных действий пользователя. В книге рассматривается восстановление случайно удаленных файлов, извлечение ценной информации с поломанных жестких дисков; описываются программы и методика восстановления данных с поврежденных массивов RAID, что критически важно для работы корпоративных компьютерных систем.Книга не требует специальной подготовки читателя: простые пошаговые процедуры восстановления данных предваряются описанием принципов их хранения на различных носителях.

Петр Андреевич Ташков

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
Установка, настройка и восстановление Windows 7 на 100%
Установка, настройка и восстановление Windows 7 на 100%

Данное издание предназначено для пользователей, которые уже немного знакомы с компьютером и хотят научиться самостоятельно устанавливать и настраивать операционную систему. Доступный язык изложения материала и большое количество наглядных иллюстраций помогут вам правильно установить Windows 7 и настроить свой компьютер так, чтобы добиться оптимальной производительности. Кроме того, в книге подробно описаны базовые принципы восстановления операционной системы.Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги.

Александр Иванович Ватаманюк

ОС и Сети, интернет / ОС и Сети / Книги по IT

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных