3. Следующим шагом является выполнение выреза между зубьями в венце колеса. Для построения выреза воспользуемся первым из способов, предложенных в гл. 3. Напомню, этот способ заключается в построении выреза с помощью операции Вырезать по сечениям. При этом в модели колеса строится ряд эскизов-сечений, плоскости которых удалены от боковой поверхности колеса на величину l = i · b / ( n с– 1) (где b – ширина колеса, n с– количество сечений или эскизов, i – порядковый номер эскиза). Для нашей библиотеки достаточно будет трех эскизов: по два на торцевых плоскостях колеса и один посредине – на плоскости YOZ . Это значит, что библиотека должна будет построить две вспомогательные плоскости, удаленные в обе стороны от плоскости YOZ на половину ширины венца зубчатого колеса. В каждой из трех плоскостей (двух вспомогательных и ортогональной YOZ ) будет создано изображение эскиза выреза между зубьями, повернутое относительно вертикальной оси на угол α = 2 · l · tg β / d к, где β – угол наклона линии зуба, d к– делительный диаметр зубчатого колеса (обоснование этой зависимости приведено в гл. 3). Для первой плоскости вместо l необходимо подставить 0, для второй ( YOZ ) – b/2 , для третьей – b .
4. В завершении создается ось на пересечении плоскостей XOZ и XOY . Относительно этой оси формируется массив по концентрической сетке вырезов между зубьями колеса. Количество копий устанавливается равным количеству зубьев колеса.
Начнем с первого этапа реализации построения: расчета геометрических характеристик создаваемого колеса (листинг 6.12).
Листинг 6.12. Расчет параметров колеса
procedure TGearsForm.Button1Click(Sender: TObject);
var
// раздел объявления переменных
// все объекты приведенных интерфейсов используются при построении
doc3 : ksDocument3D;
iPart : ksPart;
PlaneXOY : ksEntity;
PlaneXOZ : ksEntity;
PlaneYOZ : ksEntity;
SketchEntity : ksEntity;
iSketchDef : ksSketchDefinition;
doc : ksDocument2D;
r : reference;
iBaseRotatedEntity : ksEntity;
Color : ksColorParam;
iBaseRotatedDef : ksBaseRotatedDefinition;
iSketch1Entity : ksEntity;
iSketch1Def : ksSketchDefinition;
iCutExtrusion : ksEntity;
iCutExtrusionDef : ksCutExtrusionDefinition;
iOffsetPlaneEntity : ksEntity;
iOffsetPlaneDef : ksPlaneOffsetDefinition;
iSketch2Entity : ksEntity;
iSketch2Def : ksSketchDefinition;
iSketch3Entity : ksEntity;
iSketch3Def : ksSketchDefinition;
iOffsetPlane1Entity : ksEntity;
iOffsetPlane1Def : ksPlaneOffsetDefinition;
iSketch4Entity : ksEntity;
iSketch4Def : ksSketchDefinition;
iCutLoftEntity : ksEntity;
iCutLoftDef : ksCutLoftDefinition;
Collect : ksEntityCollection;
iAxis : ksEntity;
iAxis2PlDef : ksAxis2PlanesDefinition;
iCircularCopy : ksEntity;
iCirCopyDef : ksCircularCopyDefinition;
Collect1 : ksEntityCollection;
// геометрические параметры колеса
module : double;
Lm, Dm : double;
Dv : double;
b_k, c : double;
d_k, d_fk, d_ak : double;
delta0 : double;
z : integer;
beta : double;
Dotv : double;
alfa1, alfa2 : double;
begin
Hide; // прячем диалоговое окно
// считываем параметры, введенные пользователем в окне
module := StrToFloat(Edit1.Text);
z := StrToInt(Edit2.Text);
Lm := StrToFloat(Edit3.Text);
beta := StrToFloat(Edit4.Text);
// диаметр отверстия под вал
Dv := round(Lm/1.4);
// ширину маточины и ширину колеса принимаем равными
b_k := Lm;
// диаметр маточины
Dm := 1.8*Dv;
// толщина диска, соединяющего маточину с ободом
c := round(0.35*b_k);
// толщина обода
delta0 := round(2.5*module/cos(DegToRad(beta)));
d_k := module*z; // делительный диаметр колеса
d_ak := d_k+2*module; // диаметр выступов
d_fk := d_k-2.5*module; // диаметр впадин
// диаметр размещения центров отверстий в диске
Dotv := (d_fk – 2*delta0 + Dm)/2;
// создание детали...
// построение модели...
Close; // закрываем форму
end;
Если сейчас собрать приложение и попробовать запустить библиотеку, ничего происходить не будет, потому что пока ничего не создается и не строится.
Следующий этап построения намного более интересен – он заключается в программном создании документа КОМПАС-Деталь (листинг 6.13). В данном листинге раздел описания переменных и расчет параметров колеса пропущен, а приведен только фрагмент кода, реализующий создание документа-детали. В процедуру построения (обработчик нажатия кнопки Построение) этот фрагмент должен быть вставлен сразу после расчетов.
Листинг 6.13. Создание документа детали
// получаем указатель на интерфейс трехмерного документа
doc3 := ksDocument3D(ks.Document3D());
// создаем документ
// параметр false – в видимом режиме
// параметр true – документ-деталь
if doc3.Create(false, true) then
begin
// заполняем параметры документа
doc3.author := “Максим Кидрук”;
doc3.comment := “Зубчатое колесо”;
doc3.drawMode := 3;
doc3.perspective := true;
doc3.UpdateDocumentParam();
end else exit;
// проверяем, как прошла инициализация
if (doc3 = nil) then
Читать дальше
Конец ознакомительного отрывка
Купить книгу