ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ΅Π»ΡΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ . ΠΠ°ΡΠ½Π΅ΠΌ ΡΠΎ Π²ΡΠΎΡΠΎΠΉ (ΠΡΠΌΠ΅Π½Π°), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΎΡΡ. Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ Π΄Π²Π°ΠΆΠ΄Ρ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΡΠΎΡΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΡΠΌΠ΅Π½Π° ΠΈ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΊΠΎΠ΄Π°, Π²Π²Π΅Π΄ΠΈΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ, Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ ΡΠΎΡΠΌΡ (Π»ΠΈΡΡΠΈΠ½Π³ 6.11).
ΠΠΈΡΡΠΈΠ½Π³ 6.11. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ΅Π»ΡΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΡΠΌΠ΅Π½Π°procedure TGearsForm.Button2Click(Sender: TObject);
begin
if CloseQuery then Close;
end;
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. Π£ΡΠ»ΠΎΠ²Π½ΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΡΡΠΈ ΡΠ°ΡΡΠΈ.
1. Π Π°ΡΡΠ΅Ρ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·ΡΠ±ΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ»Π΅ΡΠ° ΠΏΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ.
2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΠΠΠΠΠ‘-ΠΠ΅ΡΠ°Π»Ρ.
3. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·ΡΠ±ΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ»Π΅ΡΠ°.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠ»Π΅ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
1. Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ XOY ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΡΠΊΠΈΠ·, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π΅ΡΠ° (ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ ΠΏΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΡΡΠ½ΡΡ Π² Π³Π». 3). ΠΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΈΠ·Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ, ΡΠΎΡΠΌΠΈΡΡΡΡΠ°Ρ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΡ Π·ΡΠ±ΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ»Π΅ΡΠ°.
2. ΠΠ°Π»Π΅Π΅ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ YOZ ΡΡΡΠΎΠΈΡΡΡ Π²ΡΠΎΡΠΎΠΉ ΡΡΠΊΠΈΠ· Ρ ΡΠ΅ΡΡΡΡΠΌΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡΠΌΠΈ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΡΠ΅Π·Π°Π½ΠΈΡ Π² Π΄Π²Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠ²Π΅ΡΡΡΠΈΡ Π² Π΄ΠΈΡΠΊΠ΅.
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
begin
ks.ksMessage(βΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ!β);
exit;
end;
ΠΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π² ΠΈ Π·Π°ΠΏΡΡΡΠΈΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° (Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅) ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΠΌΠ° ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΡΡΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΠΠΠΠΠ‘-ΠΠ΅ΡΠ°Π»Ρ.
Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 6.14 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠ΄ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° Examples\ΠΠ»Π°Π²Π° 6\Delphi Programming\Gears3D\BuildUnit.pas Π½Π° Π΄ΠΈΡΠΊΠ΅. Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π½Π΅ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ.
ΠΠΈΡΡΠΈΠ½Π³ 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
// ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²ΡΡΠ΅Π·Π°Π½ΠΈΡ