Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «КОМПАБ-3D V10 Π½Π° 100 %Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 94

Автор Максим ΠšΠΈΠ΄Ρ€ΡƒΠΊ

begin

iBossDef.directionType := dtNormal;

// Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true,

// это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

// Π·Π°Π΄Π°ΡŽΡ‚ΡΡ для направлСния выдавливания dtNormal.

// Если ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ€Π°Π²Π½Ρ‹ΠΌ false,

// Π·Π½Π°Ρ‡ΠΈΡ‚ всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

// ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ направлСния.

// Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°Π΄Π°Π΅Ρ‚ способ выдавливания (etBlind);

// Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ – Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° выдавливания (25 ΠΌΠΌ);

// Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ false – ΡƒΠΊΠ»ΠΎΠ½ Π²Π³Π»ΡƒΠ±ΡŒ (true – Π½Π°Ρ€ΡƒΠΆΡƒ)

// послСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ – Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ΡƒΠΊΠ»ΠΎΠ½Π° Π² градусах

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

end;

end;

5. ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Вонкая стСнка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρ‹ ΠΈ способа формирования Ρ‚ΠΎΠ½ΠΊΠΎΠΉ стСнки ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ выдавливания сплошного Ρ‚Π΅Π»Π° (рис. 6.18).

Рис. 6.18. Π’Ρ‹Π±ΠΎΡ€ Ρ€Π΅ΠΆΠΈΠΌΠ° построСния Ρ‚ΠΎΠ½ΠΊΠΎΠΉ стСнки


Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ это задаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (листинг 6.5). Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выполняСтся опСрация выдавливания Π±Π΅Π· Ρ‚ΠΎΠ½ΠΊΠΎΠΉ стСнки.

Листинг 6.5. Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚ΠΎΠ½ΠΊΠΎΠΉ стСнки

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

if (iBossExtrusion <> nil) then

begin

iBossDef := ksBossExtrusionDefinition(iBossExtrusion.GetDefinition);

if (iBossDef <> nil) then

begin

iBossDef.directionType := dtNormal;

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

// ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ false ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ,

// Π½Π°Π΄ΠΎ Π»ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚ΠΎΠ½ΠΊΡƒΡŽ стСнку

// Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°Π΄Π°Π΅Ρ‚ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ выдавливания

// Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ стСнки

// Π² прямом ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ направлСниях соотвСтствСнно

iBossDef.SetThinParam(false, dtNormal, 0, 0);

// устанавливаСм эскиз ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

iBossDef.SetSketch(iSketch);

end;

end;

Π’ этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» Π·Π°Π΄Π°Π½ эскиз ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ksBossExtrusΡ–onDefΡ–nΡ–tΡ–on::SetSketch. ΠœΡ‹ приняли, Ρ‡Ρ‚ΠΎ сам эскиз, ΠΊΠ°ΠΊ ΠΈ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Π±Ρ‹Π» создан Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ выдавливания.

На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Бвойства ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΈ оптичСскиС свойства создаваСмого элСмСнта. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ построСнии элСмСнта для этого сначала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс – ksColorParam. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π³ΠΎ свойств ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ характСристиками Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ элСмСнта. ВнСсСнныС Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ построСния измСнСния ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π² листингС 6.6.

Листинг 6.6. Установка Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… свойств

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

if (iBossExtrusion <> nil) then

begin

// присваиваСм имя Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ,

// ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² Π΄Π΅Ρ€Π΅Π²Π΅ построСния

iBossExtrusion.name := β€œΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ опСрация выдавливания”;

// ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° интСрфСйс ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ†Π²Π΅Ρ‚Π°

// ΠΈ оптичСских свойств

color := ksColorParam(iBossExtrusion.ColorParam);

// с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ макроса RGB Π·Π°Π΄Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ – красный

color.color := RGB(255, 0, 0);

// Π·Π°Π΄Π°Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Π² долях Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹)

color.specularity := 0.8;

// и блСск

color.shininess := 1;

iBossDef := ksBossExtrusionDefinition(iBossExtrusion.GetDefinition);

if (iBossDef <> nil) then

begin

iBossDef.directionType := dtNormal;

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

iBossDef.SetThinParam(false, dtNormal, 0, 0);

iBossDef.SetSketch(iSketch);

end;

end;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС свойства настроСны Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ саму Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ выдавливания. Π’ КОМПАБ для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ – Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Create ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° интСрфСйса ksEntity. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 6.7.

Листинг 6.7. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ выдавливания

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

if (iBossExtrusion <> nil) then

begin

iBossExtrusion.name := β€œΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ опСрация выдавливания”;

color := ksColorParam(iBossExtrusion.ColorParam);

color.color := RGB(255, 0, 0);

color.specularity := 0.8;

color.shininess := 1;

iBossDef := ksBossExtrusionDefinition(iBossExtrusion.GetDefinition);

if (iBossDef <> nil) then

begin

iBossDef.directionType := dtNormal;

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

iBossDef.SetThinParam(false, dtNormal, 0, 0);

iBossDef.SetSketch(iSketch);

iBossExtrusion.Create; // создаСм ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ

end;

end;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠ°ΠΊ Β«Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽΒ», Ρ‚Π°ΠΊ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ модуля, ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 6.19. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ элСмСнт, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сами ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создан Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API КОМПАБ.

Рис. 6.19. Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ элСмСнт, созданный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ


ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ любой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π»ΡŽΠ±Ρ‹Ρ… Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠΎΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, построСниС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массивов ΠΈ ΠΏΡ€., Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ даст Π²Π°ΠΌ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ модСль издСлия.

ΠŸΠ΅Ρ€Π²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΊ КОМПАБ-3D

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ выполнСния Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ· внСшнСго прилоТСния (ΠΏΠ»Π°Π³ΠΈΠ½Π°), вряд Π»ΠΈ объяснил, ΠΊΠ°ΠΊ всС-Ρ‚Π°ΠΊΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для КОМПАБ-3D. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, выводящСй Π² срСдС КОМПАБ сообщСниС Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚ ΠΈΠ· КОМПАБа!Β». Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для КОМПАБ практичСски Π½Π΅ отличаСтся, поэтому Ρ‚Π°ΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π² дальнСйшСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ слоТных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для КОМПАБ-3D прСдставляСт собой ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ DLL (Dynamic Link Library – динамичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Windows), Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ RTW. Вакая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ КОМПАБ, ΠΊΠ°ΠΊ ΠΈ любая другая, ΡƒΠΆΠ΅ извСстным Π½Π°ΠΌ способом: Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ посрСдством ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ контСкстного мСню Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ описаниС β†’ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Для выполнСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° создайтС Π½Π° ТСстком дискС ΠΏΠ°ΠΏΠΊΡƒ FirstLib, Π° Π² Π½Π΅ΠΉ ΠΏΠ°ΠΏΠΊΡƒ dcu, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ„Π°ΠΉΠ»Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ КОМПАБ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

1. ЗапуститС Delphi ΠΈ создайтС шаблон DLL-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдлагаСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ File β†’ New β†’ Other. ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ ΠΎΠΊΠ½ΠΎ New Items (рис. 6.20) со всСвозмоТными шаблонами Windows-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Delphi (исполняСмый EXE-Ρ„Π°ΠΉΠ», консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Delphi ΠΈ ΠΏΡ€.). На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ New этого ΠΎΠΊΠ½Π° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ DLL Wizard ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ OK.

Рис. 6.20. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ New Items


Если Π²Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Delphi, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ Ρ€Π°Π· выполняли Π² этой срСдС динамичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚ΠΎ для вас Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ созданный Ρ„Π°ΠΉΠ»-Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ со слуТСбного слова library. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π½Π° ТСсткий диск Π² ΠΏΠ°ΠΏΠΊΡƒ FirstLib ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Hello_KOMPAS.dpr.

2. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ² КОМПАБ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ интСрфСйсами API. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Project β†’ Import Type Library, Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ· списка Import Type Library появившСгося ΠΎΠΊΠ½Π° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ Kompas6API5 (Version 1.0). ΠŸΡ€ΠΈ этом Π² тСкстовом ΠΏΠΎΠ»Π΅ ΠΏΠΎΠ΄ списком Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ‚ΠΈΠΏΠΎΠ² КОМПАБ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,  C:\Program Files\ASCON\KOMPAS-3D V10\Bin\kAPI5.TLB). Π’Ρ‹Π±Ρ€Π°Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Create Unit (рис. 6.21).

Рис. 6.21. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² КОМПАБ ΠΊ Delphi


ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Если Π² спискС Import Type Library Π½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ Add ΠΈ отыскав Ρ„Π°ΠΉΠ» kAPI5.TLB (ΠΎΠ½ находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Bin ΠΏΠ°ΠΏΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ установлСн КОМПАБ).

3. Π—Π° нСсколько сСкунд Delphi сгСнСрируСт PAS-Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ Kompas6API5-TLB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ описаниС всСх интСрфСйсов API 5. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ имя (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ) скомпилированного модуля (автоматичСски Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ), с Kompas6API5-TLB Π½Π° ksTLB ΠΈ сохранитС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

4. Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Ρ„Π°ΠΉΠ» Kompas6API5-TLB.pas, Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π° Delphi ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ имя Ρ„Π°ΠΉΠ»Π° Π½Π° ksTLB.pas. Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Kompas6API5-TLB.pas с интСрфСйсами размСщаСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Imports ΠΏΠ°ΠΏΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ установлСн Delphi, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ C:\Program Files\Borland\Delphi7\Imports.

5. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ FirstLib\dcu вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

6. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ uses Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку: Kompas6API5-TLB in β€œC:\Program Files\Borland\Delphi7\Imports\Kompas6API5-TLB.pas” Π½Π° ksTLB. Напомню Π²Π°ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΡ‚ΡŒ ΠΊ Kompas6API5-TLB.pas ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ (ΠΎΠ½ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ установлСн Delphi). Однако это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ запись гСнСрируСтся систСмой автоматичСски ΠΏΡ€ΠΈ компиляции Ρ„Π°ΠΉΠ»Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ‚ΠΈΠΏΠΎΠ². Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ksTLB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» скопирован Π² ΠΏΠ°ΠΏΠΊΡƒ dcu ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π΅Ρ‚ нСобходимости.

7. ΠŸΡ€ΠΈ компиляции ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² с описаниями интСрфСйсов, констант ΠΈ ΠΏΡ€. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ (ΠΏΡ€ΠΈ этом Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ uses слСдовало Π±Ρ‹ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ явно), Π½ΠΎ для удобства Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΏΠ°ΠΏΠΊΠ΅ dcu, Π³Π΄Π΅ ΡƒΠΆΠ΅ находится Ρ„Π°ΠΉΠ» ksTLB.pas. Π“Π΄Π΅ Π±Ρ‹ всС эти Ρ„Π°ΠΉΠ»Ρ‹ Π½ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ, Π² Delphi Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Project β†’ Options, послС Ρ‡Π΅Π³ΠΎ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Directories/Conditionals ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅Π³ΠΎΡΡ ΠΎΠΊΠ½Π° настроСк ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (рис. 6.22) Π·Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

β€’ Output directory – ΠΏΡƒΡ‚ΡŒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Delphi Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ скомпилированный Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ FirstLib);

β€’ Unit output directory ΠΈ Search path – ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ FirstLib\dcu. По этим путям систСма Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ КОМПАБа, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ скомпилированныС DCU-Ρ„Π°ΠΉΠ»Ρ‹.

Рис. 6.22. Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ