C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

HTMLファイルからマクロの呼び出し

今のところ、PowerMillのマクロの呼び出しは
・リボンのボタン
・コンテキストメニュー
を用途に応じて行っているのですが、他の方法もある事は薄々知ってます。

こちらにサンプルが添付されているのですが
Discussion: Options to create PowerMILL automation - Autodesk Community
HTML + VBScript で行われています。

DotNetで開発する際もそうだったような気がするのですが、
PMill独自言語以外の場合は、結果的に[DoCommand]
[DoCommandEX] 等で文字列としてコマンドを渡し実行する事になり、
非常にデバッグが行いにくい為、不便です。
その為、リンク先のサンプルを元に、HTMLファイルは外部のマクロを
呼び出すだけのものを作ってみました。


1.実行されるマクロ
何でも良いのですが、こちらのマクロを呼び出すことにします。
水平面高さリストを表示2 - C#ATIA
これを仮に

C:/temp/Hoge.mac

と言うパスで保存しておきます。

2.呼び出し用HTMLファイル
添付されているサンプルを元にしたのですが、不要となる部分を
ごっそりそぎ落とし、最低限のボタン1個だけのものにしました。

<feff><HTML>
<HEAD>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</HEAD>
<BODY><feff> <feff> <feff> <feff>     
	<script language=vbscript>
	<!--
		Set PM=Window.External '必要
		
		Sub Button_CallMacro_Onclick
			PM.DoCommand("MACRO 'C:/temp/Hoge.mac'") 'マクロの呼び出し
			PM.DoCommand("SPLITTER TABEXPLORE") 'エクスプローラツリーの表示を戻す
		End Sub
	-->
	</script>
	
	<input id=Button_CallMacro type=button value="Call Macro">
</BODY>
</HTML>

これを

C:/temp/HTML_Call_Macro.html

として保存します。

3.HTMLファイルの表示ボタン
HTMLファイルをD&Dしても良いのですが面倒な為、ショートカットキーに割り当ててみます。
又、表示させる際は通常のブラウザで利用した場合、複数PMillを
起動していた際、任意のPMillではない方で実行される可能性が
あるため、こちらのPMill内のブラウザで表示させます。
f:id:kandennti:20180507185819p:plain
ショートカットの設定はこんな感じです。(空いていたので F7キー にしています)
f:id:kandennti:20180507185828p:plain
[Command]部分には

PMILLHELP URL 'C:\temp\HTML_Call_Macro.html'

と、しました。
PMill内のブラウザで表示させるのは、Helpファイルとして表示させるようですね。

HTMLファイルが非常に手抜きで、W3C仕様にも程遠いのですが、
・マクロ自体は単体として開発可能
・HTMLの表現力
のメリットが得られそうです。
(特にイロイロと設定・指定した上で実行するマクロにはメリット有りそう)

実際テストしたのは、こんな感じです。


デバッグ考えたらCATIAもVBAが一番楽だと思うんですけどね。
Pythonでやりたい方が、すごいの作ったみたいですが・・・。
GitHub - robertpardillo/rice: Python API to control Catia