C#ATIA

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

VBA

Excelフォームボタンからマクロの起動 (未確認)

「Excelのフォームのボタンを押したら、指定した座標系を元に XYZの値を入力した位置に、点を作成したい」 と言う内容の御質問を頂きました。生憎、古いExcelしかインストールされていないため(マクロ動かない) 完全には再現できませんが、近い事はしてみたい…

手抜きマクロ起動用メニュー2

こちらの続きです。 手抜きマクロ起動用メニュー1 - C#ATIACATVBAプロジェクトにマクロのモジュールを追加するだけで、 メニューボタンを自動的に追加します。但し、追加するモジュールにボタンとなる情報を追記する 必要が有り、以下 [タグ] と表記して説明します。 〇ファイルの構成 同一のプ…

手抜きマクロ起動用メニュー1

CATIAのマクロを実行する際、こちらの前半に記載した方法で ツールバーに登録して使っているのですがマクロを高速に実行させる(非公式) - C#ATIA正直な所、登録が面倒です。 (何処で見たか忘れましたが、全てのファイルを閉じた状態で ツールバーを新規に作成すると、ワークベン…

ProductTree の リオーダー2

こちらの続きです。 ProductTree の リオーダー - C#ATIAサンプル用のマクロを用意していたのですが、Product用のマクロを持っていない為、 以前の物を修正し、インスタンス名でソートするマクロに変更しました。 'vba sample_ReOrder_Product ver0.0.1 using-'KCL0.0.12' by Kantoku …

複雑な条件分岐を、出来るだけ清楚に書きたい

VBA

ちょっと複雑な条件分岐を、どうやったら清楚に書けるものか 悩んでます。言葉だけでは伝わらないので、直ぐに思い付いたコードがこちらです。 'vba Sub Branch_Test() Dim NaN& '他言語のNaN代わり NaN = -100: Dim Piyo& '条件1 Piyo = 2 Dim Huga& '条件2 H…

CodeModuleクラスのProcBodyLineプロパティ

VBA

この辺に記載されていますが、Office TANAKA - VBAでVBEを操作する[CodeModuleのプロパティ] ProcBodyLine プロパティProcBodyLineプロパティの取得に失敗したら例外吐き出すって 記載しておいて欲しい。(本音は-1でも返して欲しい)ローカルウィンドウにも表示されな…

実行中のプロジェクト名とパス取得する

今まで気が付かなかったのですが・・・。VBA実行中にプロジェクト名やプロジェクトのファイルパスが欲しいなぁ と、思った事がありましたがあまり調べていませんでした。ちょっと試しているうちに発見しました。 'vba 実行中のプロジェクト名とパス取得 Option Explicit Sub CA…

Formにボタンを動的に追加し、イベントを発生させたい

VBA

色々と思うことが有って、VBAのFormに取り組んでいるのですが 知識が足りず悩んでます。UserFromにコマンドボタンを動的に追加し、イベントも動的に発生させたいです。 こちらで教わったのですが Formの内容を、DrawTableに反映する - C#ATIAこちらを参考にしてみま…

1つのPartからBody毎にしたProductを作り出す2

予め、お伝えしておきます。 KCLを更新しました。 非常に個人的なCATVBA用ライブラリ - C#ATIAリンクの画面やカタログ等を開いた状態でマクロを実行すると、 エラーで止まってしまうのを防ぎたかったので。 こちらの続きです。 1つのPartからBody毎にしたProductを作り出す -…

Treeの順番を取得したい

Partで、このような状態でルート?のTreeにぶら下がっているものを 見た目の順番通りに取得したいのですが、方法がわかりません。Bodyだけなら順番通りに取得できます。 形容セットだけでも同様。 Bodyと形状セット(や時系列形状セット)が混合していた場合、 個別の…

1つのPartからBody毎にしたProductを作り出す

タイトルの日本語が怪しいのですが、要はこちらのコマンドで Assy → Part にしたものを、再度Assy状態にしたい と言うことです。CATProductからCATPartを作成 | CATIAの小技このコマンドは古いリリースでは表側に無く、裏コマンドだったんですよね。 "データを軽くして客先に支…

Bodyの穴っぽい部分に点を作成

業務上欲しくなったので、久々にCATIAのマクロを作成しました。穴あけ加工をCAMで作る際、Space-eでは穴位置となる点が 欲しかったので、こちらのマクロをかなり前に作成しました。 指定した平面から、穴の中心点を作成する1 - C#ATIA 本来であれば、3Dの形状から…

3Dの点をリンク付きでスケッチ投影

COEでこちらの記述を見て、作ってみました。 http://www.coe.org/p/fo/st/thread=29815レスしたものはインデントが消えてしまっているので Sub CATMain() 'HybridBody-Points Dim HBdy As HybridBody Set HBdy = SelectItem("Select a HybridBody : ESC = Cancel",…

二つのボディ/形状セットを比較して、差分を抽出する2

こちらの続きです。 http://kantoku.hatenablog.com/entry/2016/11/24/173743 http://kantoku.hatenablog.com/entry/2017/07/19/190425原因を突き止め切れていないのですが、結果が総当りと 一致するようになりました。まずは、本マクロのエントリーポイントを持つ標準モ…

CATPart内エラー時のUpdateObject

こちらでコメント頂いた 「GetMeasurableはUpdate出来ないと長さも取得できそうにありません」 について、解決されたようですが、試しているうちに知らなかった事に 出くわした為、記載しておきます。 選択した円弧の長さを表示1 - C#ATIA テストしたデータはこん…

アクティブCATPartを、Igesファイルにバッチ変換

ちょっと業務上欲しくなったので、CATPartファイルをIgesに変換する為の マクロを作成しました。" マクロにする必要ある? " と思った方、正解です。単に変換するだけであれば、必要性を感じないのですが、オプションの こちらの部分を変更しソリッドとサーフェスで二回変換してます…

UpdateObjectとComputeの違い

こちらで教えて頂いた、Computeメソッド UpdateとUpdateObject - C#ATIAこちらで試した際は気が付かなかったのですが、 スピードテスト5 - C#ATIAPartクラスのUpdateObjectメソッドは各HybridShapeクラスのComputeメソッドを 呼び出しているだけなのかな? と思っていたので…

ボディの外側をマクロで判断する

以前、3次元測定機の測定結果(CSV)をCATIAに取り込み、 実物とCADデータを差を調整しながらモデリングを行った事があったのですが、 大量の点をイチイチ測定する手間が非現実的なため、誤差を測定する為の マクロを作成し作業をしたことが有ります。単に 点 - ボディ 間の…

スピードテスト5

一応、こちらの続きです。 http://kantoku.hatenablog.com/entry/2015/04/15/195513前回のコメントで、"HybridShapeクラスのComputeメソッドでもアップデート出来るよ" と imihitoさんに教えていただき、少し速くなりそうな気がしたので、 こちらのコードを元に試してみまし…

UpdateとUpdateObject

"マクロで作成した面の色を変更したけど、上手く反映されない" と言った内容の御質問を頂きました。このような状態のデータで、オフセット面を作成する操作の マクロを記録しました。 'vba Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.Ac…

クリックした面に3Dな矢印と注記を作る

こちらの続きです。 3Dな注記の位置を制御出来ているっぽい(条件付き) - C#ATIAやっと完成しました。 注記位置については前回通り、条件付となりますが結構満足してます。 'vba sample_CreateArrow_ver0.0.3 using-'ver0.0.10' 'クリックした面に矢印を作成-注記…

クリックした面に3Dな矢印を作る

タイトルが異なりますが、こちらの続きです。 クリックした面に法線を作成する - C#ATIAこちらでコメント頂いている矢の部分ですが、 昨日自宅で、どの様な定義をすれば良いのか思いついたので コードを作成してみました。 (このような事は案外、PCの前に居ない時に思いつ…

マクロで干渉レポートを作成する

こちらのコメントに記載した、マクロで干渉レポートを作成するサンプルを 作成しました。 クリックした面に法線を作成する - C#ATIA コードはこちら。 'vba sample_ClashReport_ver0.01 using-'ver0.0.10' '指定した2つのプロダクトの干渉チェックをします Option Explicit Sub CATMain…

Viewpoint3Dで表示を動かす2

こちらのコメントで御質問頂いた "画面中心に表示させる" 方法のサンプルです。 クリックした面に法線を作成する - C#ATIA と言っても、過去にテストしたコードを64bitで動くように 修正しただけなのですが・・・ Viewpoint3Dで表示を動かす - C#ATIA 'vba test_Viewpoint3D ver…

読み取り専用でファイルを開く2

昨日、imihitoさんからのアドバイスを利用するために書き換えてみました。 読み取り専用でファイルを開く1 - C#ATIAVBA.FileSystem.SetAttr/GetAttr関数を利用して進めていたのですが、 ファイルの存在をチェックや拡張子を取得する関数類がVBA.FileSystemには 存在していな…

読み取り専用でファイルを開く1

"読み取り専用でファイルを開きたい" と御質問を頂きました。 過去に探した事が有り、"Unofficial CATIA User Forum" にも 記載したのですが・・・ 生憎、ソースコードの管理が悪く サンプルが見つかりませんでした。結論としては、CATIAのマクロでドウコウでは無く、FileSystemOb…

クリックした面に法線を作成する

こちらでコメント頂いたのですが、時間がナカナカ確保できずに サンプルを作れませんでした。3Dの文字モデリングマクロ8 - C#ATIA正直な所、完成した状態がイメージし切れていないため、クリックした 面のクリックした位置に法線を作成するマクロを作成してみました。 'vba sample_Cre…

サーフェスの色をボディに反映する2

こちらの続きですが、タイトル名がふさわしくないです。サーフェスの色をボディに反映する - C#ATIAtakashiさんからコメントを頂き、早速ご要望を反映してみました。 'vba sample_ApplyColor_ver0.0.2 using-'KCL0.0.10' '指定した形状セット(ボディ)の面の色をボディ(形状セット)…

環境変数 CAT_VBAIsOutProc

これ知りませんでした。COE : Forums : CAT_VBAIsOutProc確かにVBA6(32bit)からVBA7(64bit)に移行した際、 動かないマクロが幾つかありました。(KCLも)起動するCATIAの環境変数にこれを追加することで VBA7でも32bitとして実行できるようです。何れは64bitとし…

GSMGetObjectFromReference

COEにこんな記載が http://www.coe.org/p/fo/st/thread=29679リファレンスからオブジェクトを取得する関数。 使わないので忘れていたのですが、利用価値が無いわけじゃ 無いと思ってます。ドキュメントに記載されていないので、忘れるわけです・・・。 と言う理由での覚書。