興味があろうがなかろうが。

なるべく役に立つ、とがった内容を記していきたいと思います。

【3DCAD】FreeCADでPythonマクロプログラミングを学ぼう

こんにちは、管理人です。

このページを見に来て頂いているということは、

  • これからCADを触りたい
  • CADを使って、独自のプログラムを作りたい
  • CADでできることを知りたい

といったことを目的にしてきて頂いたのだと思います。

このページでは主に、オープンソースの『FreeCAD』を用いた、CADのカスタマイズプログラミング(マクロ)を中心に取り上げていこうと考えております。

1. はじめに

このページでは、私がCADのプログラミングを勉強した際に、学んでいったこと・気づいたことを記載していきます。

ひとまず現時点では、オープンソースのフリーソフト『FreeCAD』を用いていく予定です。

3D化が進んでいる昨今、3次元CADの設計に関する書籍や、扱い方に関してのホームページはたくさん見かけるのですが、CADをカスタマイズして独自のコマンドを開発するための情報が非常に少なく感じます。

本記事では、そういったことを感じている皆様に役立つ情報をお届けできればと考えています。

ページを閲覧いただいた際に1つでも何かお土産ができれば幸いです。

数学もプログラミングも大してできませんが、お付き合いくださいませ。

2. 目次

不定期となりますが、記事を追加して下記のスペースにリンクを増やしていきます。

2.1. プログラム起動~実行まで

自作プログラムの作り方と実行方法

自作プログラムをVisual Studio Codeでデバッグする方法

ログ情報の表示 ~レポートビュー表示~

2.2. ベクトルの扱い方

ベクトルの平行判定

ベクトルの直交判定

単位ベクトルの取得

反転したベクトルの取得

ベクトルの大きさを取得

内積で2つのベクトルがなす角度を取得

2ベクトルに直交するベクトルの取得

投影距離の計算

ある点からある方向へ10mm移動した位置を求める方法

フェースの法線ベクトル取得

ビューの表示方向の取得

ビューの表示方向の設定

2.3. 行列(マトリックス)の扱い方

行列の平行移動

行列の回転移動

2.4. オブジェクトの扱い方

選択した要素を取得する ~GetSelection編~

選択した要素を取得する ~GetSelectionEx編~

選択済みのオブジェクトを追加する

要素の表示・非表示

色の変更

透過度の変更

タイプ(型)の確認方法

オブジェクトの同一判定

2.5. オブジェクトからパラメータを取得する方法

エッジの端点位置を取得

バウンディングボックス(AABB)の取得

重心位置の取得

エッジの開閉確認

2.6. ツリー構成から情報取得

ツリーからドキュメントの取得

ドキュメントから作成履歴の取得

作成履歴のパラメータ変更

ソリッドから構成要素(フェース・エッジ・端点)を取得

ドキュメントに修正がかかっているかチェック

2.7. 特殊なAPIなど

ある位置が要素の内側に位置しているか判定

要素同士の最近距離取得

2.8. GUI

PyQtを使用したウインドウ表示

2.9. 演習課題

ベクトル確認用の矢印ソリッドを作ろう

2.10. その他

トレランス(公差)という魔物

ローカルフォルダからAPIドキュメントを閲覧する方法

UNDO, REDOの実行

UNDOポイントを実装する

※注意※

管理人は数学もプログラミングもあまりレベルが高くありません。もし何かお気づきの点がありましたら、コメントを頂けると助かります。