FreeCADで図面を作成する際に、美しい数式を表示するため、LaTeXを使えないかと模索しています。できるだけフリーソフトだけで目的を達成しようと考えると、もっとも現実的な方法は、Inkscape 1.4の「拡張機能 > テキスト > Formula(pdflatex)」を使って数式を作成し、それをSVG形式で保存することです。これにより、FreeCADの\(x-y\)平面に問題なく数式を配置できると思われます。
ただし、この方法を実行するには、PC上でオフラインでもLaTeXを使えるように環境を整える必要があります。これまでWeb上でLaTeXを扱ってきた自分にとってはハードルが高く、さらに、そこまでしてFreeCAD内で数式を使う機会も多くはないため、できれば現在の環境のままで、なんとか美しい数式を取り込めないかと試行錯誤しているところです。
まずは,Web上でLatexで数式が書けるものとしてMathJaxを見つけました。

このMathJaxで書いた式をスクリーンキャプチャして,Inkscapeにペースとし,ビットマップトレースの後にSVGとして保存する方法を試してみました。
FreeCADの上でのText作成で,直接Latex入力ができないものかとあきらめきれないところもありますが,先を急ぐので,とりあえず以下に力技のメモを残してみます。
MathJax
MathJaxも自分のPCにインストールしてから使用することの方が正当なのかもしれませんが,それも億劫なので,どうにかWeb上でできないものかと探ってみました。そうすると,

にたどり着き,

のStart nowに出会えました。さらにもっと直接的に使う方法はないものかとウロウロしていますと,

の「example on jsbin」まで来ましたので,これを開いてみました。

これは,まさに探していたものです。Latexを使っているといってもCloudLatexとWordpressでのみのことでしたので,このHTMLはとても有難いのです。
試しに,
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are \[x = {-b \pm \sqrt{b^2-4ac} \over 2a}.\]
の部分の式だけを,FreeCADに持ち込みたいと考えている一つの文字に置き換えてみると,
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are \[\it p_{物体Aの運動量}\]
に置き替えてみますと,日本語も問題なく,

となりました。Wordpress本文中でも\(p_{物体Aの運動量}\)と表記し,同じフォント,文字感でFreeCAD内にも同じキャプションを入れ込みたいので,この方法に可能性を感じています。
MathJaxからInkscapeへ
スクリーンキャプチャするために上図の式はできるだけ大きくしたいと思います。下図の赤マークの矢印をクリックしますと別ウインドウでOutputが表記されますので拡大が容易です。

拡大し,スクリーンキャプチャした

をInkscapeにおいてみます。ここではInkscape v.1.4.2を使っています。

もし,文字の拡大ができなくても下図のように,文字サイズを大きくすることで適度な数式は得られそうではあります。


とにかく,Inkscapeに普通にペーストして,Path>Trace Bitmap>Single scanでApplyしてみます。
下図の白抜きの文字がBitmapトレースされ,数式のアウトラインがStrokeで定義されています。

ここでは,左下のFillはNoneとし,Strokeは右上のパネルでStroke paintで塗りを選び,Stroke styleでWidthを0.500としています。
トレースしたデータは,Path>Object to pathによりパスデータを持たせると同時に,オリジナルのテキストを削除し,SVGで保存します。
FreeCADへ
SVGファイルをFreeCADのメインウィンドウにドラッグアンドドロップしますと,

複数のPathデータがインサートされます。このままでは扱いにくいので,すべてのPathを選択した上で,ワークベンチのPartに移動し,Boolean>Unionで一体化され「Fusion」と表示されます。

ここでは,左のパネルのViewタブでDisplay ModeをFlat Lines,Line Width,Point Sizeを2.00のままとしてあります。ここで,LineやPointの色を選択することができます。今は黒色のままです。

このパネルのタブをDataに変えるとパーツ名の変更,文字もPositionも変更することができます。ここでは,「Fusion」を「p_物体Aの運動量」に変更してあります。
これで,Latexで書いた文字がFreeCADの中で\(x-y\)平面に配置されたことになります。

さて,ここまで文字の大きさを気に留めていませんでしたが,必要に応じて変更しなければなりません。現在の寸法を下図の赤マークのメジャーツールを使いますと,

現在の文字スパンは\(117.19mm\)であることが分かります。
次はこのサイズの変更をしてみます。Draft>Modification>Scaleで基準位置をクリックした後は

が見えてきます。左パネル下のCreate a cloneにしておくと別パーツ(P_物体Aの運動量001)が自動で作成され,さらには,下図の左パネルのようにScaleのコントローラーも追加されるので,一度Scale変更をしたら,あとはここで自由にスケール変更を継続することができます。

図面への適用

上図の左側の青色の平行四辺形は,
\(\boldsymbol {r_{物体Aの位置ベクトル} } \times \boldsymbol {p_{物体Aの運動量}} \)
のベクトル積を表現しています。今回の目的は,本文中の式表現と図中のそれができるだけ同一であり違和感なく接続できるようにすることです。どちらもLatexによる数式なので基本的には同じなのですが図中のものは白抜きとなっているので改善が必要かなと思っています。
気合を入れたほど分かりやすい図とはなっていないことが残念なのですが,しばらくは,もっと適切な方法を探りながら,まずはこの方向で作図を進めてみたいと思います。


コメントを残す