Gcode
Π£ΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ° Gcode Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET
G-ΠΊΠΎΠ΄ β ΡΡΠ»ΠΎΠ²Π½ΠΎΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ² Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ (Π§ΠΠ£).
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ° Π±ΡΠ»Π° ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π² ΡΠ΅Π²ΡΠ°Π»Π΅ 1980 Π³ΠΎΠ΄Π° ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡ RS274D.
ΠΠΎΠΌΠΈΡΠ΅Ρ ISO ΡΡΠ²Π΅ΡΠ΄ΠΈΠ» G-ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡ ISO 6983-1:2009, ΠΠΎΡΠΊΠΎΠΌΠΈΡΠ΅Ρ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ Π‘Π‘Π‘Π β ΠΊΠ°ΠΊ ΠΠΠ‘Π’ 20999-83.
Π ΡΠΎΠ²Π΅ΡΡΠΊΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅ G-ΠΊΠΎΠ΄ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΠ‘Π 7-Π±ΠΈΡ (ISO 7-bit).
G-ΠΊΠΎΠ΄ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π»ΠΈ Π½Π° 8-Π΄ΠΎΡΠΎΠΆΠ΅ΡΠ½ΡΡ ΠΏΠ΅ΡΡΠΎΠ»Π΅Π½ΡΡ Π² ΠΊΠΎΠ΄Π΅ ISO 7-bit (ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π£Π§ΠΠ£ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ΄Ρ AEG ΠΈ PC8C), Π²ΠΎΡΡΠΌΠ°Ρ Π΄ΠΎΡΠΎΠΆΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΡΡΠ½ΠΎΡΡΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Π§Π΅ΡΠ΅Π· Nuget
Install-Package Gcode.Utils
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ° Π² ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ GcodeCommandFrame
- ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° GcodeCommandFrame Π² ΡΡΡΠΎΠΊΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ
- ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ
- ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΎΡΠΌΠ°Ρ JSON (RFC 7159)
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΡΠΈΠΏ ΡΠ»Π°ΠΉΡΠ΅ΡΠ°, Π²Π΅ΡΡΠΈΡ, ΡΠ΅Π΄Π°ΠΊΡΠΈΡ, Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ°ΡΠΈ, ΠΎΠ±ΡΡΠΌ ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΊΡΡΡΡΠ΄Π΅ΡΠΎΠ², ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ°ΡΠΈ, Π΄ΠΈΠ°ΠΌΠ΅ΡΡ ΠΏΡΡΡΠΊΠ°) Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ»Π°ΠΉΡΠ΅ΡΠ° (Cura, KisSlicer, Simplify3d, Slic3R, PrusaSlicer )
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌ:
- MS Windows
- Linux
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
// ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΡΠΎΠΊΡ
var gcode = new GcodeCommandFrame {X = 1, Y = 1};
var gcodeStr = gcode.ToString();
// ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
>> 'X1 Y1'
// ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΈΠΏ GcodeCommandFrame
const string rawString = "G1 X2.131 Y3.91 Z4.833 E0 F360";
var gcodeConverted = rawString.ToGcodeCommandFrame();
>> gcodeConverted.X = 2.131
>> gcodeConverted.Y = 3.91
>> gcodeConverted.Z = 4.833
>> gcodeConverted.E = 0
>> gcodeConverted.F = 360
// ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² JSON
const string rawString = "G1 X626.713 Y251.523 E12.01248; Comment";
var res = rawString.GcodeToJson();
>> {"G":"1","X":"626.713","Y":"251.523","E":"12.01248","Comment":"Comment"}
// ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ°
const string rawString = "M206 T3 P200 X89 ;extruder normal steps per mm";
var gcodeConverted = rawString.ToGcodeCommandFrame();
// ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΡΠΎΠΊΠΈ
g.N = 1;
// ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ
var crc = GcodeCrc.FrameCrc(g);
// ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ»Π°ΠΉΡΠ΅ΡΠ΅
string[] src = "fileContentsArray";
// Slic3R Parser
var parser = new Slic3RParser();
var res = parser.GetSlicerInfo(src);
var volume = res.FilamentUsedExtruder1Volume;
var filamentDiameter = res.FilamentDiameter;
var filamentUsed = res.FilamentUsedExtruder1;