自作CNCの奮戦記。
通常のスパイラルエンドミルで樹脂の掘り下げを行うと、切り粉が絡まり、油断すると玉になって失敗しやすい。自動化は神経使います。
NCVCでは、掘り下げ時にどうしてもエンドミルの穴あけ(下降)出てしまうので、そこで切り粉が絡まることが多い。
そこで、掘り下げのコードを抽出しランピングコードに変更するスクリプトをPythonで作成しました。
ランピングとは?
真下に掘り下げるのではなく、Z字状に傾斜切削をしながら目的の深さに切り込むことです。今回の目的は樹脂のキリクズ絡み防止です。エンドミルの掘り下げは負荷が大きく、早い回転数による糸状のキリクズが螺旋状に絡むリスクが大きいです。
アルミ薄板パネルの先導穴の掘り下げにも使う予定です。
傾斜切削なので、掘り下げより水平方向のパスが増えます。したがって、次のコードのカッターパスの一部を利用するなどして対処します。
ランピングを導入した深掘り切削。糸状のキリクズは出ない。
NCVCの出力コードをPythonで加工
変換の方式
- Z軸掘り下げのステップを探す
- 次のステップが直線(G01)か円弧(G02,G03)かで分ける
- 直線(G01)の場合、RAMPLEN(プログラム埋め込み値:2mm)
- 切削長がRAMPLENより長い場合は、RAMPLEN
- 切削長がRAMPLENより短い場合は、その切削長
- 円弧(G02,G03)の場合はその円弧長(将来的にはRAMPLENで分けたい)
- Z軸ステップRAMPZ(プログラム埋め込み値:-0.5mm)でZ方向に切削長でジグザグなコードに入れ替え
変換の条件
- 深掘りとヘリカル切削はレイヤを分ける
- Z軸F値(スピード)の1の位を’1’にする(例:F1001,F501など)。F1001は、Z軸切込み速度としては早すぎるが、ランピング速度として変換して用いるため水平方向切削速度に準じたものにする
- RampingしたくないときはZ軸スピードの1の位を’1’以外にする。(もっとも、変換しなければよいだけのこと)
変換例
NCVCで変換
NCVCの出力コード
%
(2020/01/18 16:34)
(MLON MADE NCVCtest.ncd FROM NCVCtest.dxf AND NCVCtest.nci)
G90G54G92X0Y0Z10.
M08
S3000M03
(Layer="CAM_LINE1" start)
G00Y5.
Z2.
G01Z-2.5F200
G03X5.Y0I5.F900
G01X25.
G03X30.Y5.J5.
G01Y15.
G03X25.Y20.I-5.
G01X5.
G03X0Y15.J-5.
G01Y5.
Z-5.F200
Y15.F900
G02X5.Y20.I5.
G01X25.
G02X30.Y15.J-5.
G01Y5.
G02X25.Y0I-5.
G01X5.
G02X0Y5.J5.
G01Z-7.5F200
G03X5.Y0I5.F900
G01X25.
G03X30.Y5.J5.
G01Y15.
G03X25.Y20.I-5.
G01X5.
G03X0Y15.J-5.
G01Y5.
Z2.F1001
G00Z10.
M09
M05
Y0
M30
%
Pythonコードのダウンロードはここ
変換後のコード
%
(2020/01/18 16:34)
(MLON MADE NCVCtest.ncd FROM NCVCtest.dxf AND NCVCtest.nci)
G90G54G92X0Y0Z10.
M08
S3000M03
(Layer="CAM_LINE1" start)
G00Y5.
Z2.
G03X5.Y0.Z2.I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z1.5I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z1.I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z0.5I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z0.I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-0.5I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-1.I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-1.5I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-2.I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-2.5I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0I5.F900
G01X25.
G03X30.Y5.J5.
G01Y15.
G03X25.Y20.I-5.
G01X5.
G03X0Y15.J-5.
G01Y5.
G01X0.Y7.Z-2.5F900
G01X0.Y5.
G01X0.Y7.Z-3.F900
G01X0.Y5.
G01X0.Y7.Z-3.5F900
G01X0.Y5.
G01X0.Y7.Z-4.F900
G01X0.Y5.
G01X0.Y7.Z-4.5F900
G01X0.Y5.
G01X0.Y7.Z-5.F900
G01X0.Y5.
Y15.F900
G02X5.Y20.I5.
G01X25.
G02X30.Y15.J-5.
G01Y5.
G02X25.Y0I-5.
G01X5.
G02X0Y5.J5.
G03X5.Y0.Z-5.I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-5.5I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-6.I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-6.5I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-7.I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0.Z-7.5I5.J0.
G02X0.Y5.I0.J5.
G03X5.Y0I5.F900
G01X25.
G03X30.Y5.J5.
G01Y15.
G03X25.Y20.I-5.
G01X5.
G03X0Y15.J-5.
G01Y5.
Z2.F1001
G00Z10.
M09
M05
Y0
M30
%
NCVC設定で切削方向を「往復」にしたので、直線側と円弧側交互の方向にランピングが行われていることが分かる
以上