20170319

FreeCADをはじめる

タグ:python FreeCAD

FreeCADを使い始める理由

CADの勉強を自習したいが、プロフェッショナル仕様な有料ソフトは、高価なので手を出せない。
しょうがないので、「Free CAD」とかで、検索かけたら、そのまんま、FreeCADが出てきた。
やる。

インストーラーが222MB位で、インストールすると548MBになる。

バージョン0.16.6706は、見出しの通り。
20170318-02.png

初見、ツール系がどこにもなく、「ただのビューワーなのか!?」と思ってしまった。

スタートしたときに表示される画面は、ウェブページのようなデザインで、リンクがたくさん貼ってある文字が、箇条書きになっている。「説明書きは見ないでいじる」派(そして、「苦労する」派…)なので、無視して、手を動かし始める。
20170318-03.png
「ワクワク感で、失読症になってしまう」派ともいう。自分は。

この画面のままじゃ、操作できないのは、分かり切っている。
「新しいファイル」系のボタンでどうせはじまるんだろ?おりゃ。

20170318-04.png

え。なにコレ、ビューワー?どうやったらモデリングできんの?

いや、ポイントが打てるぞ!

あんまりにも機能が多すぎるために、ドロップリストで、ツールを切り替えながら進める仕様なようです。
この選択肢の事を、ワークベンチと呼ぶそうな。

とりあえずワークベンチは、Draftとか、arch(建築?)とかを選んだ。
20170318-05.png

20170318-06.png

Pathを選ぶと、電気回路のパスを描いてくれそうだし、
何か色々付いてる。

SketchとDraftの違いが分かっていない。

どっちとも、点、線が描ける。

とりあえず、Draftで試した。
20170318-07.png
とりあえず、原点座標(0,0,0)を打つ。
点が打てる!

20170318-08.png

単位はmm

基本も分からないまま、マクロに手を出す。

マクロの記録機能がついてる。
マクロというか、スクリプトというか、何の言語なのか分からないし、FreeCAD固有の言語かもしれないが…
自分の推測が正しければ、これは、Shadeのスクリプトの「記憶」と、同じ機能なはず…

つまり、GUIのボタンをおしたりして操作した内容を、エディタか何かに自動記録してくれる。

20170318-16.png
「マクロを記録するためのダイアログを開く」ボタンで、記録開始。

保存する場所が悪いのか、
「最初に保存する場所を選んでください」と表示される。
20170318-09.png
こういう時は、経験上、とりあえず、デスクトップが権限的にも大丈夫なはず。

このエラーに引っかかって、「FreeCADつかえねぇー」と諦めた人もいるのではないだろうか。
というか、これは、FreeCADのGUIのデザインが悪い。
もし、保存する場所を選んで欲しいのであれば、最初にファイルダイアログを出現させるべき。

もしくは、ファイル名よりも上に、フォルダ選択ダイアログを用意して、フォルダ選択するまで、非アクティブにするべき。
githubにあったら、自分でやってみようかとまで、思い悩む。

コマンドを知りたい機能のボタンを押し終わったら、緑の四角ボタンを押すと、記録を終了する。
20170318-19.png

記録されたマクロを編集したり、実行したりするためには、メモ帳みたいなボタンを押す。
20170318-20.png

20170318-18.png
この画面から、マクロの実行もできるそうな。今はまだ実行はしない。今は、「編集ボタン」を押す。
20170318-13.png
すると、こんな感じの画面が出たはず。

このやり方だと、エラーは、下のステータスバーに表示される。
20170318-14.png

スクリプトの記録の何がいいのか。

コマンドを知らなくても、その機能をスクリプトで使うためのコマンドがピロっと出てくる。

APIリファレンス(無数にあるコマンドをアルファベット順に集めただけの、プログラマ向けの取説)を読む必要がない。

GUIの操作では実現しにくい煩雑な動作を、for構文とかと組み合わせて自動化できる。

たとえば、forで決まった回数繰り返すには…後述。

特に、「座標は数式で表せるんはずなんだけど、ツールが無い」「開発者も、わざわざこの動作をするためだけにツールを準備してくれないんだろうなぁ」というようなタイプのスクリプトを準備できる。

FreeCADのスクリプトは、拡張子は”*.FCMacro”だけど、中身はpythonだった。

やっぱりShadeと同じ要領でできました。
python勉強していてよかった。動くぞ!

マクロの記録で排出されるデータはこんな感じ。

# -*- coding: utf-8 -*-
# Macro Begin: C:\Users\yusuke\Desktop\aaa.FCMacro +++++++++++++++++++++++++++++++++++++++++++++++++

import FreeCAD
Draft.makePoint(0.0,1.0,3.0)

# Macro End: C:\Users\yusuke\Desktop\aaa.FCMacro +++++++++++++++++++++++++++++++++++++++++++++++++

拡張子は”.FCMacro”でしたが、むしろ”.py”の方が分かりやすい。

丁寧にも、UTF-8文字コードの指定

# -*- coding: utf-8 -*-

とかつけてくれてるし。

改行コードはLF。
Windoowsは、CR+LF。
Linuxは、LF。
ここはちょっと気を付けたい。

# は、その行のコメントアウトを意味する。
例外として、一行目の# の場合は、文字コードの指定の時に、こういう書き方ができる。

要点だけ書くと、

import FreeCAD
Draft.makePoint(0.0,1.0,3.0)

とあるが…

  • import…
    import FreeCADというのは、
    python言語で、ライブラリ(python流にいう所のモジュール)を読み込む。
    Cでいうインクルードの事だと思う。
    FreeCADを読んだので、FreeCAD特有のコマンドが使えるようになる。

  • Draft.makePoint(…,)
    FreeCADのコマンドの、点を打つ機能として、Draft.makePoint(0.0,1.0,3.0)がある。
    ()の中身の数字として、座標xyzを(mm単位で)指定する。
    コンマで区切って使ってね。

    ただし、
    引数が一つならxのみ、
    引数が二つなら、x,yのみとしても使える。

引数(英語で、argとか、argumentとか)っていうのは、()の中に入れる変数の事で、
変数っていうのは、場合によっては「数」ではなくて文字列(英語でいうstring(”abc”)とか)だったりする。

もちろん、関数Draft.makePointは、数字を引数として受け取るから、文字列を入れると、

>>> Draft.makePoint("aa")
Traceback (most recent call last): File "<input>", line 1, in <module>
File "X:\ProgramData\FreeCAD 0.16\Mod\Draft\Draft.py", line 2420, in makePoint
_Point(obj,X,Y,Z) File "X:\ProgramData\FreeCAD 0.16\Mod\Draft\Draft.py", line 5168, in __init__
obj.addProperty("App::PropertyDistance","X","Draft","Location").X = xBase.FreeCADError: FreeCAD exception thrown (syntax error)

とか、エラーが返ってきたりする。
このサイトでは、シンタックスハイライトの独特の内容になっているが、FreeCADでは、エラーは、全て赤で表示される。

コマンドって書いたけど、まぁ…よくは知らないんだけど、引数を受け取って何か返すので、コマンドの事を、関数(英語でいうfunction)と読んだりしますよ。

マクロの実行の仕方は三つ

マクロとスクリプトをごちゃ混ぜにして使ってます。
もちろん両者の区別がついてません。
同じ意味でしょ?
知恵袋とかありましたが…どうでもいいと思って読んでない。

マクロの実行の仕方は、三つ見つけました。

  1. ミドリの再生ボタン
    20170318-17.png
    ちなみに、このボタンは、モデリング画面では非アクティブ(グレーアウト)したまま。スクリプトのエディタ画面にしないと、アクティブにならない。

  2. pythonインタプリタに直接入力
    pythonインタープリターは、表示>パネル>python コンソールにチェックで出せる。
    20170318-15.png
    pythonユーザーとしては、初めから出しておいてほしい気もする。

  3. マクロの実行ダイアログ()

多分これだけだと思う。
もしかすると、FreeCAD自体を、
Windowsのコマンドライン→pythonインタプリタ
から操作できるかもしれないが、試してない。

例えば、for構文で、無数の点を、一定条件で打つ。

# -*- coding: utf-8 -*-
import FreeCAD

for a in [0,1,2,3,4,5]:
Draft.makePoint(a,0,0.)

20170318-10.png
点が出て来おった…!
この程度なら、機能としてついているけど、もっと細かい条件でも、自分で設定できる。

オイラーやる。

馬鹿の一つ覚えですが、「オイラーで書いたサイン、コサインの複素数を3Dで…」ってのをやる。

# -*- coding: utf-8 -*-
import math
import FreeCAD

euler = lambda n, k, N: math.e**(-1j*n*k*2.0*math.pi/float(N))
N = 64
k = 3

for i in range(N):
b = euler(i,k,N)
Draft.makePoint(i, b.real, b.imag)

20170318-21.png
でけた。

面を張ってみる。

画像のようにやったらできた。
ワークベンチpartの中にあるツールを使った。
20170318-24.png

20170318-25.png

FreeCADのインストールは、できればローカルにしたい

FreeCADをインストールするときは、ローカルに保存した方がいい。

自分は、ローカルのスペースが狭い都合上、外部HDDにFreeCADをインストールしたんだけど、いちいち遅い。
ツールを選択したり、点を打ったりするたびに、ワンテンポ遅れる。
長時間使うのであれば、このタイムラグは、かなり苦痛。
できれば、ローカルディスクに保存されたし。

「ノートPC、マウス無し」で操作するなら、マウス設定必須

ノートPCというか、ラップトップとも言いますが…。

マウス無しでやるなら、必要になるかもしれない。画面の回転、スクロール等ができないので、モデリングしにくい。(只、上面、底面、正面などのショートカットを身に着けるために、敢えてマウスを封じるのも一つの手かもしれない。)
マウスも、二ボタンのではだめ。
右と左の間に、中央のスクロールのやつがついてないとだめ。

マウスの設定は、ここを参照したが、
20170318-22.png20170318-23.png
こうやった。

「なぜか、”FreeCAD”が繰り返しダウンロードされる」と思ったら…

webブラウザの、タブを消さないクセがあって、ダウンロードサイトのページを開いたタブが、ずっと残ってたせいだった。今後は、こういうことが無いように致しまして候…

今月は色々あったで候…

新しい事だらけで、胃薬をたくさん飲んだで候…。予め、予防線を張っていたおかげで、胃的には、何ともなく過ごせた。

これからも、何とかやっていけそうな気がしていまして候。

タグ:python FreeCAD
posted by yuchan at 07:00 | Comment(0) | FreeCAD
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: