読者です 読者をやめる 読者になる 読者になる

C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA

CATIAで2次ベジエ曲線を描きたい1

こちらの続きです。
3Dの文字モデリングマクロ8 - C#ATIA
こちらにも関係しています。
CATIAで3次ベジエ曲線を描きたい1 - C#ATIA


VBA版は、辞書ファイルを用意しなければならなかったのですが
C#版では辞書ファイル無しにしたい為、何とかフォントのアウトラインを
取得しなければなりません。
幸い調べてみると、サンプルコードが見つかりました。
【.NET】文字を縁取りして描画する - CommentOut?

これを利用する事で、何となく可能かな?と思っています。
早速ちょっと改造し、このような感じの物を作成しました。
f:id:kandennti:20150902123238p:plain
左側には、フォント "MS Gothic" の サイズ "150.0F"で "○" を
表示されています。右側にはその際得られているGraphicsPathの
"X座標,Y座標,パスタイプ" を表示させています。

フォント "MS Gothic" は、TrueTypeフォントと記載されており
MS ゴシック - Wikipedia
TrueTypeフォントは2次ベジェ曲線だと記載されています。
TrueType - Wikipedia
ん~前回は "3次ベジエ曲線を描きたい" ってタイトルにしたのですが
本当に描きたいのは、2次ベジェ曲線でした。

とりあえず、先程の画像の右側の数値をコピーし、メモ帳を起動しペーストし
保存。 拡張子を ".csv" 変更。

この座標値をCATIAに取り込みたいので、こちらか
外部ファイルから点を3Dに取り込む2 - C#ATIA
こちらを使用。
外部ファイルから点を3Dに取り込む3 - C#ATIA
取り込み状態はこんな感じです。
f:id:kandennti:20150902123257p:plain
今回のCSVフォーマットの3番目は "パスタイプ" なのですが、今回は
Z座標として取り込んでいます。意味合いとしてはこちら
GraphicsPath.PathTypes プロパティ (System.Drawing.Drawing2D)
うっすらとしか理解していません・・。

もう一点お気付きでしょうか? 実はY座標がプラスマイナス逆に
なっています。CADを扱う人間としては、Yのプラス方向は
上方向であって欲しいものですが、フォント座標の場合下方向
のようです。(確か、ExcelのShapeも下がプラスでした。)

実は、ここから先がわかっていないのです。
この点郡を利用して円を再現したいのですが、わかっていません。
何方か挑戦していただけないものでしょうか?
データはこちらのサイトの
Text3DModel - CATIA, STEP / IGES, Other - 3D CAD model - GrabCAD
・MSGothic_150F_Points.CATPart - 取り込み後のファイル(R2012)
・MSGothic_150F_Points.igs - 同様のIgesデータ
(GRABCADのビュアーは、点の表示はしてくれないようです)