※ 当ページには【広告/PR】を含む場合があります。
2021/02/09
2022/08/18
【FreeCAD使い方講座】Draftでべシェ曲線・Bスプライン曲線を描く〜Pythonコンソールの使い方②
FreeCADの使い方に関する書籍は洋書では目にするのですが、邦書になるとなかなか数が少ないのが難点です。更にいうと、FreeCADの基礎をまとめた書籍さえ少ないので、Pythonスクリプトによる対話型操作のモデリングなんてのは更に情報を仕入れにくい状況にあります。時間がある時に整理しておきたいなとずっと思っていたのですが、FreeCADの3dモデル作成の大きなアドバンテージであるPythonコンソールからの対話的な操作方法を細かく解説してみるコーナーです。初回の今回はとりあえずPythonコンソールの立ち上げと、FreeCADでいうところの対話的な操作とやらの雰囲気を説明出来たらいいなと考えています。【FreeCAD初心者ガイド】SVG画像から印鑑を3dモデリングして光学3dプリンターで出力するFreeCADでSVG画像から印鑑の3dモデルの作成し、光学形成の3dプリンターを利用するまでの手順をまとめてご紹介します。
基礎からのFreeCAD 三訂版 (I/O BOOKS) FreeCAD入門 FreeCADの使い方 いろんな物を作りながら3DCADを学ぼう!: 3Dプリンターでの印刷も掲載 図面の描き方がやさしくわかる本 Pythonスクリプティング ~ 3Dモデリングを極限まで効率化する
無償で使える工業製品向けのモデリングソフトウェアといえば、日本で圧倒的な知名度を誇っているのがAutodeskの「Fusion 360」と言われていますが、海外の方に目を向けると、かなり多種多様なフリーウェアがあり、みなさん思い思いでお気に入りのものを使っているようです。とはいえ、3Dモデリングにおいて手動では作成しにくい、もしくは到底作成不可能な図形というものがあり、その場合には機械的にノードの座標値を計算してメッシュを張っていくという操作が必要になるシーンがあります。パラメトリック・モデラーを謳っているFreeCADであれば、Pythonのプログラミングの知識は多少必要になるものの、高度な3dモデルの作成を可能としてくれる数少ないフリーソフトではないかと思います。ということで、まず今回は、Pythonスクリプティングによる3Dモデル作成の導入編としてFreeCADの対話的な操作で簡単な例を挙げて説明していこうかと思います。
基礎からのFreeCAD 三訂版 (I/O BOOKS) FreeCAD入門 FreeCADの使い方 いろんな物を作りながら3DCADを学ぼう!: 3Dプリンターでの印刷も掲載 図面の描き方がやさしくわかる本 利用例 ~ 対話型でモデルを作る・保存する
今回はPythonコンソールを直にコマンドを一行づつ入力していく感じの言語対話的モデリング
をやってみます。FreeCAD起動 〜 Pythonコンソールの表示
まずは利用するFreeCADのバージョンですが、安定版の0.18を利用しています。ついでにですが、トップのメニューバーから[ヘルプ]
をみると、Pythonスクリプトの技術リファレンスとして以下の2つのリンクが利用できます。Python スクリプト ドキュメント
のほうはPower users hubというWiki内のドキュメントにリンクされています。このページの中ほどからPythonスクリプトのチュートリアルなどに関する解説が載っているようです。もう一つのPython モジュールのマニュアル
では、FreeCAD内で使う関連モジュールのAPIリファレンスにリンクしています。慣れてくるとこちらの方を重宝するかもしれません。なお、これはオンラインのドキュメントではなく、内部のヘルプドキュメントをブラウザ表示しているようです。なのでFreeCADのプログラムを立ち上げている状態でないと閲覧はできないことに注意してください。さて、FreeCADの初回起動時などは、Pythonコンソールが非表示になっている場合があります。このコンソールを立ち上げるためには、[表示] > [パネル] > [Pythonコンソール]
をチェックします。ではここから3dモデルを対話的に作成していきます。簡単なモデルの作成
複雑な操作になるとpyファイルにスクリプトをまとめて実行するやり方を行いますが、今回は簡単な操作の説明を順に説明しますので、一行一行をコンソールに手で入力していきます。まずはコアモジュールFreeCAD
を読み込みます。そして新規ドキュメント(FCStdファイルの本体)を作成します。これが実行されると左のツリービューのモデルにmy_doc
という空のドキュメントが新規に追加されるはずです。このドキュメントに基本図形を追加してみます。こうすることで現在アクティブになっているドキュメントのインスタンスに、cylinder
という空の円柱の部品が付与されます。少し解説しますと、App
が現在起動しているFreeCADプログラムの本体を指しており、具体的にはFreeCADGui
クラスのインスタンス(実体)になります。このAppの持つActiveDocument
プロパティから現在アクティブになっているドキュメントを取得します。ここから3dオブジェクトをドキュメントに追加したい場合、addObject
、既にあるオブジェクトを操作・取得したい場合、getObject
などを使ってドキュメントを編集するのですが、如何せんこの辺のAPIリファレンスの出来が非常に悪いのでどう使って良いものかがユーザーとしては悩ましいのが残念なところです。詳しく知りたい方はFreeCAD source documentationから色々な情報が探れますが、ここもソースコードにリンク切れな状態のまま放置されていることが多く、あまり親切な作りをされておりません。なお、ドキュメントはApp::Document
クラスのインスタンスで、addObjectなどのメンバ関数の記載はこの辺にちょこっとあるだけなので、関数の引数なども用法をよく読んで使いましょう。ちなみに今回は円柱をターゲットにオブジェクト新規作成しました。ドキュメント内の3DオブジェクトはApp::DocumentObjectクラスのインスタンスであり、そのメンバ関数のexcute
から指定されるプロパティ値で、どのように操作したいのかを選択するような使い方をしているようです。つまりはaddObject関数にPart::Cylinder
というプロパティを指定すると円柱が追加される、と解釈されるのですが、なんとも分かりずらい仕様です。さて、作業を続けます。新規に3Dオブジェクトを追加した時点では寸法情報がデフォルト設定になっているので、何も図形が表示されていません。そこでドキュメントの再描画にあたるrecompute
を呼び出してみます。すると再描画処理で画面が更新され、新規に追加した円柱が表示されました。寸法がデフォルトのままではつまらないので、円柱の寸法を変更してみます。以下のように、cylinder_1
のオブジェクトをgetObjectで取得し、寸法のプロパティ値を変えてみます。このプロパティ値の変更は即時に画面に反映され、以下のような円柱にすることができました。なお、Cylinder
の固有のプロパティ値は左のツリービューのプロパティ
から確認できます。ドキュメントの保存
仕上がったFreeCADのドキュメントを保存する際にも、コンソールから保存出来る機能があるので、先程のmy_doc
をローカルに保存してみます。保存の際にはドキュメントのsaveAs
メソッドを利用できます。saveAsを使う際の注意点としては、保存したいディレクトリまでの絶対パスを与えてあげると混乱が少なくて済みます。このサンプルでは現在利用中のDebian Linux上のデスクトップに保存したときの設定です。相対パスを使うと、FreeCADがインストールされている場所がシステム環境によってまちまちですので、保存した場所を忘れてしまうと、ファイルを探す手間がかかります。以上でFreeCADにおける対話的な操作で、モデルの生成から保存までを一通りできるようになったかと思います。
基礎からのFreeCAD 三訂版 (I/O BOOKS) FreeCAD入門 FreeCADの使い方 いろんな物を作りながら3DCADを学ぼう!: 3Dプリンターでの印刷も掲載 図面の描き方がやさしくわかる本 もっとPythonスクリプトに親しむ
先程の節でも触れましたが、FreeCADのPythonスクリプトのためのAPIリファレンスの内容はかなり完成度が低く、ほぼソースコードの実装を読み込んでいるのと大差がありません。なので、アレをこうしたい、ソレをこうしたい...というときにどの関数を使ったらいいものかリファレンスを眺めていても行き詰まると思います。そこで、お目当てのPythonスクリプトの処理内容を知るのに一番手っ取り早い方法は、実際に手でその操作をやってみること
です。一例として先程のシリンダーの追加の操作相当のことを手動でやってみましょう。適当なドキュメントを新規作成させた後で、[Part]
モジュールに切り替えて、円柱形のアイコンがありますので、このボタンを押すとシリンダーのモデルが生成する操作になります。このとき、Pythonコンソールも表示させておくのがポイントで、実際にシステム側がバックグランド行った処理がトレースできるようになっています。手動で行った操作を詳細を実際に確認することで、例えば円柱を追加するための最低限のスクリプトはであることが分かります。これはAPIリファレンスを紐解くより圧倒的に早いので、これからPythonスクリプトでFreeCADによる3Dモデリングしたい方には必須のテクニックになります。
基礎からのFreeCAD 三訂版 (I/O BOOKS) FreeCAD入門 FreeCADの使い方 いろんな物を作りながら3DCADを学ぼう!: 3Dプリンターでの印刷も掲載 図面の描き方がやさしくわかる本 まとめ
今回の記事では以下の主に以下の内容を解説しました。基本的には、FreeCADのPythonスクリプトの真髄は、人の手でやっていた操作をテキストで写し取る
ことに他ならないのですが、そこにはモデリングする人の地道で泥臭い努力が必要になってくることを念頭においておかれたほうがいいかもしれません。次回以降は、もっと突っ込んで実用的なPythonスクリプティングの話ができたら良いなと思っています。参考サイト
FreeCADPython:入門Python3スクリプトでFreeCADモデリング(Ubuntu18.04)