C#ATIA

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

CATIA_V5

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

前回のマクロでは、2つを比較して色を反映させましたが、同一の面を認識 = 異なる面を認識なので、2つを比較して異なる面を抽出するマクロを作りました。 'vba sample_GetChangeArea_ver0.01 using-'KCL0.08' '2つのボディ/形状セットの異なる面を抽出 Option Explici…

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

昔と異なり最近は、客先から3DCADデータを受け取って作業を行うことが 殆どなのですが、当然全ての客先がCATIAを使っているわけでは無い為、 中間フォーマット(Parasolid,Acis,Step,Iges)で受け取る事が殆どです。 (メーカーさんがCATIAでも、間に数社はいるとCATIAでも…

指定した要素の周囲要素を取得する3

こちらの続きです。 指定した要素の周囲要素を取得する2 - C#ATIA前回は無意味だったので、結局素直に距離を測り判断します。 リフレームオンと検索でHitした要素だけの距離測定のため、全部の要素に 対して行うより短時間で済むはずです。 'vba sample_Get_Outskir…

指定した要素の周囲要素を取得する2

こちらの続きです。指定した要素の周囲要素を取得する1 - C#ATIA "周囲要素を取得する" と書いておきながら、画面に表示されたものを 取得している為、遠くに有るのに "周囲の要素" を判断されている事は 昨日の時点で気が付いていました・・・。これを改善…

指定した要素の周囲要素を取得する1

"指定した要素の周囲の要素を取得したい" とご質問を頂きました。すんなり行う機能がCATIAには無いような気がするので、"リフレーム オン" と "検索" を利用します。 'vba sample_Get_Outskirt_Items using-'KCL' '指定した要素(GSD)の周囲要素を取得 Option Explic…

小さな線や面を非表示にし、リネームする

こちらの続きです。 小さな線や面を削除する - C#ATIA基本的に前回のコードを改造したものです。 'catvba sample_Hide_Rename_SmallShape '指定した形状セット内の微少要素の削除 Private Const SmallLength = 0.01 '微少長さ 単位mm Private Const SmallArea = 0…

小さな線や面を削除する

久々のCatVBAです。 'catvba sample_DeleteSmallShape '指定した形状セット内の微少要素の削除 Private Const SmallLength = 0.01 '微少長さ 単位mm Private Const SmallArea = 0.0000000001 '微少面積 単位m^2 Private SmallShapes As Collection '削除要素 Pr…

CATIA V5 ファイルのアイコンの関連付け

使用しているPCには複数のCATIAのリリースをインストールしています。 (受け取り可能なフォーマットで、CATIA V5 としている以上、 最新のリリースもインストールしておきたい為です)近々R2015になるので、不要なリリースのものをアンインストールしました。 アンインストールするとCATIA V5 ファイルの関連付け…

CATVBAの標準モジュールをマクロで削除出来たよ。

こちらの続きです。 CATVBAの標準モジュールをマクロで削除したい (希望)2 - C#ATIA 何から何まで教わっていながら、やっていませんでした、スイマセン。 出来上がりましたので、ご報告を。コード等はいつものGrabCADさんにUpしております。 GrabCAD - CAD library マクロの実…

CATVBAの標準モジュールをマクロで削除したい (希望)2

こちらの続きです。 CATVBAの標準モジュールをマクロで削除したい (希望) - C#ATIA imihitoさんから重要なコメントを頂いたので、早速試してみました。 試したコードはこちら 'vba Sub MSAPC_Apc_Test() Dim oApc 'As Apc Set oApc = CreateObject("MSAPC.Apc") Dim oVBE …

指定ボディを子ボディにしつつ、リネーム2

こちらの続き・・・と言うか反省です。 指定ボディを子ボディにしつつ、リネーム - C#ATIA 昨日のコードでは、こう書きました。 'vba type1 Sub CATMain() Dim Msg$: Msg = "Bodyを選択して下さい : ESCキー 終了" Dim SelElem As SelectedElement Do Set SelElem = KC…

指定ボディを子ボディにしつつ、リネーム

明日には出口にたどり着けそう。長かった・・・。少し前に行った作業で、類似した作業を何度もやることになった為 急遽作ったマクロです。 指定したボディをアセンブルで子供にするだけのマクロです。 えぇ大した事無いです。 具体的に示すとこんな事です。 このボディー.…

曲線と戦ってみる11 - 曲線の最小Rを求める

こちらの続きです。 曲線と戦ってみる10 - C#ATIA曲線内の最小Rとなる部分を見つけ出せば、何か糸口が掴めるかな? と思っています。 指定した曲線の最小Rって "式" で取得できる事 知っていましたか?こんな感じです。 "長さ" のパラメータを作成して、画像のよ…

曲線と戦ってみる10

こちらの続きです。 曲線と戦ってみる9 - C#ATIA マクロで作ったサンプル曲線を元に、近似化の際の円弧と曲線の誤差の 比率と、結果をまとめて見ました。 トレランス0.002 OK (%) NG (%) 最大 0.011658 113.8929 最小 0.000001 0.000008 正直、OK時の最小とNG時の最大は…

線を選択しつつ、合計長さを表示する

こちらの続きです。 形状セット内の線の長さをExcelシートに出力する - C#ATIA 線を選択し続けながら、合計の長さを表示し、最後にExcelに 出力します。 'vba GetCurvesLength_ToExcel2 Sub CATMain() Dim TotalLen#: TotalLen = 0# '合計の長さ 'Partの取得 Dim D…

曲線と戦ってみる9

こちらの続きです。 曲線と戦ってみる8 - C#ATIA 曲線の長さとチャレンジする円弧の長さの関係を 掴みたい為、こちらのコードを修正しました。 曲線と戦ってみる4 - C#ATIA何処を修正したのか忘れてしまった為、全てコードを 記載しておきます。(KCLは必要です) 'vba…

曲線と戦ってみる8

こちらの続きです。 曲線と戦ってみる7 - C#ATIA 検証用の曲線を作成するのが面倒になってきたので、 ユニークな曲線を作成するだけのマクロを作りました。 'vba Partファイルにランダムな曲線を作成 Option Explicit Private Const CurveCountMin = 5& '曲線最小数 Pri…

曲線と戦ってみる7

こちらの続きです。 曲線と戦ってみる6 - C#ATIA 一本の曲線を近似化するだけなので、あまりスピードには こだわるつもりは無かったのですが、コードが荒れない程度であれば 高速化したいので、テスト用コードを作成。こちらのType1のコードを見ると、y4yamaさんも曲線…

曲線と戦ってみる6

こちらの続きです。 曲線と戦ってみる5 - C#ATIA 最適な数の点を求める方法がわからないのですが、 曲線とチャレンジする円弧のお互いの長さを考えて 見ることにします。チャレンジする円弧に対し、この区間の曲線の状態は 想像するに3タイプが考えられます。 …

曲線と戦ってみる5

こちらの続きです。 曲線と戦ってみる4 - C#ATIA 色々な曲線を試しているうちに気が付くのですが、 このマクロ欠点が幾つか有ります。 ・直線部分は近似化されない 直線部は、3点通過の円弧が作成出来ない為当然と言えば 当然です。 こんな感じで直線が含まれた…

曲線と戦ってみる4

こちらの続きです。 曲線と戦ってみる3 - C#ATIA コードの理解を深めたかったのと、今後修正等を行いやすくしたかった為 Type1と元に作り直しました。 'vba Arc_Approximated Option Explicit Private Const mPntCount = 151& '曲線上のポイント数 Private Const …

非常に個人的なCATVBA用ライブラリ

公開するコードを短くしたい為、非常に個人的に作成している CATVBA用ライブラリを公開しておきます。未だに迷いに迷っている為、今後も変更が確実にあり 場合によっては破壊的な変更も十分ありえます。 (古いライブラリでは実行できたマクロが、新しいライブラリでは動かなく…

曲線と戦ってみる3

こちらの続きです。 曲線と戦ってみる2 - C#ATIA Type1・2・3で共通に利用されているrad_3Pkeisan関数に、 "数学的な部分の一部が、理解出来ていない" 部分が存在しています。 出来れば知りたいところ・・・。結果的には、3点を通過する円弧(=3点を頂点とす…

曲線と戦ってみる2

こちらの続きです。 曲線と戦ってみる1 - C#ATIA 最後にどなたかは忘れてしまいましたが、「このようにすれば、 もっと良いんじゃない?」と言うコードです。 'vbs - Type3 Option Explicit Dim CATIA Dim icd(500, 2), pnt_onCrv(500) Dim icd1(2), icd2(2), …

曲線と戦ってみる1

タイトルを付けたもののゴールを決めていない為、どんな結果になるのか? 何にたどり着くのか? 自分でもわかっていません。かなり以前の話ですが、"Unofficial CATIA User Forum" で、 y4yamaさんが三次元曲線の円弧近似マクロを公開してくれていました。 手元にコード…

RefreshDisplay

「マクロで面を作成し、確認を求める為メッセージボックスをさせた際 画面上に面が表示されない」 との質問を頂きました。(言葉ではわかりにくいのですが)実はこの現象、最初は再現できなかったです。 まず、マクロ側の手間を省きたかった為、形状セットを作成し XY平面上にス…

ProductTree の リオーダー

今日までは暇なので、こちらの動画を見ていました。 www.youtube.com Productのリオーダーをマクロでどうやるのか知らなかったのですが、 動画に表示されているコードを見ると、単にカット&ペーストで処理するだけ なんですね。(動画のReorder_Tree関数部分)単純にTreeを逆…

シルエット(事前選択+CATIA.StartCommand)

こちらの続きです。 マクロの活用例?2 - C#ATIA動画の最初の20秒ぐらいまでの処理を真似てみました。 'VBA シルエット-スプリットテスト Private Const SilhouetteCommand = "シルエット" Sub CATMain() 'Body Dim BaseBody As Body Set BaseBody = SelectItem("Bodyを選択し…

マクロの活用例?2

こちらの続きっぽい感じです。 マクロの活用例? - C#ATIA 少し時間が出来たので、この方の動画を見ていました。 Tere Padayhag - YouTube 僕のマクロとは桁違いにパワフルです。 よく見ると、日本語表示されている動画もあります。 (ファソテックさん辺りの女性…

形状セット内の線の長さをExcelシートに出力する

こちらの続きです。 形状セット内の線の長さを表示する - C#ATIA 前回の結果を「Excelのシートに出力したい」と言うことなので コードを変更しました。 'vba GetCurvesLength_ToExcel Sub CATMain() '選択 Dim Msg$: Msg = "形状セットを選択して下さい" Dim SelItem As…

選択セットを利用する

普段選択セットを利用しないのですが、何となくマクロで操作できるものか 調べてみました。 無いんですよね、サンプルが。SelectionSetsクラスが存在しているのは判るのですが、どうやって取得 すれば良いのか全く不明だったのですが、こちらに記載されていました。 COE …

形状セット内の線の長さを表示する

「形状セット内の、線のみの長さを取得したい」と言う質問を頂きました。 早速コードです。(「選択」部分付近のコードが正しくなかった為、修正しました) 'vba GetCurvesLength Sub CATMain() '選択 Dim Msg$: Msg = "形状セットを選択して下さい" Dim SelItem As Sele…

ライセンスの無いコマンドを使用する

"Unofficial CATIA User Forum" の常連さんの所で記載した際、 既にご存知の方も居たのですが、ちょっぴりグレーなネタです。 将来的には、ひょっとしたら今回の分は削除するかもしれません。ライセンスが無くワークベンチ自体が利用できないものについては、ムリだと 思うの…

CATIAで3次ベジェ曲線が描けたよ

何となく?こちらの続きです。 CATIAでベジェ曲線(2次・3次)を描きたい - C#ATIA 以前、「R2013のGSDの新コマンド "方程式の曲線を定義" で、ベジェ曲線が 描けないかな? でも、コマンドの使い方がわからないなぁ」 のような事を書いたのですが、やっぱり描けたので…

CATIA V5 FreeなViewer2

こちらの続きです。 CATIA V5 FreeなViewer - C#ATIA もう一個だけ見つけました。 ○A360 Viewer A360 Viewer | Free Online File Viewer | Autodesk こちらは本当にビューワです。 要登録です。 2Dファイルも対応して いるのですがやっぱり、CATDrawingファイルは見れな…

今更ながら、ボディからMinimumBoxを作成する(Sketch&Pad)

少し前にMinimumBoxで検索された方がいらっしゃったので マクロ版として作ってみました。 "Unofficial CATIA User Forum" でここなさんがパワーコピーの サンプルとしてUpされていましたし、確かy4yamaさんがマクロ版として Upしていました。(中身は見なかったです・・・)折…

スケッチをクローズする

スケッチのマクロはあまり見かけないのですが、スケッチャーに入るところから 抜けるまでの操作をすれば、記録が取れます。 但し、スケッチのマクロを開発する際に困る事があります。 SketchクラスのOpenEdition関数からCloseEdition関数まで処理が 出来ていれば問題ないのですが、エ…

2つのサーフェス郡の最短距離を取得する

個人的にはGWまでに完成出来たつもりなのですが、世間はGWですね・・・。 タイトルが異なりますが、内容的には前回の続きです。 技術的なオブジェクト?1 - C#ATIA 最近得た知識から、思い付いたサンプルが出来ました。 同一Partファイル内の、異なる形状セットのサーフェス郡の最短…

技術的なオブジェクト?1

最近になりイロイロと調べていたら、Productクラスの GetTechnologicalObject関数にたどり着きました。 この関数は使った事が無く、存在も知りませんでした。GetTechnologicalObject関数の引数はString型(文字列)なのですが、 引数String型の場合、何を渡したら良い…

D&DでIgesファイルを変換する(オマケ付き)

バッチモード起動を利用したマクロが完成しました。 IgesファイルをD&Dすることで、レイヤー毎の形状セットに分かれた状態で CATPartファイルに変換します。 要はこちらのマクロを組み込んだものです。 レイヤーの扱いを考える5 - C#ATIA コードが少し長くなった為、こちらにUpしました…

やっぱりスケッチ サポートを変更は出来ないと思う

また、よく読んでなかったので気が付いたのですが、これ。 How to use the StartCommand method | CATIA V5 Automation "CATIA.StartCommand" についての記載なのですが、 サンプルコードをよく見ると、二番目の事例が "スケッチサポートの変更" に なっているじゃないで…

Viewpoint3Dで表示を動かす

こちらのマクロを視野に入れて、カメラ関係のテストをしてみました。 Productの構成要素の表示/非表示 - C#ATIA カメラ関係の処理をやった事が無いので。テストをしているうちにアニメーションっぽい事が出来そうな気が してきたので、そんなサンプルになりました。 'vba Private Decl…

外部のマクロを実行する3

こちらの続きです。 外部のマクロを実行する2 - C#ATIA 外部のマクロを実行する方法がもう一つありました。 同じSystemServiceクラスのEvaluate関数です。 AutomationManualの感じから、 「ソースコードの文字列を、マクロとして実行する」 ようで、サンプルが記載されており、そ…

外部のマクロを実行する2

こちらの続きです。 外部のマクロを実行する1 - C#ATIA 前回はCATVBAからCATScriptを呼び出す処理でしたが、 今度はCATVBAからCATVBAを呼び出します。まず、「C:\temp」フォルダにVBAプロジェクトのライブラリ 「Outside_Macro_Test1」を作りモジュール名「AddHBody」 のモジュール…

外部のマクロを実行する1

VBAから外部のプログラムを起動して、処理したいことが偶にあります。 Excelであればこんな感じです。 他アプリを起動する:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug 過去にブログに記載したものでも、実際にWscript.Shellを使いました。 (GetLinkR…

スイープコマンドのロー

バッチモードで何か実益の有るものを作りたいのですが、 思うように出来ていないため、気分転換に別のことを。こちらに「ロー」について触れたのですが CATIA V5 の サーフェステキスト - C#ATIA 「ロー」って使ってますか? 僕は業務では1・2回ぐらいしか 使って事ありません…

起動中のCATIAから環境設定パスを取得

内容的にはこちらの続きです。 バッチモードでCATScriptを実行する - C#ATIA 前回はバッチモード起動の際のパラメータがよく分らず、ショートカットから 拾い出しましたが、マクロから環境設定パスを取得できないか 試してみました。念の為、環境設定とは 「Environment Editer XXXX…

InternalNameテスト

内容的にはショボイのですが、実績が少ないのでInternalNameの テストを行いました。まずはこんな感じのデータを作りました。 点を5個作成しただけです。 続いてこんなコードを作成し実行します。 'vba Sub InternalName_Test() Dim Doc As PartDocument Set Doc = CAT…

ユーザーサイドのCATIA 関連サイト5

こちらの続きです。 ユーザーサイドのCATIA 関連サイト4 - C#ATIA ○Inoffiziellen CATIA Hilfeseite(海外) Inoffizielle Catia Hilfeseite 前々回紹介した "Foren auf CAD.de" の常連さんが個人で 集約したサイトのようです。 「Catia FAQ」-「Programmierung」の…

バッチモードでCATScriptを実行する

以前、ユーザーサイドのCATIA 関連サイトとして紹介した "CATIA V5 Automation" のこちらの記載ですが、 Executing CATIA scripts in batch mode | CATIA V5 Automationよく読んでいませんでした。 要は "CATIAをバッチモードで起動して、マクロの処理をするとビックリする程速…