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;
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅. Π Π½ΠΈΡ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΎΠ±ΡΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π²ΠΎΠ΄Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ksLineSeg, ksArcByAngle ΠΈ ksCircle ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ksDocument2D, ΠΏΡΠΎΡΡΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°Ρ ΠΊΠ½ΠΈΠ³ΠΈ.
ΠΠ½ΠΎΠ²Ρ ΡΠΎΠ±Π΅ΡΠΈΡΠ΅ (ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅) Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΎΠΊΠ½ΠΎ ΠΠΠΠΠΠ‘ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π·ΡΠ±ΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ»Π΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ΄ΡΠ»Ρ β 3, 5 ΠΌΠΌ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·ΡΠ±ΡΠ΅Π² β 56, ΡΠΈΡΠΈΠ½Π° Π·ΡΠ±ΡΠ°ΡΠΎΠ³ΠΎ Π²Π΅Π½ΡΠ° β 60 ΠΌΠΌ ΠΈ ΡΠ³ΠΎΠ» Π½Π°ΠΊΠ»ΠΎΠ½Π° Π»ΠΈΠ½ΠΈΠΈ Π·ΡΠ±ΡΠ΅Π² β 15Β°) ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅.
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅!
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΠΌΠΈ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡΡ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π°ΡΠΈΡΠ° ΠΎΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΌΠΈΠ½ΠΈ-Π‘ΠΠΠ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»Π°ΡΡ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠΉΡΠ΅, ΠΊΠ°ΠΊΠΎΠΉ Π·Π½Π°ΠΊ (ΡΠΎΡΠΊΠ° ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΠ°Ρ) ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠ΅Π»ΠΎΠΉ ΠΈ Π΄ΡΠΎΠ±Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠ°ΠΌΠΈ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π½Π΅ΡΡΠ°ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
ΠΡΠ΅Π³ΠΎ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΡΡΠΎΠΈΡ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ 3D-ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΡΠΎΠ·ΡΠ±ΠΎΠ³ΠΎ Π·ΡΠ±ΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ»Π΅ΡΠ° (ΡΠΈΡ. 6.25).
Π ΠΈΡ. 6.25. Π’ΡΠ΅Ρ ΠΌΠ΅ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π·ΡΠ±ΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ»Π΅ΡΠ°, ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΎΠΉ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π·ΡΠ±ΡΠ°ΡΡΠ΅ ΠΊΠΎΠ»Π΅ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΡΠ³Π»ΠΎΠΌ Π½Π°ΠΊΠ»ΠΎΠ½Π° Π·ΡΠ±ΡΠ΅Π², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΡΠΌΠΎΠ·ΡΠ±ΡΠ΅. ΠΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΌ ΡΠ°ΠΉΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ Examples\ΠΠ»Π°Π²Π° 6\Delphi Programming\Gears3D. ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅Π³ΠΎ Π½Π° ΠΆΠ΅ΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΡΡΠΈ ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΌ ΠΌΠΎΠ΄ΡΠ»ΡΠΌ ΠΠΠΠΠΠ‘ API. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΡΠ΅ΠΌ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Π»Π°ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅-Π΄Π΅ΡΠ°Π»ΠΈ, Π° Π²ΡΡΠ°Π²Π»ΡΠ»Π°ΡΡ Π² ΡΠ΅ΠΊΡΡΡΡ ΡΠ±ΠΎΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π½ΡΠΎΠΌΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.
1. Π ΠΌΠΎΠ΄ΡΠ»Π΅ BuildUnit Π² ΡΠ°Π·Π΄Π΅Π»Π΅ public ΠΊΠ»Π°ΡΡΠ° ΡΠΎΡΠΌΡ ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ cancel ΡΠΈΠΏΠ° boolean. ΠΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ: true β Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠ΅ΡΠ²Π°Π» ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ false β Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π·ΡΠ±ΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ»Π΅ΡΠ° Π±ΡΠ»ΠΎ Π½Π°ΡΠ°ΡΠΎ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ OnCreate ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true (ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ ΡΠ΅Π»ΠΊΠ½ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΡΠΎΡΠΌΡ, Π½Π΅ Π·Π°Π½ΡΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ).
2. Π ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠ΅Π»ΡΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΡΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ ΡΠΎΡΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ cancel ΡΠ°Π²Π½ΡΠΌ true (Ρ ΠΎΡΡ ΡΡΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ). Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ cancel Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ false.
3. Π Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° doc3.Create(false, true) Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π° true β doc3.Create(true, true). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ Π·ΡΠ±ΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ»Π΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΈΡΡΡΡ Π² Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
4. Π ΡΠ°ΠΌΡΠΉ ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊΠΎΠ΄, ΡΠΎΡ ΡΠ°Π½ΡΡΡΠΈΠΉ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π° ΠΆΠ΅ΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ (Π»ΠΈΡΡΠΈΠ½Π³ 6.15). Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π΅ΡΠ°Π»Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΏΠΊΡ C:\gear.m3d. ΠΡΡΡ, ΠΊΠ°ΠΊ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ, ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π·Π°ΠΏΡΠΎΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠΈΡΡΠΈΠ½Π³ 6.15. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π΄Π΅ΡΠ°Π»ΠΈ// doc3 β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ksDocument3D
// ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π΄Π΅ΡΠ°Π»ΠΈ
doc3.SaveAs(βC:\gear.m3dβ);
doc3.close;
// Π·Π°ΠΊΡΡΡΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
Close;
5. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π³Π»Π°Π²Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π ΡΠ°Π·Π΄Π΅Π» uses ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ: ksConstTLB, LDefin3D ΠΈ LDefin2D. ΠΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΡΡΠ°ΡΡΠ²ΡΡΡΠΈΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π½ΡΠΎΠΌΠ°. Π Π½Π°ΡΠ°Π»ΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²Ρ ΠΎΠ΄Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° KompasObject, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° (Π»ΠΈΡΡΠΈΠ½Π³ 6.16).
ΠΠΈΡΡΠΈΠ½Π³ 6.16. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°// ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ