20170403

FreeCADでせん断応力を図示したい

FreeCADの結果の表示では、せん断応力が見られない

せん断応力を図示したいのに、FreeCADの解析結果は、ミーゼス応力しか図示しない。
このままでは、勉強にならないと思い、方法を考えた。

結論だけ言うと、Calculixユーザーは、FreeCADを使わず、可視化はSciTEを使っているのではないか?という事を考えた。

応力は、コンター図で出すけれども、出力結果は、本当は行列で書いてある。

応力は、3×3行列で表す。

$$\left[ \begin{array}{ccc} \sigma_{xx} & \sigma_{yx} & \sigma_{zx} \\ \sigma_{xy} & \sigma_{yy} & \sigma_{zy} \\ \sigma_{xz} & \sigma_{yz} & \sigma_{zz}\end{array} \right]$$


xx, yy, zzとなっている成分が、垂直応力。
それ以外が、せん断応力。

「九つもあるのに、どの値を採用して図示するんだよ。」
「ミーゼスだけあれば十分だ。」
「これは何か『難しい事考える時』用の何かだ」

とか思っていたが、違った。ミーゼス応力は、この行列を使って計算しなければならない。

どこで、こんな行列手に入れるんだよ。

FEMの出力データにあった。

FreeCAD内の生データ(CalculiXの出力データ)はどうなっているのか

FreeCADは、FreeCAD自体がFEM計算をするわけではなく、計算はCalculiXというソルバーを使用している。

FreeCADは、CalculiXのインプットファイルを作っているだけ。計算は別のソフトでやっている。
そのインプットファイルは、*.inpとして生成されて、計算後も消されずに残っている。

CalculiXは、*.datファイルを出力する。FreeCADは、それを読み込んで、図示している。

FreeCADでモデル作成、材質、荷重、拘束の設定
↓ .inp
CalculiXでFEM計算
↓.dat
FreeCADで結果表示

*.datテキスト内では、

stresses (elem, integ.pnt.,sxx,syy,szz,sxy,sxz,syz) for set EALL and time  0.1000000E+01

149 1 2.716836E+02 1.636583E+00 -1.209653E+00 -5.855769E-01 -4.171179E+00 6.183829E-01
149 2 -6.877506E+01 -5.632153E+00 -5.479474E+00 1.210101E+00 -1.190165E+01 2.512731E-01
149 3 2.635816E+02 2.490188E+00 1.877574E+00 -1.603586E+00 -8.130017E+00 3.686474E-01
149 4 2.627190E+02 2.520706E+00 2.640285E+00 -1.261953E+00 -6.283733E+00 6.539424E-02
150 1 -2.372774E+02 1.866060E+00 1.133034E+00 -8.994780E-01 -7.004449E+00 1.373777E+00
150 2 5.221532E+01 -3.551561E+00 -4.135341E+00 1.551625E+00 -1.317854E+01 2.862696E-02
150 3 -2.487131E+02 2.278582E+00 1.991986E+00 -1.559371E+00 -7.045533E+00 6.754511E-03
150 4 -2.484582E+02 1.891874E+00 2.751451E+00 -8.892533E-01 -5.645305E+00 -2.644595E-01
151 1 3.291066E+01 -7.674390E-01 2.554677E+00 1.290808E+00 -1.132319E+01 -2.195519E-01
151 2 -2.760238E+01 -1.395607E+00 -3.006674E+00 9.515302E-01 -9.440192E+00 1.900550E+00
   ・
   ・
   ・

こんな感じで、316行分続く。
一つのエレメントに4個積分点があって4行消費している。
確かにこのモデルでは、ソリッドは79個分割されていた。合ってる。

敢えて日本語で
エレメント番号, 積分点, 応力xx, 応力yy, 応力zz, 応力xy, 応力xz, 応力yz…後は知らん。

垂直応力の成分は三つ。xyzの三つ。
せん断応力の成分は、sxy, sxz, syz(sxxとかもあるので、shear xyの略ではなく、 stress xyの略だと思う。)だけしかなくて、syx, szx, szyがない。反対方向側は、同じ値だから書かないらしい。

だから、6つしか応力成分がない(エレメント番号や、積分点番号を除く)が、3つ分省略されているので、ここのつあるという。
九つあるので、3*3の行列になる。

三角形メッシュで作った、四面体なので、一つのエレメントに対して、四つの応力があるのだろうと思っている。
応力の定義は、連続体内部に定義した微小面積(この場合、ソリッドの一面だろうか)に作用する、単位面積当たりの力。

面積は、出てこなかったが…大丈夫だろうか。

この場合、ミーゼス応力ってどこ?

上記の様に、行列で応力を表現した場合、ミーゼス応力ってどこなのか。
正解は、「まだ(計算してないから)無い。」だと思う。

ミーゼス応力は、こっちの式が、いつも出てくるけど、σの下にxが付いていないのが、いっつも気にはなっていた。

$$\sigma_{mises}=\sqrt{\frac{(\sigma_{1}-\sigma_{2})^{2}+(\sigma_{2}-\sigma_{3})^{2}+(\sigma_{3}-\sigma_{1})^{2}}{2}}$$


σ1って、σxってことじゃないの?
σ1は、σxではありません。値も違う。
σ1は、xyz座標ではなく、せん断応力の部分が0になるような座標軸に変えたverの行列の、対角成分(0斜めの残った部分)の内、大小比較した末一番大きい成分の事。(3*3行列の11成分ではない。)
$$\left[ \begin{array}{ccc} \sigma_{uu} & 0 & 0 \\ 0 & \sigma_{vv} & 0 \\ 0 & 0 & \sigma_{ww}\end{array} \right]$$

いちいち、対角化しなくてもできる式は、こちら。

$$\sigma_{mises}=\sqrt{[(\sigma_{xx}-\sigma_{yy})^2+(\sigma_{yy}-\sigma_{zz})^2+(\sigma_{zz}\sigma_{xx})^2]/2+(\tau_{xy}^{2}+\tau_{yz}^{2}+\tau_{zx}^{2})\times 3}$$

↓間違った式(ウィキペディアに書いてあったことをうのみにしてしまった。)

$$\sigma_{mises}=\sqrt{3}\times\sqrt{-(\sigma_{xx}\sigma_{yy}+\sigma_{yy}\sigma_{zz}+\sigma_{zz}\sigma_{xx})+\tau_{xy}^{2}+\tau_{yz}^{2}+\tau_{zx}^{2}}$$

↑間違った式(ウィキペディアに書いてあったことをうのみにしてしまった。)

xyz座標系であった、せん断応力の影響もちゃんと入っている。

こんなこと分かっても、せん断応力は、…FreeCADで図示できないけどね。

Calculixの図示をしている絵を、何枚か見ている。

Calculixの図示を、FreeCAD以外でしている絵を、何枚か見ているので、*.datを図示する方法が絶対にあるはずなんだ。
秋田大のコレとか、どうやってんだよごちゃごちゃしててよく分からない。

Calculixでできるらしいという事が、動画で分かった。

FreeCADは使わず、CalculiXだけで計算する手順も気になるところだがやらない。やってる暇は今はない。
フーリエも中断中だ。

せん断応力、SciTEを使ってあっさり見れた

FreeCADよりも前に、bConverged CalculiXというのを、以前インストールしていた。
かなり前の事なので、詳細は、忘れた。

コマンドラインで扱うソフトだったので、「これ以上なんか覚えるのは、面倒だ」と思って、放置していた。
コマンドライン抜きで、扱えた。

前提

  • bConverged CalculiXがインストールされている
  • FreeCADで解析して、.inpと.datを出力している。

手順

  1. SciTEを起動
  2. ABAQUS input(inp) として、inpと.datを開く。(同時に開いてもいい)
    タブが二個開いて、エディタの様に使えるようになる。
  3. *inpのタブを開き、Tools→Post Processを押す
    モデル画像が図示される。
    左ドラッグで回転
    右ドラッグで移動
  4. 四角で囲われた画像の部分を避け、クリック→Datasets→ここで三択。
    ここで、選んだ1〜3に応じて、一番下(4番目)のEntityで選べる項目が変わる。

    1. DISP:これを選ぶと、変位が選べる
      大げさに描くには、
      クリック→Viewing → Toggle Add-Displacement
      クリック→Animate → Tune-Value → Tune 10とか(任意)
      Tune
      10はやればやるほど、積算されていくので、注意。

    2. STRESS :せん断応力、ミーゼス応力などなど

    3. TOSTRAIN :多分ひずみ。Eと書いてあるし。epsilonの事かと。
  5. 画像を保存するため、クリック→Hardcopy→任意のフォーマットで画像が、保存される。
    ブラウザは開かない。勝手に保存される。
    場所は、カレントディレクトリなのか何なのかに保存された。
20170402-01.png
20170402-02.png

20170402-03 hcpy_2.png

できる事が分かった時点で、時間切れ。
せん断応力では面白そうな図は描けないモデルだと気づいたので、ミーゼス+変位で描いた。
メッシュが三角だと、何か違和感がある。

成果

  • せん断応力は描ける(結局描かなかったが!)
  • ひずみも書けるようになった!
(20170409)式の間違いを修正
posted by yuchan at 07:00 | Comment(59) | FreeCAD

20170327

FreeCADで応力計算

簡単なモデルを試す

自分の目的は、「基礎の基礎」の学習。
なので、問題の無いモデルを作って、お勉強する。

たとえば、紙っぽいモデルに、「丸穴を開けて、応力集中を見る」とかやりたい。(今回はやらなかったが。)

最終目標は、Youtubeに、

  • 使用された式に変数を代入→計算している計算課程をアニメし、
  • その計算課程をモデルに重ねて目まぐるしく動かしつつ、別の角度からプロットしてみたりして、
  • アルゴリズムを直感的に理解できる(かもしれない)
    動画をアップしたい。

最近、DFTの動画をアップしたので、どうぞよろしくお願いいたします。

まずは、やり方とかすっ飛ばして、FEM解析のサンプルを見てみる。

FreeCADに付属している、サンプルを見てみる。
スタート画面の一番下に、「FEMの解析例を読み込み」とあったので、クリックした。
20170326-01.png
ちょっと待つと、サンプルが表示されたが、見方が分からない。
いわゆる、片持ち梁だ、っていうのは、分かる。
20170326-02.png
これのどこが、解析結果なのか。というか、どうすれば、ここから、応力計算結果が表示できるのか。

  1. 「MechanicalAnalysis」を右クリックして、「解析結果をアクティブ」にする。
  2. 「FEM」ワークベンチの中で、アクティブになった「解析の結果情報を表示(S, R)」をクリック
  3. タスク内にて、「フォンミーゼス応力」を選択→等高線のカラーマップ(いわゆるコンター)が表示される。
  4. タスク内にて、変異の「表示」をチェック。スライドバーを右に移動する(か、もしくは「係数」を上げる)
    →大袈裟に表示した変位が表示される。
    20170326-03.png

    20170326-04.png

    20170326-05.png

    20170326-06.png

    20170326-07.png

完成品から、逆算的に、操作方法を探る。

なぜか、普通の手順とは、逆の手順で、進めることがよくある。
いつの間にか、雑誌とかも、後ろの方から、めくっている事がある。
(さすがに、マンガ雑誌ではやらないが。)

FreeCADを使ったFEMの勉強も、逆から攻める。
何故かは分かりません。

  1. 計算の実行ってどうやるの?
    FEM Solver 「CalculiX」を表示している時のみ、アクティブになる、下の絵の黄色いボタンが、計算開始のボタンらしい。
    20170326-08.png
    黄色いボタンが二つあるが、どちらでも、結局動いた。

自分は、主に、右で試した。
本当に動いているっぽかった。

もちろん、ソルバー、モデル、境界条件、材質情報設定が揃っている事が前提だろうとは思う。
「無かったら、どうなるのか?」みたいな事は、まだやらない。

  1. 材質の設定
    プリセットのサンプルが用意されている。ほとんど鉄だった。パラメータが同じなものもあり、違いが分からなかった。
    20170326-09.png

  2. 「新しい力学解析」で、解析セットを作る。
    「新しい力学解析」を押すと、選択しているソリッド(パーツ)のメッシュを切るためのダイアログが開く。
    ソリッドを複数選んだ状態で「新しい力学解析」をしても、何もしてくれない。(メッシュを作らない。)

  3. 拘束は、ノードに対してではなく、フェイスに張る。
    変位・回転の拘束も、荷重、圧力の拘束も、フェイスに対して張る。どうやら、熱流体や、振動は無い模様。

あぁー!はいはい。もう分かった。分かりましたよ。大丈夫。できそう。

最初からやってみた

球ではできない。

頑張って、こんな画像まで用意したにもかかわらず、球ではできない。
20170327-09-1.png
球では拘束の設定ができないため
なぜ拘束の設定ができないのかというと、球が、一面しかないから。

拘束は、メッシュのノードではなく、フェイスにかける。もしかしたら、球面のメッシュを、フェイスにする方法があるのかもしれないけど、面倒なので、円錐で試すか…

いや、円錐の頂点に荷重をかけると、頂点は面じゃないので、やっぱりできない。
おとなしく、円柱のソリッドを使うか…

仕切り直して、モデルー各種設定ー計算―図示

  1. ソフト立上げ
  2. 新規作成
  3. 「part」のワークベンチを選択
    20170327-01.png

    20170327-02.png

    20170327-03.png

  4. 適当な形状を作る。

  5. ワークベンチを「FEM」に変更。
  6. Aマーク(「新しい力学解析を作成」)を押す。( この際、4で作った形状を選択しながら、押す。
  7. メッシュの設定は「非常に細かい」を選んだ
    20170327-04.png

    20170327-06.png

    20170327-07.png20170327-08.png

  8. 材質設定には、素材に「CalculiX-Steel」を使ってみた

  9. 固定拘束が無いと、エラーが返ってくるので作った。(変位の拘束(FemConstraintDisplacement)でも、同じなのではないか?と思ったが、駄目だった。)
  10. 荷重拘束は、1000(単位は知らない。)
    20170327-10-0.png20170327-10-1.png

    20170327-11.png
    20170327-12.png20170327-13.png

  11. CalculiXする。
    20170327-14.png

  12. 解析を表示
    20170327-15.png

  13. スライダー最大値を10000

  14. スライダーを最大値にスライド。
    これは、さっきやったので、画像はあえて載せない。

  15. 条件を少しずつ変え、画像を排出。

  16. gifアニメにしたのがこちら。
    20170327-4.gif

やっとの思いで見つけた、結果を表示するスクリプト

FemTools関連のコマンドは、なぜかpythonコンソールに表示されない。だから、どうやって結果の表示をpythonで操作するのかを、探すのに、苦労した。

「FreeCAD 変位アニメ」とかで検索したけど、なかなか見つからなかった。
だから、探し当てた経緯も書いておく。

「FreeCAD mises」とかで検索して、FreeCADのフォーラムが先頭に出てきた。
しかし、それの中に、ドンピシャなタイトルは無かったが、一つ一つ見ることにした。

あまり関係なさそうな、しかし若干かすっているタイトルの、FreeCADのフォーラム FEM Reportingとか、Stress Questionを見て、ミーゼス応力の書き方は分かった。
なんで、これが、pythonコンソールに表示されないのかは謎。

両方とも、PrzemoFさんのやった内容が参考になる。

import FemGui
import FemTools

FemGui.setActiveAnalysis(App.activeDocument().MechanicalAnalysis)

a= FemTools.FemTools()
a.run()a.load_results()
a.show_result(result_type = "U1", limit = 10)

"""
result_type = "U1"#x
result_type = "U2"#y
result_type = "U3"#z
result_type = "Sabs"#mises
result_type = "Uabs"#absolute value of stress
"""

関数 FemTools.FemTools().show_result(result_type = “U1”, limit = 10)
の引数は、

引数説明
“U1”x方向の応力
“U2”y方向の応力
“U3”z方向の応力
“Uabs”応力の絶対値
“Sabs”ミーゼス応力

この時、「FreeCAD FemTools」で検索したらリファレンスが出てきて、FemTools周りの情報が出てきた。
この検索機能がローカルに欲しいんだけど…。

FemTools.FemTools()には、
関数 FemTools.FemTools().show_displacement
もあって、

a.show_displacement(displacement_factor=1000)

とかすることで、変位の大げさ具合の係数が変更できる。

googleで検索しても、日本語サイト出てこなかった。(検索全部で20個位)で一番乗りだと思うけど、ここを参考にして、作った。

なんで、一番乗りだったかの原因は、普通は、この機能はアニメして使わないし、GUIで十分だから。
絵があれば十分。動画はいらない。

「大げさ具合」を変化させて描画しているだけなので、「力を加えるとこういう風に動く」というわけではないと思う。
「この動画の様に動く」というわけではないから、動画で表現するのは、間違っているかも。
つまり、誤解を与えるような動画になるのかもしれない。

もし、荷重を徐々に変化させた時の、形状の変化(変位)や、応力の変化を動画で図示したいのであれば、
parametric sweepっていうのを、やるべきだと思う。(そういうコマンドがあるわけではない。)
しかも、描画時には、変位の係数を0にして。

例えば…

  1. ちょっと計算しては、画像を保存して
  2. 荷重の条件を変えて
  3. また、ちょっと計算しては、画像を保存して…

の繰り返し。
これをやるときに、画像の作成条件を、一定にしておけば、荷重を変化させたときの、変形が見れると思う。
やらないが。
多分、その内、やりたいとは思っているが。

アニメ用 連番画像の取得

やろうと思えば、こんな感じでmatplotlibで、gifアニメとかできたけど、
わざわざ画像化したものを、matplotlibにロードするスクリプトを書くのもどうかなぁと思った。
かといって、opencvを使って、AVI作るのもなんか違うし。
まだこれは、そんなレベルの活動ではないので。

gifアニメは、Giamというのを拾ったので、それで作ることにした。

for factor in range(4000)[::100]:
a.show_displacement(displacement_factor=factor)
Gui.activeDocument().activeView().saveImage('C:/Users/Ojisan/Desktop/current-%05.f.png'%(factor),300,300,'Current')
#Gui.activeDocument().activeView().saveImage('C:/Users/Ojisan/Desktop/trans-%05.f.png'%(factor),700,700,'Transparent')

できた連番画像を、Giamでgifアニメにした。

pythonコンソールのオートコンプリート機能が涙が出るほど便利だった。

a= FemTools.FemTools()

とした後で、手動で下のピリオドまで入力すると、オートコンプリートしてくれる。

a.

20170327-17.png
超便利。
a.
に続いて、書く可能性のある関数等を列挙してくれるので、

  • 使い方を知らない時、
  • もっと色々な機能が知りたかったりする時、
  • ド忘れした時、
    に便利。

目標は達成

タイトルの通り、目標は、FreeCADで応力計算。
とりあえず、

  • モデリング〜計算結果の図示まではできた。
  • gifアニメもできた。
  • 「FreeCADのダメなところ」みたいなものも、うっすら見え始めてきた。

となったので、目標達成と言えるんではないでしょうか。
拘束の設定がちょっと変な気がするが、その内、勉強して改善したい。

後は、Shade3D16Professionalだ。これをもう少しいじり倒したいが、今のところ、使う用事は皆無。
フーリエ変換のアニメも、逆フーリエとか二次元フーリエとかその逆フーリエとか残っているので、まだまだ山積している。

他にもやらなければならない事が山積している。
なんだかんだで楽しいので良い。

posted by yuchan at 07:00 | Comment(291) | FreeCAD

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(48) | FreeCAD