Skip to main content

a package for generate G-code for 3D Printer

Project description

What is gcoordinator?

gcoordinator is a library used to generate G-code for 3D printers using Python.
The development started with extracting the G-code generation engine from the GUI application G-coordinator [https://github.com/tomohiron907/G-coordinator].

With this library alone, you can perform 3D modeling, preview, G-code generation, and export.
In the upcoming version 3 series of the GUI application, the plan is to fully migrate the internal generation engine to this library.

Installation

You can install it using the following command:

pip install gcoordinator

Since the dependencies include features that require specific versions to function properly, it is strongly recommended to create a virtual environment. Specifically, you will need matplotlib==3.7.1.

What is G-code?

In essence, the G-code used in 3D printing primarily consists of a series of coordinates where the nozzle moves.
It also includes parameters such as extrusion amount and movement speed, but these are automatically set and calculated within the library.
Therefore, when using the library for modeling, the only consideration needed is the three-dimensional coordinate sequence along which the nozzle moves.

Usage

Below is a sample code for creating the simplest cylinder using the library:

import gcoordinator as gc
import numpy as np


full_object = []
for height in range(100):
    arg  = np.linspace(0, 2*np.pi, 100)
    x = 10 * np.cos(arg)
    y = 10 * np.sin(arg)
    z = np.full_like(x, (height+1) * 0.2)
    wall = gc.Path(x, y, z)
    
    full_object.append(wall)

gcode = gc.GCode(full_object)
gcode.start_gcode("PATH TO YOUR START G-CODE")
gcode.end_gcode("PATH TO YOUR END G-CODE")
gcode.save('PATH OF YOUR G-CODE FILE TO SAVE')

modeling

for layer in range(100):

iterating through each layer using a for loop, ranging from layer 0 to layer 99.


Next, we set the angle (arg) in a numpy array from 0 to 2π to draw a circle.
Since the number of elements is set to 100, an exact regular 99-gon will be modeled. If the radius is fixed at 10, the x coordinate is calculated as follows:
radius×cos(arg)

The y coordinate is calculated as follows:

radius×sin(arg)

z = np.full_like(x, (height+1) * 0.2)

As for the z coordinate in the height direction, an array with the same number of elements as arg is initialized with a value according to height.
The reason for adding 1 is that even if the height starts from 0, we want the first layer to be printed at a height of 0.2.

wall = Path(x,y,z)

Create a Path from the x, y, and z coordinate sequences calculated above.

full_object.append(wall)

Add the created Path to a list called full_object. full_object is a list that stores all the Paths to be printed in the order of printing.
Note that the end point of the nth Path and the start point of the n+1th Path are automatically traveled.

G-code generation

gcode = gc.GCode(full_object)

Convert all the Paths stored in full_object to G-code.

gcode.start_gcode("PATH TO YOUR START G-CODE")
gcode.end_gcode("PATH TO YOUR END G-CODE")

Specify the G-code to be written at the beginning and end of the G-code.

gcode.save('PATH OF YOUR G-CODE FILE TO SAVE')

Save the G-code.

gcoordinaとは?

gcoordinatorは,pythonを用いて3Dプリンタ用G-codeを生成するためのライブラリです.
GUIアプリのG-coordinator[https://github.com/tomohiron907/G-coordinator] のG-code生成エンジンの切り出しを発端に開発開始しました.
このライブラリ一つで,3次元の造形,プレビュー,G-codeの生成,書き出しが可能です.
GUIアプリのver3系列では,内部の生成エンジンを完全にこのライブラリに移行する予定です.

インストール

以下のコマンドでインストール可能です.

pip install gcoordinator

依存ライブラリの中に,指定のバージョンでないと動作しない機能が含まれるため,仮想環境を作成することを強くお勧めします.
具体的には,matplotlib==3.7.1が必要です.

G-codeとは

そもそも,3Dプリンタで用いるG-codeとは,その大部分がノズルが移動していく座標列です. 他にも,押し出し量や移動スピードなどのパラメータも含まれますが,これらはライブラリ内で自動的に設定,計算されます.
従って,ライブラリを使用して造形を行う時に,考慮する必要があるのは,ノズルの移動していく3次元の座標列のみです.

使い方

以下に,最もシンプルな円柱を造形するためのサンプルコードを示します.

import gcoordinator as gc
import numpy as np


full_object = []
for height in range(100):
    arg  = np.linspace(0, 2*np.pi, 100)
    x = 10 * np.cos(arg)
    y = 10 * np.sin(arg)
    z = np.full_like(x, (height+1) * 0.2)
    wall = gc.Path(x, y, z)
    
    full_object.append(wall)

gcode = gc.GCode(full_object)
gcode.start_gcode("PATH TO YOUR START G-CODE")
gcode.end_gcode("PATH TO YOUR END G-CODE")
gcode.save('PATH OF YOUR G-CODE FILE TO SAVE')

3次元造形

for layer in range(100):

for文で各レイヤーについて繰り返しをしています.0層目から99層目まで繰り返されるイメージです.


次に,円を描くために,角度(arg)をnumpy arrayで0から2πの範囲で設定しています.
要素数は100としているため,正確には,正99角形が造形されます. 半径は10で固定すると,

x座標は,

半径×cos(arg)

y座標は,

半径×sin(arg)

より計算できます.

z = np.full_like(x, (height+1) * 0.2)

高さ方向のz座標に関しては,argと同じ要素数のarrayをheightに応じて値を初期化しています.
1を足しているのは,heightが0から始まっても,第一層目は高さ0.2の場所に印刷して欲しいからです.

wall = Path(x,y,z)

上で計算したx,y,z座標列のPathを作成しています.

full_object.append(wall)

作成したPathをfull_objectというリストに追加しています. full_objectは,印刷すべき全てのPathを印刷順に格納したリストです.
なお,n番目のPathの終点とn+1番目のPathの始点とは,自動でトラベルするようになっています.

G-codeの生成

gcode = gc.GCode(full_object)

full_objectに格納された全てのPathをG-codeに変換します.

gcode.start_gcode("PATH TO YOUR START G-CODE")
gcode.end_gcode("PATH TO YOUR END G-CODE")

G-codeの先頭と末尾に書き込むG-codeを指定します.

gcode.save('PATH OF YOUR G-CODE FILE TO SAVE')

G-codeを保存します.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gcoordinator-0.0.21.tar.gz (2.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gcoordinator-0.0.21-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

Details for the file gcoordinator-0.0.21.tar.gz.

File metadata

  • Download URL: gcoordinator-0.0.21.tar.gz
  • Upload date:
  • Size: 2.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for gcoordinator-0.0.21.tar.gz
Algorithm Hash digest
SHA256 227e6efff4e66eab6dbcf54b1cba5683ee1c10f70ca71ff0375ea70f00c6674d
MD5 a4c3d834b6d0a3b8c7ebaa3dcbb8811f
BLAKE2b-256 ed652dceb2ab2cc4b73607ba9dce4b17d82c3cabc7600a5327af0332ee8c44dd

See more details on using hashes here.

File details

Details for the file gcoordinator-0.0.21-py3-none-any.whl.

File metadata

  • Download URL: gcoordinator-0.0.21-py3-none-any.whl
  • Upload date:
  • Size: 28.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for gcoordinator-0.0.21-py3-none-any.whl
Algorithm Hash digest
SHA256 62d40ed62232d670786691d24777129dd9a5bace7e9de51d3299b47cc43fbe84
MD5 05b4be81c4e40c891278f85bdbdbac73
BLAKE2b-256 1c264866efff91a7dba75123cc1f58c871eec696e615c2d3dc3d9d435dc158ab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page