FreeCAD 1.0のクソTips集
文句ばかり言っているが、初めて見た3D CADなので刷り込み現象で好きになってしまった……
筆者はFreeCAD歴1ヶ月くらいなので、変なことを言っているかもしれない。何か見つけたら教えてほしい。
メタTips: やりたいことの調べ方
どの機能を使うか見当がついている場合、公式Wikiのワークベンチ一覧から当該機能のドキュメントに目を通しておくのがいい。ただし、未リリースの機能が掲載されていたりするので、怪しかったらバージョン情報を確認すること。
公式のforumが充実している。あとYouTubeに大量のチュートリアルが存在する。ただしFreeCADは歴史が長いため、古い情報に注意。今では存在しない機能の紹介をしていたり、今なら一発で解決できることをややこしい方法でやっていることがある。
公式WikiのWorkAroundsには「みんなが求めているが諸事情により実装されていない機能」のワークアラウンドについてまとまっているので目を通しておくと良い。
公式WikiのMacro recipesにも目を通しておくと良い。
自分がいま何をしたのか知りたい
FreeCADはほとんどの機能にショートカットキーが割り当てられているため、うっかり入力ミスをすると予測不能の操作が実行され、そのうえ画面の変化に乏しく何が起こったか全然わからないということになりがちだ。
そんなときは、Undoアイコンのドロップダウンを出すことで、操作履歴が表示されて便利。
また、Pythonコンソールを表示している場合は、実行した操作がコメントとして表示される。
おすすめの設定(Mac)
- General
- Selection
- Enable Selectionの色設定(デフォルトは黒に近くて見にくい)
- Selection
- Display
- UI
- Navigation
- 3D Navigation: Touchpad(それ以外の設定だと「中マウスボタンをドラッグ」みたいな操作が必要になってトラックパッドと相性が悪すぎる)
- Navigation
- UI
- Sketcher
- Appearance: 線を太めに
その他、表示サイズが全体的に小さいので、適宜変えるとよいです。
なんか形状がぐちゃぐちゃになってアンドゥしても戻らん
データはアンドゥされているが表示が更新されていない可能性がある。Recompute objectするといいだろう。
信じがたい頻度でSEGVする
普通はしない変なことをするとすぐSEGVするようです。慣れると変なことをする機会が減って実用性が出てくる。
指定した軸を中心に回転させたい
Draft workbenchのRotateツールを使う。
- Draft workbenchに切り替え
- Working planeを回転軸と直行する平面に設定
- 回転させたいオブジェクトを選択
- Rotateツールを実行
- 回転軸となる点を選択(ツールバーのSnap, Snap Endpointあたり有効にしないとスナップしないので注意)
- 角度の基準となる線を指定
- 回転角度を入力
Originを移動させたい
他のオブジェクトがないなら、Originの親オブジェクトを選択してDraft workbenchのMove/RotateツールでOK。
指定したOriginを元にPartを作る
面倒らしいです(未検証)
別のPartをSketchのExternal geometryとして参照したい
そのままだと無理。Part DesignのShape binderツールで目的のパーツへの参照を作るとよい。
Thin extrudeする
自由に描いた線を元に指定厚さの板を押し出す機能。FreeCADだと深遠な事情で実装が難しいらしい(CADカーネルとしてOCCTというライブラリに依存しており、そいつが対応してない場合は厳しいことになる)。
ワークアラウンドがいくつかあるようだが、筆者が試してうまくいった手順:
- スケッチで必要な線を描く
- Part workbenchのExtrudeでスケッチを押し出してface化
- Draft workbenchでFacebinderを作成
- Extrudeしたfaceを全選択してFacebinderに登録
- Facebinderのプロパティで、
Extrude: 0.8, Offset: -0.4
などとする- 更なるクソTips: Extrudeを設定すると更新が重くなるので、Offsetを先に入力したほうがよい。
これで線に沿ったsolidが完成する。
折れ線部分はギザギザになるので、スケッチの時点で線を足しておくなり後から修正する必要はある。
指定したオブジェクトのfaceを全選択したい
Pythonコンソールを使わないと無理そうだ。
e = App.ActiveDocument.Extrude # Internal Name(※)でオブジェクトにアクセス可能。
# ※ツリービュー右クリックメニューのTree Settings -> Show Internal Nameで確認可能。
# ラベル名を使いたい場合は getObjectsByLabel メソッドもあります。
# Faceの名前を取得する方法はないので決め打ちするのが正解らしい
Gui.Selection.addSelection(e, [f'Face{i}' for i in range(len(e.Shape.Faces))])
これで対象のfaceが全選択された状態となる。
なんでfaceだけ全選択したいかというと、Facebinderへの登録時はface だけ 選択する必要があるからです……
Facebinder(Draft workbench)をAssemblyに含めたい
そもそも指定ができない、Pythonで無理やり追加するとアプリが落ちる。
FacebinderをPart(std_part)の中に入れて、そのpartを追加しよう。
Bodyを含んだPart(std_part)に他のオブジェクトを追加したらBodyの中身が出てきた
そういう謎の現象があり、再現条件はよくわからない。
Partの中にBody一個だけ入れたやつなら漏れないので安心。
画像をトレースしたいが、Image workbenchというものがない
Image workbenchはなくなり、かわりに画像インポート機能が追加された(File -> Import...)
SketchのExternal geometryが依存しているfeatureを削除したらめちゃめちゃになって直らん
「関連してそうなconstraintを全部削除してからやり直す」以外の方法があったら教えてほしい。
AttachmentやExternal geometryでは、なるべく安定したオブジェクトを参照することを推奨する。何も考えないと直近のfeatureが参照されてしまうので注意。
Part Design/Part workbenchのLoftの挙動が意味不明
Part Loftの詳細が描いてあるので目を通しておくとよい。セグメントの数が異なっていると自動で分割されるため予期せぬ挙動をするかもしれない。
Backspaceを押してもオブジェクトが削除されない
- 日本語入力がONになっている
- Task(Sketchの編集等)モードになっている
Sketchを再利用したい
たとえば複雑な形状の穴を複数開けたいとき、目的の形状のSketchを作成し、それをあちこちに配置してPocketできたら便利ですが…… そういう機能はないらしい!!!
目的形状のBodyを作成し、Linkで増やしてbooleanなどに使用するといいだろう。
SketchやDatumXxx以外のオブジェクトをAttachしたい
無理みたいなので困る。
マクロを実行しても何も起こらないし、Pythonコンソールにも何も出ない
Report Viewにエラーが表示されてる可能性があります(View -> Panels -> Report View)
部品全体を回転させ、指定した方向を座標軸と一致させたい
そういうマクロを書く必要がある(いま書いてる)
Discussion