GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

kliment

Printrun – Pronterface、Pronsole、およびPrintcore – 純粋なPython 3d印刷ホストソフトウェア

投稿日:

Pronterface、Pronsole、およびPrintcore – 純粋なPython 3d印刷ホストソフトウェア

Printrunは、printcore、pronsoleとpronfaceface、および役立つスクリプトの小さなコレクションで構成されています。

  • printcore.pyは、簡単に複製ホストを作成できるライブラリです。
  • pronsole.pyはtabcompletion goodnessを持つ対話型のコマンドラインホストソフトウェアです
  • pronterface.pyは、pronsoleと同じ機能を持つグラフィカルなホストソフトウェアです

PRTRTRUNを取得する

このセクションでは、プリコンパイルされたバイナリを使用することを提案しています。この方法で、簡単なインストールのためにすべてを1つのパッケージにまとめます。

最新のシャイニーな機能が必要な場合は、このREADMEの説明に従って、ソースからPrintrunを実行することができます。

Windows

プリコンパイルされたバージョンはhttp://koti.kapsi.fi/~kliment/printrun/から入手できます。

Mac OS X

プリコンパイルされたバージョンはhttp://koti.kapsi.fi/~kliment/printrun/から入手できます。

OSXユーザのための注意:OSXがあなたにファイルが壊れていると伝えるならば、それを再ダウンロードする必要はありません。 代わりに、OSXが署名のないアプリケーションを実行できるようにする必要があります。 これを行うには、 sudo spctl --master-disable

Linux

Ubuntu / Debian

公式パッケージ(*)からPrintrunをインストールすることができます:

sudo apt install printrun

または、Printrunをソースから直接実行することもできます。

  1. (**)を使用して依存関係を取得してインストールします。
sudo apt-get install python-serial python-wxgtk2.8 python-pyglet python-numpy cython python-libxml2 python-gobject python-dbus python-psutil python-cairosvg libpython-dev git
  1. リポジトリのクローン作成
git clone https://github.com/kliment/Printrun.git
  1. git cloneコマンドで作成されたPrintrunディレクトリから、Printrunを使用して起動することができます。

(*)Ubuntu Yakkety Yak以降、Debian Stretch / Sidリポジトリで利用可能なPrintrunパッケージは、 #615号の影響を受けることが知られています。

(**)Ubuntu Xenial Xerus以降およびDebian Jessie以降のユーザは、 “python-wxgtk2.8″パッケージが見つからず、 “python-wxgtk3.0″に置き換えられます。 代わりに “python-wxgtk3.0″でPrintrunを実行することは可能ですが、問題#615の影響を受けることが知られています。

Chrome OS

あなたはcrouton( https://github.com/dnschneid/crouton )経由でPrintrunを使うことができます。 あなたがUbuntu Trustyを望んでいると仮定すると、あなたはおそらくsudo sh -e ~/Downloads/crouton -r trusty -t xfcesudo sh -e ~/Downloads/crouton -r trusty -t xfceてUbuntuをインストールしました。 上記のUbuntu / Debianの行と依存関係を取り出してインストールし、git clone経由でソースを入手してください。

デフォルトでは、Chrome OSのcroutonではシリアルポートにアクセスできないため、3Dプリンタに接続することはできません。 この問題を解決するには、Linux環境内のシリアルグループに自分自身を追加してください

sudo usermod -G serial -a <username>

<username>はあなたのユーザ名でなければなりません。 このグループをアクティブに変更し、プリンタと通信できるようにログアウトしてください。

フェドラ

公式パッケージからPrintrunをインストールすることができます。 パッケージ全体をインストールする

sudo dnf install printrun

または、必要なアプリのみを入手する

sudo dnf install pronsoleまたはpronterfaceまたはplater sudo dnf install pronsole

dnf --enablerepo updates-testingオプションを追加すると、より新しいパッケージが提供されることがあります。

パッケージが古すぎる場合は、ソースから直接Printrunを実行することもできます。 依存関係を取得およびインストールする

  1. sudo dnf install pyserial wxPython python-pyglet python-cairosvg

オプション: sudo dnf install simarrange

Archlinux

パッケージはAURで利用可能です。 ただ走れ

yaourt printrun

pronterfacepronsole 、…コマンドを直接楽しむことがpronterfaceます。

SOURCEからの実行

最新の機能をテストする場合は、Printrunをソース用に実行します。

依存関係

pronfaceを使用するには、次のものが必要です。

  • Python(理想的には2.6.xまたは2.7.x)
  • pyserial(またはubuntu / debianのpython-serial)
  • pyreadline(Linuxでは不要)と
  • argparse(Python> = 2.7でデフォルトでインストールされます)
  • wxPython(タブ付きモードなどのいくつかの機能はwx 2.9でうまく機能します)
  • パイグレット
  • numpy(3Dビューの場合)
  • pycairo(プロジェクター機能を使用する)
  • cairosvg(プロジェクター機能を使用する)
  • dbus(一部のLinuxシステムでスリープを抑止するため)

下記のWindowsおよびMac OS Xの具体的な手順を参照してください。 Linuxでは、あなたのパッケージマネージャを直接使うべきです( “PRINTRUNの取得”を参照)、またはpip:

pip install -r requirements.txt

CythonベースのGコードパーサー

PrintrunのデフォルトのGコードパーサーは、メモリが非常に空いていますが、余分なビルド時間依存性(Cython)を必要とするだけでなく、

python setup.py build_ext --inplace

警告メッセージ

WARNING:root:Memory-efficient GCoder implementation unavailable: No module named gcoder_line

この最適化されたGコードパーサーがコンパイルされていないことを意味します。 それを取り除き、より良い実装の恩恵を受けるには、Cythonをインストールし、上記のコマンドを実行してください。

Windows

以下をダウンロードして、この順序でインストールしてください。

  1. http://python.org/ftp/python/2.7.2/python-2.7.2.msi
  2. http://pypi.python.org/packages/any/p/pyserial/pyserial-2.5.win32.exe
  3. http://downloads.sourceforge.net/wxpython/wxPython2.8-win32-unicode-2.8.12.0-py27.exe
  4. https://pypi.python.org/packages/any/p/pyreadline/pyreadline-1.7.1.win32.exe
  5. http://pyglet.googlecode.com/files/pyglet-1.1.4.zip

最後のものは、解凍してコマンドターミナルを開き、解凍したディレクトリに入り、 python setup.py installを実行する必要があります

Mac OS X Lion

  1. アクティブなPythonがシステムバージョンであることを確認してください。 brew uninstall pythonまたは他の適切な呪文をbrew uninstall pythonます)
  2. あなたのpythonバージョン(ほとんどの場合Lionで2.7、python –versionで確認してください)にマッチするinstall [wxPython2.8-osx-unicode]をダウンロードしてください: http ://wxpython.org/download.php#stable動作することが知られていますPythonWX: http ://superb-sea2.dl.sourceforge.net/project/wxpython/wxPython/2.8.12.1/wxPython2.8-osx-unicode-2.8.12.1-universal-py2.7.dmg
  3. http://pypi.python.org/packages/source/p/pyserial/pyserial-2.5.tar.gzからpyserialをダウンロードして解凍します。
  4. 端末で、解凍したフォルダに移動してから、 sudo python setup.py install
  5. http:// http://pyglet.googlecode.com/files/pyglet-1.1.4.zipで 4を繰り返します。

このツールはおそらく64ビットのライオンでうまく動作しますが、32ビット設定のどれかを混乱させる必要はありません。 そうでない場合は、5. Pronterfaceを実行する前に、端末でVERSIONER_PYTHON_PREFER_32_BIT = yesをエクスポートしてみてください

Mac OS X(前ライオン)

プリコンパイルされたバージョンはhttp://koti.kapsi.fi/~kliment/printrun/から入手できます。

  1. http://downloads.sourceforge.net/wxpython/wxPython2.8-osx-unicode-2.8.12.0-universal-py2.6.dmgをダウンロードしてインストールします。

  2. http://pypi.python.org/packages/source/p/pyserial/pyserial-2.5.tar.gzからpyserialのソースを取得します

  3. pyserialをフォルダに解凍します。 次に、端末で、解凍したフォルダに移動して、次のように入力します。

    defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

    sudo python setup.py install

また、32ビットモードでpythonを実行するには、setup.pyコマンドを実行する前に次の環境変数を設定します。

この代替方法は、Mac OS X 10.6.8でも動作することが確認されています。

export VERSIONER_PYTHON_PREFER_32_BIT=yes

sudo python setup.py install

その後、 http:// http://pyglet.googlecode.com/files/pyglet-1.1.4.zipで同じ操作を繰り返します。

PRINTRUNの使用

PRONTERFACEの使用

Printrunの設定が完了したら、解凍したディレクトリでpronterface.pyを起動することができます。 最初のドロップダウンから使用しているポート名を選択し、ボーレートを選択して接続を押します。 STL(下のskeinforgeの注釈を参照)またはGCODEファイルを読み込み、それをSDにアップロードしたり直接印刷することができます。 「モニタプリンタ」機能を有効にすると、3秒ごとにプリンタの状態(温度、SD印刷の進行状況)がチェックされます。 コマンドボックスはすべてのpronsoleコマンドを認識しますが、タブコンプリートはありません。

stlファイルをロードする場合は、Slic3rやSkeinforgeなどのスライシングプログラムをインストールし、そのパスを設定に追加する必要があります。

Slic3r統合

PronterfaceからSlic3rを直接呼び出すには、スライシングコマンド( 設定 > オプション > 外部コマンド > スライスコマンド )がslic3r $s -o $oます。 Slic3rが適切にインストールされている場合は「slic3r」で十分です。そうでない場合は、Slic3rの実行可能ファイルへのフルパスで置き換えてください。

Slic3r統合オプション( 設定 > オプション > ユーザーインターフェイス > Slic3r統合を有効にする )がオンになっている場合、アプリケーションの再起動後に新しいメニューが表示され、以前に保存したSlic3r印刷/フィラメント/プリンタ設定を選択できます。

PRONSOLEの使用

pronsoleを使用するには、次のものが必要です。

  • Python(理想的には2.6.xまたは2.7.x)
  • pyserial(またはubuntu / debianのpython-serial)と
  • pyreadline(Linuxでは不要)

pronsoleを起動すると、コマンドプロンプトが表示されます。 使用可能なコマンドを表示するには、「help」と入力します。 すべてのコマンドには内部ヘルプがあり、「help commandname」と入力するとアクセスできます。たとえば、「help connect」

stlファイルをロードする場合は、 “skeinforge”というフォルダにskeinforgeのバージョンを入れておく必要があります。 “skeinforge”フォルダはpronsole.pyと同じフォルダになければなりません

PRINTCOREの使用

printcoreを使うには、python(理想的には2.6.xまたは2.7.x)とpyserial(またはubuntu / debianではpython-serial)が必要です。フル機能のホストの例についてはpronsoleを、単純なコマンドの場合はprintcore.pyの一番下を見てください次のコード例を参照してください。

#to send a file of gcode to the printer
from printrun.printcore import printcore
from printrun import gcoder
p=printcore('/dev/ttyUSB0',115200) # or p.printcore('COM3',115200) on Windows
gcode=[i.strip() for i in open('filename.gcode')] # or pass in your own array of gcode lines instead of reading from a file
gcode = gcoder.LightGCode(gcode)
p.startprint(gcode) # this will start a print

#If you need to interact with the printer:
p.send_now("M105") # this will send M105 immediately, ahead of the rest of the print
p.pause() # use these to pause/resume the current print
p.resume()
p.disconnect() # this is how you disconnect from the printer once you are done. This will also stop running prints.

プラーター

Printrunには、STL plater( plater.py )とG-code plater( gcodeplater.py )という2つの画家があります。

3Dビューアのコントロール

3Dビューアが有効な場合、コントロールは次のようになります。

  • マウスホイール:ズーム(コントロールはズームの変更ステップを減らす)
  • Shift +マウスホイール:レイヤーを探索する(印刷のgcodeビューで、コントロールキーはレイヤーを1の代わりに10ずつ増やす)またはオブジェクトを回転させる(platersで)
  • 左クリックドラッグ:回転ビュー
  • 右クリック:ドラッグビュー:パンビュー
  • Shift +左クリックドラッグ:オブジェクトを移動(platers内​​)
  • Page up / down keys:ズーム(ズームの変更ステップを減らすコントロール)
  • 上/下キー:レイヤーの探索
  • Rキー:リセットビュー
  • Fキー:印刷物全体を表示するビューをフィット
  • Cキー:「現在のレイヤのみ表示」モードを切り替える(印刷gcodeビューで)

RPCサーバー

pronterfacepronsole 、RPCサーバーを起動しますpronsoleサーバーは、デフォルトでlocalhostポート7978で実行され、印刷の進捗情報を提供します。 以下は、印刷状況を問い合わせるサンプルのPythonスクリプトです:

import xmlrpclib

rpc = xmlrpclib.ServerProxy('http://localhost:7978')
print rpc.status()

コンフィグレーション

ビルドのディメンション

ビルド・ディメンションは、build_dimensionsオプション(Pronterface設定でグラフィカルに編集可能)を使用して指定できます。 このオプションは、9つのパラメータで構成されます.3つはビルドボリュームのディメンション、3はビルドボリュームの座標系のオフセットの最小値、3はエンドストップの位置です。

デフォルト値は200x200x100+0+0+0+0+0+0 、これは200x200mm(幅x高さ)のベッドで、Z方向に100mmの移動距離(最初の3つの数字があります)とオフセットなしに対応します。 絶対座標系の原点(0,0,0)はベッド表面の左下隅にあり、ベッド表面の右上隅は(200,200,0)です。

一般的な方法は、ベッド表面の中心に座標系(0,0,0)の原点を置くことです。 これは、次の3つのパラメータ、たとえば200x200x100-100-100+0+0+0+0を使用することによって実現されます。 この場合、ベッドの左下隅は(-100、-100,0)になり、右上は(100,100,0)になります。

これらの2つの設定は、ほとんどの人にとって十分であるはずです。 しかし、いくつかの特定の複雑な設定やGCodeやいくつかの機能については、完璧な表示のためにエンドストップ位置が必要な場合もあります。 これらの位置(通常は0,0,0なので、あなたがおそらく標準的な設定を持っているかわからない場合)は絶対座標で指定されます。ベッドを(-100、-100,0)からあなたのエンドストップはベッドの左右から10mm離れていて、Zの端をベッドの5mm上に置いているので、エンドストップの位置を(-110、-110,5)に設定してください。

マクロとカスタムボタンの使用

pronsoleとpronfaceのマクロ

シンプルなGコード(またはpronsoleコマンド)シーケンスを送信するには、マクロ定義で1つずつ入力するだけです。 マクロにパラメータを使用する場合は、{0} {1} {2} …と置き換えてください。

すべてのマクロは入力後すぐに自動的に保存されます。

例1、単純な1行のエイリアス:

PC> macro where M114

クエリの位置を示すコードを覚えておく必要はなく、その位置をクエリできます。

PC> where
X:25.00Y:11.43Z:5.11E:0.00

例2 – 異なるスライサープログラム間を切り替えるマクロ、オプションを変更するための “set”コマンドの使用:

PC> macro use_slicer
Enter macro using indented lines, end with empty line
..> set sliceoptscommand Slic3r/slic3r.exe --load slic3r.ini
..> set slicecommand Slic3r/slic3r.exe $s --load slic3r.ini --output $o
Macro 'use_slicer' defined
PC> macro use_sfact
..> set sliceoptscommand python skeinforge/skeinforge_application/skeinforge.py
..> set slicecommand python skeinforge/skeinforge_application/skeinforge_utilities/skeinforge_craft.py $s
Macro 'use_sfact' defined

例3、単純なパラメトリックマクロ:

PC> macro move_down_by
Enter macro using indented lines, end with empty line
..> G91
..> G1 Z-{0}
..> G92
..>

マクロを呼び出してプリントヘッドを5ミリメートル下に移動します。

PC> move_down_by 5

より強力なマクロプログラミングのために、Pythonコードを使用してエスケープすることは可能です! マクロコマンドの前のシンボル。 このPythonコードの呼び出しは、対話型プロンプトでも機能します。

PC> !print "Hello, printer!"
Hello printer!

PC> macro debug_on !self.p.loud = 1
Macro 'debug_on' defined
PC> debug_on
PC> M114
SENT:  M114
X:0.00Y:0.00Z:0.00E:0.00 Count X:0.00Y:0.00Z:0.00
RECV:  X:0.00Y:0.00Z:0.00E:0.00 Count X:0.00Y:0.00Z:0.00
RECV:  ok

マクロコマンド自体を使用して、簡単な自己変更またはトグル機能を作成することができます。

例:2つのマクロをスワップしてトグルを実装する:

PC> macro toggle_debug_on
Enter macro using indented lines, end with empty line
..> !self.p.loud = 1
..> !print "Diagnostic information ON"
..> macro toggle_debug toggle_debug_off
..>
Macro 'toggle_debug_on' defined
PC> macro toggle_debug_off
Enter macro using indented lines, end with empty line
..> !self.p.loud = 0
..> !print "Diagnostic information OFF"
..> macro toggle_debug toggle_debug_on
..>
Macro 'toggle_debug_off' defined
PC> macro toggle_debug toggle_debug_on
Macro 'toggle_debug' defined

今度は、 “toggle_debug”マクロを呼び出すたびに、デバッグ情報のオンとオフを切り替えます。

PC> toggle_debug
Diagnostic information ON

PC> toggle_debug
Diagnostic information OFF

マクロでPythonコード(!記号を使用)を使用する場合、ブロック/条件/ループを使用することもできます。 pronsoleコマンドとPythonコードを混在させても構いません。ちょうどPythonの字下げを維持してください。 たとえば、次のマクロは診断情報を前の例と同様に切り替えます。

!if self.p.loud:
  !self.p.loud = 0
  !print "Diagnostic information OFF"
!else:
  !self.p.loud = 1
  !print "Diagnostic information ON"

マクロパラメータは、ローカルで定義されたリスト変数としてエスケープされたPythonコード ‘!’で利用できます:arg [0] arg [1] … arg [N]

すべてのPythonコードはpronsole(またはPronterWindow)オブジェクトのコンテキストで実行されるため、多大な機能を提供するすべての内部変数とメソッドを使用することができます。 しかし、プログラムが開発されるにつれ、内部変数と方法はあまりよく文書化されておらず、変更の対象となる可能性があります。 したがって、必要な機能の大部分を簡単に含むpronsoleコマンドを使用することが最善です。

いくつかの便利なPythonモード専用変数:

!self.settings - contains all settings, e.g. 
  port (!self.settings.port), baudrate, xy_feedrate, e_feedrate, slicecommand, final_command, build_dimensions
  You can set them also via pronsole command "set", but you can query the values only via python code.
!self.p - printcore object (see USING PRINTCORE section for using printcore object)
!self.cur_button - if macro was invoked via custom button, the number of the custom button, e.g. for usage in "button" command
!self.gwindow - wx graphical interface object for pronterface (highly risky to use because the GUI implementation details may change a lot between versions)

いくつかの便利な方法:

!self.onecmd - invokes raw command, e.g. 
    !self.onecmd("move x 10")
    !self.onecmd("!print self.p.loud")
    !self.onecmd("button "+self.cur_button+" fanOFF /C cyan M107")
!self.project - invoke Projector

ホストコマンドの使用

PronsoleのPronsoleとコンソールインターフェースには、直接またはGコード内で使用できるいくつかのコマンドがあります。 Gコードの中からホストコマンドを実行するには、単に;@前に置くだけ;@

利用可能なコマンドのリスト:

  • pause :ユーザーが再開するまで印刷を一時停止する
  • run_script scriptname [arg1 ...] :ホストコンピュータ上でカスタムスクリプトまたはプログラムを実行します。 これは、例えば、ユーザに警告するためのサウンドを生成するために使用することができる(例えば、 beep utilが利用可能であったマシン上のrun_script beep -r 2 )、またはプリント終了時に電子メールまたはテキストメッセージを送信するために使用することができる。 引数に$ sトークンを使用して、現在のgcodeファイル名を取得できます
  • run_gcode_script scripname [arg1 ...]run_scriptと同じrun_gcode_script scripname [arg1 ...]が、スクリプトによって表示されるすべての行が順番に解釈される(Gコード行がすぐにプリンタに送信される)
  • shell pythoncommand :pythonコマンドを実行します( !pythoncommandしても実現できます)
  • set option valueset option value設定します。たとえば、 set mainviz 3D
  • connect
  • block_until_online :プリンタがオンラインになるのを待ちます。 例えば、あなたはpython pronsole.py -e "connect" -e "block_until_online" -e "upload object.gcode"を実行してpronsoleを起動し、プリンタに接続し、オンラインになってobject.gcodeファイルをアップロードすることがobject.gcodeます。
  • disconnect
  • load gcodefile
  • upload gcodefile target.ggcodefileをSDカードのtarget.gにアップロードする
  • slice stlfile :スライスstlfileと生成されたGコードをロードする
  • print :現在ロードされているファイルを出力する
  • sdprint target.g :SDプリントを開始する
  • ls :SDカードのリストファイル
  • eta :残り印刷時間を表示する
  • gettemp :現在のプリンタの温度を取得する
  • settemp :ホットエンド目標温度を設定する
  • bedtemp :ベッド目標温度を設定する
  • monitor :印刷中にプリンタの進行を監視する
  • tool Ktool K切り替える
  • move xKx軸に沿って動く(他の軸とも一緒に動く)
  • extrude length [speed]
  • reverse length [speed]
  • home [axis]
  • off :ファン、モーター、押出機、ヒートベッド、電源を切る
  • exit

ライセンス

Printrun is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Printrun is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Printrun.  If not, see <http://www.gnu.org/licenses/>.

すべてのスクリプトにこのライセンスノートを含める必要があります。そうでない場合は、お気軽にお問い合わせください。 このライセンスノートの記載が困難なファイル(画像など)は、同じ条件で配布されます。







-kliment

執筆者: