2025年12月28日日曜日

FreeCADでのpython処理をツールバーのボタンとして実行可能にする


背景

FreeCADの処理を任せるpythonプログラムをマクロとして登録してボタンを押して呼び出し可能にするのに手間取ったので、備忘録として設定方法と関連情報を記事に残します。

使ったもの

FreeCAD 1.0.2

ボタンで実行で動かしたい処理: 以前作成したPartの面をDXFファイルに書き出す処理

下記の処理をボタン押しで実行可能にします。
export-dxf-from-shape.FCMacro

以前の記事で試行錯誤した内容をまとめたものです。
FreeCADでpythonを使いPartの面をTechDrawに置いてDXFファイルを書き出す 
FreeCADのTechDrawのViewの大きさをpythonで把握する

pythonプログラムを配置

FreeCADが認識するディレクトリに実行したいプログラムを配置します。
GUI操作とディレクトリに配置の2種類の方法を紹介します。

GUIで配置

FreeCADのGUIからファイルを作成する方法を紹介します。

マクロ -> マクロ を選んでマクロの実行画面を開きます。


「作成」ボタンを押し、作成したいファイル名を入力します。


今回はexport-dxf-from-shapeという名前のマクロを作ります。


空のファイルが表示されるので、ボタン操作で呼び出したいpythonの処理を入力して保存します。
Ctrl + sで保存できます。



GUIでファイルを作り、中身を保存できました。

参考
How to install macros の Manual method 1. Copy the code to the macro editor

ファイルを配置

GUI操作を介さず、FreeCADが認識するディレクトリに実行したいプログラムを配置する方法を紹介します。
ファイルの拡張子はpyかFCMacroのどちらでも構いません。

記事を書いている際に利用したのはubuntu22.04上のsnap版FreeCADなので、下記のディレクトリにプログラムを配置しました。
/home/${USER}/snap/freecad/common


snap版ではないlinux版や他のOSは下記のディレクトリです。

Linux: /usr/share/freecad/
Windows: C:\Program Files\FreeCAD\
macOS: /Applications/FreeCAD/

マクロ置き場のディレクトリは マクロ -> マクロ で開ける「マクロの実行」画面の下部でも確認できます。


参考
How to install macros の Macros directory

ボタンを作成

配置したマクロのファイルをボタンで呼び出し可能にします。

マクロ -> マクロ を選んでマクロの実行画面を開きます。


ボタンにしたいファイルを選んだ状態でツールバーを押します。


ピクセルマップ(アイコン)を選びます。


今回はdocument-printを割り当てました。


ピクセルマップ割当後に追加を押します。


ピクセルマップ付きのマクロとして追加できたら、ウォークスルーのマクロタブを閉じます。


ツールバーのタブが出て来ます。
中央に赤く表示される右矢印ボタンを押したいのですが、ボタンの入れ先が無いと押しても無反応なので、「新規」を押してボタンの入れ先を作ります。
今回は「全体」を選んだ状態で「新規」を押し、全てのWorkspaceで表示されるボタンにします。


名前は適当で良いです。

ボタンを入れる先ができたので、右ボタンを押してツールバーに追加します。


ボタンが追加されたら閉じるを押して設定画面を閉じます。


マクロを呼び出せるボタンをツールバーに表示できました。


思っていたのと違ったこと

認識が間違っていたら、実現方法や関連情報を教えていただけると嬉しいです。

マクロ用のディレクトリを作れない

マクロ用のディレクトリを作って関連ファイルをその中に置く方式かと思っていたのですが、ディレクトリの中に置くとマクロが認識されなかったので、マクロ置き場にサブディレクトリ無しでのファイル配置が必要でした。
マクロ管理用のgitリポジトリを作りづらいです。

Addon managerを介さないプログラムではマクロのピクセルマップ(アイコン)や説明を設定できなさそう

Addon managerで管理されているマクロは設定をプログラム中に記述できるのですが、自作するマクロではそれを書いても反映されず、ピクセルマップ(アイコン)のツールバー設定前の手動での指定は必須のようでした。

設定可能な項目はマクロ管理リポジトリのreadmeに記されていますが、下記項目を設定しても変化無しでした。
FreeCAD-macros macro-metadata

Addon managerの管理対象のマクロは、対象リポジトリへのファイル直置きで管理されている

Addon managerの管理対象のworkspaceは、該当リポジトリ(FreeCAD-addons)にsubmoduleとして配置され、ファイルは管理者が各リポジトリで行っています。

一方、Addon managerの管理対象のマクロは、該当リポジトリ(FreeCAD-macros)にマクロ本体が配置されています。
pull requestを出せば取り込みを検討してもらえます。

本家がコード本体も管理する方式なのは意外でした。

おわり

ツールバーにプログラムを呼び出すボタンを作れました。
プログラムでアイコンを指定できなかったり、サブディレクトリでマクロをまとめられなかったり、思っていた設定は出来なかったものの、一旦良しです。

参考

公式のマクロインストール方法説明書(wiki)です。
How to install macros

今回ボタン化した処理です。
export-dxf-from-shape.FCMacro

Addon managerのworkspaceを管理するリポジトリです。
FreeCAD-addons

Addon managerのマクロを管理するリポジトリです。
FreeCAD-macros

上記リポジトリへのpull requestです。
[Generator3D] New Macro: Generate a solid from 2 or 3 views (sketches)

0 件のコメント :