C#ATIA

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

コッホ曲線を描く

こちらの12年も前の記事なのですが、楽しそうなので
CATIAで行ってみました。
再帰プログラムによるフラクタル図形の描画:CodeZine(コードジン)

'vba sample_Koch_Curve_ver0.0.1  using-'KCL0.0.12'  by Kantoku
'xy平面上にコッホ曲線を作成します
'https://codezine.jp/article/detail/73

Option Explicit

Private Const LEVEL = 3         '再帰レベル

Dim mPnts As Object             'Get_KochCurvePos用座標郡
Dim mDoc As PartDocument
Dim mPt As Part
Dim mFact As HybridShapeFactory

'定数代わり
Dim m1_3 As Double              '1/3
Dim m1_Sq3 As Double            '1/sqr(3)
Dim mPI_6 As Double             'PAI/6 = 30deg

Sub CATMain()
    'ドキュメントのチェック
    If Not CanExecute("PartDocument") Then Exit Sub
    
    '初期設定
    m1_3 = 1 / 3
    m1_Sq3 = 1 / Sqr(3)
    mPI_6 = Atn(1) * 4 / 6
    
    Set mDoc = CATIA.ActiveDocument
    Set mPt = mDoc.Part
    Set mFact = mPt.HybridShapeFactory
    
    '頂点座標
    Dim p1, p2, p3
    p1 = Array(100#, 160#)
    p2 = Array(400#, 160#)
    p3 = Array(250#, 420#)
    
    '座標値取得
    Set mPnts = KCL.InitLst()
    mPnts.Add p1
    
    Call Get_KochCurvePos(p1, p2, LEVEL)
    Call Get_KochCurvePos(p2, p3, LEVEL)
    Call Get_KochCurvePos(p3, p1, LEVEL)
    
    '座標値→点リファレンス
    Dim Refs As Object
    Set Refs = Get_PointRefs(mPnts)
    
    '折れ線化
    Dim Poly  As HybridShapePolyline
    Set Poly = Init_Poly(Refs)
    
    '形状セットへ挿入
    Dim Hbdy As HybridBody
    Set Hbdy = mPt.hybridBodies.Add()
    Hbdy.Name = "Koch_Curve"
    
    Hbdy.AppendHybridShape Poly
    
    'Refsの最後の点のみ不要
    mFact.DeleteObjectForDatum Refs(Refs.Count - 1)
    
    '終わり
    MsgBox "Done"
End Sub

'リファレンスリストから折れ線生成
Private Function Init_Poly(ByVal Refs As Object) As HybridShapePolyline
    Dim Poly As HybridShapePolyline
    Set Poly = mFact.AddNewPolyline()
    
    Dim i As Long
    For i = 0 To Refs.Count - 2
        Poly.InsertElement Refs(i), i
    Next
    Poly.Closure = True
    mPt.UpdateObject Poly
    
    Set Init_Poly = Poly
End Function

'xy座標値郡から点のリファレンスリスト生成
Private Function Get_PointRefs(ByVal Lst As Object) As Object
    Dim Refs As Object
    Set Refs = KCL.InitLst
    
    Dim p As Variant
    For Each p In mPnts
        Refs.Add Init_PointRef(p)
    Next
    
    Set Get_PointRefs = Refs
End Function

'xy座標値から点のリファレンス生成
Private Function Init_PointRef(ByVal Ary As Variant) As Reference
    Dim p As HybridShapePointCoord
    Set p = mFact.AddNewPointCoord(Ary(0), Ary(1), 0#)
    mPt.UpdateObject p
    
    Set Init_PointRef = mPt.CreateReferenceFromObject(p)
End Function

'コッホ曲線座標
Private Sub Get_KochCurvePos(ByVal p1 As Variant, ByVal p2 As Variant, lv As Long)
    Dim p3 As Variant, p4 As Variant, p5 As Variant
    p3 = Array((2 * p1(0) + p2(0)) * m1_3, (2 * p1(1) + p2(1)) * m1_3)
    p4 = Array((p1(0) + 2 * p2(0)) * m1_3, (p1(1) + 2 * p2(1)) * m1_3)
    
    Dim xx As Double, yy As Double
    xx = p2(0) - p1(0)
    yy = -(p2(1) - p1(1))
    
    Dim dist As Double
    dist = Sqr(xx * xx + yy * yy) * m1_Sq3
    
    Dim ang As Double
    If xx >= 0 Then
        ang = Atn(yy / xx) + mPI_6
        p5 = Array(p1(0) + (dist * Cos(ang)), p1(1) - (dist * Sin(ang)))
    Else
        ang = Atn(yy / xx) - mPI_6
        p5 = Array(p2(0) + (dist * Cos(ang)), p2(1) - (dist * Sin(ang)))
    End If
    
    If lv < 1 Then
        mPnts.Add p3
        mPnts.Add p5
        mPnts.Add p4
        mPnts.Add p2
    Else
        Call Get_KochCurvePos(p1, p3, lv - 1)
        Call Get_KochCurvePos(p3, p5, lv - 1)
        Call Get_KochCurvePos(p5, p4, lv - 1)
        Call Get_KochCurvePos(p4, p2, lv - 1)
    End If
End Sub

再帰でやるのもどうかな? とも思ったのですが、再帰の為の記事だったので
再帰のままです。

元の記事では、座標値を計算しながら線を描いてますが、
まとめて座標値を取得し、一本一本描かずに折れ線化しています。
(他にも計算コストの高そうな部分は、予めメンバ変数化し計算量を減らしてます)

円を指定して内接するようにしようかとも思いましたが、
利用価値が低そうなので、単にXY平面に描くだけにしました。

見ていたら雪の結晶を思い出し、よけいに寒くなりました・・・。

背景色を変更・復元する2

こちらの続きです。
背景色を変更・復元する - C#ATIA

"パラメータを作成するのに処理時間がかかる" との事でしたので、
代案として、XY平面に元の背景色をバックアップする事にしました。

又、Formのボタンで操作可能なもののサンプルにして見ました。

まず、新作したFormにコマンドボタンを2つ配置します。
それぞれの名前はそのままなのですが、念の為記載しておきます。
・UserForm1
・CommandButton1
・CommandButton2
f:id:kandennti:20171120162151p:plain

このフォームのコード部分に以下のコードを貼り付けます。

'vba sample_ChangeBackColor ver0.0.2 by Kantoku
'CATIAの背景色を変更・復元
Option Explicit

'メンバ変数
Dim mDoc As PartDocument
Dim mPt As Part
Dim mSel As Selection
Dim mVis As VisPropertySet
Dim mVisSetAtt As VisualizationSettingAtt
Dim mBackColor As Variant

Private Sub UserForm_Initialize()
    'Form設定
    Me.CommandButton1.Caption = "背景色-白"
    Me.CommandButton2.Caption = "背景色-復元"
    
    '一時的な背景色
    mBackColor = Array(255, 255, 255)
    
    'CATIA情報
    Set mDoc = CATIA.ActiveDocument
    Set mPt = mDoc.Part
    Set mSel = mDoc.Selection
    Set mVis = mSel.VisProperties
    Set mVisSetAtt = CATIA.SettingControllers.Item( _
        "CATVizVisualizationSettingCtrl")
End Sub

'コマンドボタン1
Private Sub CommandButton1_Click()
    Call ChangeBackColor
End Sub

'コマンドボタン2
Private Sub CommandButton2_Click()
    Call RestorationBackColor
End Sub

' --- サポート関数 ---

'BACKCOLORに変更
Private Sub ChangeBackColor()
    Dim Color As Variant
    
    '背景色取得
    Color = Get_BackRGB()
    
    'XY平面に割り当て
    Call Set_PlaneRGB(mPt.OriginElements.PlaneXY, Color)
    
    '背景色変更
    Call Set_BackRGB(mBackColor)
End Sub

'復元
Sub RestorationBackColor()
    Dim Color As Variant
    
    'XY平面色取得
    Color = Get_PlaneRGB(mPt.OriginElements.PlaneXY)
    
    '背景色復元
    Call Set_BackRGB(Color)
    
    'YZ平面色取得
    Color = Get_PlaneRGB(mPt.OriginElements.PlaneYZ)
    
    'XY平面色復元
    Call Set_PlaneRGB(mPt.OriginElements.PlaneXY, Color)
End Sub

Private Function Set_PlaneRGB(ByVal Plane As Plane, _
                              ByVal Color As Variant)
    mSel.Clear
    mSel.Add Plane
    
    mVis.SetRealColor Color(0), Color(1), Color(2), 1
    mSel.Clear
End Function

Private Function Get_PlaneRGB(ByVal Plane As Plane)
    mSel.Clear
    mSel.Add Plane
    
    Dim Color(2) As Long
    mVis.GetRealColor Color(0), Color(1), Color(2)
    mSel.Clear
    Get_PlaneRGB = Color
End Function

Private Sub Set_BackRGB(ByVal Color As Variant)
    Call mVisSetAtt.SetBackgroundRGB( _
        Color(0), Color(1), Color(2))
    mVisSetAtt.SaveRepository
End Sub

Private Function Get_BackRGB() As Variant
    Dim Color(2) As Long
    Call mVisSetAtt.GetBackgroundRGB( _
        Color(0), Color(1), Color(2))
    Get_BackRGB = Color
End Function

"例外処理は要らない" との事なので、ほぼしておりません。
念の為、
・PartDocument以外はエラーになります。
・背景色復元後、XY平面色も復元させていますが、
 その際YZ平面色をXY平面に反映させています。(通常同じだろうと・・・)
・2度続けて、"背景色-白" ボタンを押すと、復元不可能になります。

StartCommandとRefreshDisplay

別のものを作成しているうちに気が付いたので覚書なのですが、
ひょっとしたら既出なのかも知れません。


CATIAのマクロでは、全てのコマンド類を実行する為の関数類が提供されて
いるわけではないのですが、

CATIA.StartCommand xxxx(コマンド文字列)

を利用すると、手動での実行時のダイアログが出現する為、不可能と
思われたことが可能になる場合が有ります。
こちらで作成したシルエットコマンドの無意味なサンプルも、そんな方法です。
シルエット(事前選択+CATIA.StartCommand) - C#ATIA

但し、困るのは "StartCommand" は、ダイアログを呼び出してくれる
だけなので、"事前選択" と "SendKeys" を利用する事になります。
・・・が、"SendKeys" がナカナカの曲者で、思ったようなタイミングでは
文字を送ってくれないです。


そんな例として、一つ。
手動の場合は事前に面を選択し形状セットを作ると、子の要素として
取り入れた状態で、形状セットが新たに作成されます。
言葉では伝わりにくいので、こんな感じの操作です。

 
形状セットを作る為の関数は用意されているのですが、子の要素を
取り入れながら形状セット新たに作成する関数は存在していないです。
恐らく。
こう言った場合、"StartCommand" を利用する以外には方法が無さ
そうなので、こんな感じのコードを作成しました。

'vba これNGです using-'KCL0.0.12'
'選択した要素を子とする形状セットを作成

'コマンド文字列
Private Const CMD = "形状セット..."

Sub CATMain()
    Dim Shp As HybridShape
    Set Shp = KCL.SelectItem("GSD要素を選択", "HybridShape")
    If Shp Is Nothing Then Exit Sub
    
    Dim Sel As Selection
    Set Sel = CATIA.ActiveDocument.Selection
    
    Sel.Clear
    Sel.Add Shp
    
    CATIA.StartCommand CMD
    SendKeys "{Enter}", True
End Sub

子の要素を選択状態のまま、形状セットを作成するコマンドを呼び出し、
最後にEnterキーを投げています。
悪くもない感じがするのですが、実際に実行してみるとこのような
ダイアログが表示された状態で終わってしまします。
f:id:kandennti:20171120142509p:plain

    SendKeys "{Enter}", True

の部分が上手く行ってないです。
こんな感じのものや
http://www.geocities.co.jp/SiliconValley-PaloAlto/9180/exsendkeys.html
ウェイトさせたりしても変化無しでした。

試していて感じたのは、ダイアログが表示されるのが遅いのではなく、
マクロの処理を待った上で、ダイアログが表示されるような気さえします。

そこでこんな感じ1行追加しただけで、上手く行くようになりました。

'vba sample_Init_HybridBody_InsItem_ver0.0.1  using-'KCL0.0.12'  by Kantoku
'選択した要素を子とする形状セットを作成

'コマンド文字列
Private Const CMD = "形状セット..."

Sub CATMain()
    Dim Shp As HybridShape
    Set Shp = KCL.SelectItem("GSD要素を選択", "HybridShape")
    If Shp Is Nothing Then Exit Sub
    
    Dim Sel As Selection
    Set Sel = CATIA.ActiveDocument.Selection
    
    Sel.Clear
    Sel.Add Shp
    
    CATIA.StartCommand CMD
    CATIA.RefreshDisplay = True '追加
    SendKeys "{Enter}", True
End Sub

RefreshDisplayを間に挟んだところ、Enterキーを認識してくれました。


単に画面の更新を入れるだけで、良かったみたいです。
少しだけ "StartCommand" の利用する場面が増えそうな気がします。
本当は、 "形状セットの変更" をやりたいんですけどね。

3DPDFと、おまけ

以前、CATIAからフリーソフトで3DPDFを作成する手順を
"Unofficial CATIA User Forum"  に書いたので
再度覚書として記載するついでに、最近は新たな
ソフトが無いかな? と思い探してみました。

○Bentley View V8i (要登録)
個人的にはこれが安定しているかなぁ と感じました。
細かく書かれている方がいらっしゃるので、こちらをご覧になると
良いかと思います。
フリーのツールで3D PDFを作成する方法 – FM575

CATIAの場合、直接インポートが出来るフォーマットが無さそうな為、
CATIA(wrl) → MeshLab(obj) → Bentley View
で可能でした。面倒な上、色が抜けてしまいます。
(色については wrl でエクスポートした時点で、抜けてます)


○DesignSpark Mechanical (確か要登録)
出た当時試してみました。 ちょっと自由曲面の面が抜けたりしていた
印象がありますが、最近はどうでしょうか?
こちらに方法が記載されていました。
[DSM] 3DデザインをPDFでシェア!

CATIAの場合ですが、こちらにインポート可能なフォーマット記載されており
利用できるインポート/エクスポート形式は? – 各サービスのサポート
"STEP (読み取りのみ)" となっています。3DPDFでエクスポートを含め
"読み取りのみ"  なのでしょうかねぇ?(未テストです)

以前試したときは
CATIA(wrl) → MeshLab(obj) → DesignSpark Mechanical
で行いました。


Fusion360 プラグイン (要 AutodeskID)
こちらはトライアル版で、10回まで可能なようです。
3D PDF Exporter for Autodesk® Fusion 360™ - Trial | Fusion 360 | Autodesk App Store
以前試したときは、カラーについては未対応 となっていましたが、
バージョンUpしカラー対応したっぽく記載されていましたが、色抜けます…。
(未確認ですが、面の色ではなくマテリアルのテクスチャじゃないと駄目なのかも知れません)
デフォルトではトレランス甘く、トレランスhighでは処理が異常なほど遅いです。
CADデータから作成可能なのは魅力的なのですが。


○EnSuite-View (要 各種アカウント)
今回発見したのはこちら。
EnSuite-View - 3D Free CAD Viewer, Productivity Tools and export files to IGES/STEP/3DPDF
これ自体は登録の必要が無かったのですが、これらのどれかの
アカウントが必要です。
f:id:kandennti:20171117172643p:plain
こちら基本的にビュアーで、ライセンス無しでも主要CADのネイティブデータの閲覧が
可能なようです。
実際に3DPDFのエクスポートを試してみたものの、3回中3回ソフトが落ちる
と言う状況で、確認出来ていません。
メッセージからして5回までの制限のようで、これはフリーソフトと言うより
トライアル版のような気がするのですが…。


○Manufacturing Data Exchange Utility (有償)
おまけです。 こちらPowerMill導入時、一緒にインストールされる変換ソフトです。
こちらに記載した、"Delcam Exchange" のバージョンUp版です。
CATIA V5 FreeなViewer - C#ATIA
これが手に入ったので、今のところフリーソフトに頼らなくて済むようになりました。


3DPDFとは無関係なのですが、こちらも見つけたのでご紹介。

○Explore 3D (場合によっては 要登録)
Winエクスプローラのプレビュー画面に、CADファイルの情報を表示させると言う
ちょっと今までに見たことが無かったソフトです。
http://www.cadcam-e.com/Explore3D/
こちらも、ライセンス無しでも主要CADのネイティブデータ情報が見れます。
これ、CATIAライセンスのある方でも良いかも知れません。

AssemblyTreeが表示されるので、SubAssyを持ったデータの場合、
複数CATProductがあり、ネーミングルール等が無いと直ぐには一番Topの
ファイルがわかりません。 が、これの場合はクリックするだけで
探し出せるような気がしてます。
f:id:kandennti:20171117172656p:plain

又、CATDrawingの場合サムネイルが表示されます。
f:id:kandennti:20171117172705p:plain
雰囲気しか見れませんけど。
と、ここまでは登録不要です。

3DCADデータの場合、小さいですが3Dビュア-として利用出来るようです。
"3D" を押すと、アクセスコードの入力を催促されました。
"ブログの所で登録しろ" とメッセージが出るので、登録したのですが
1日以上経ってもお返事来ません・・・ので未確認です。



話を戻しますが、テストで作成した3DPDFファイルをこちらにUpしました。
GrabCAD - CAD library
・Bentley View V8i
Fusion360 プラグイン(トレランス LowとMid)
・Manufacturing Data Exchange Utility
Fusion360プラグインのトレランスhighは、データが大きすぎる為、止めました。

フリーソフトであれば、Bentley View V8i でしょうかねぇ。
(基本的にあまり必要じゃないのですが、営業さん向け用とかです)

AutodeskとDropbox

こんな記事見つけました。
DropboxがAutodeskを統合、大きな設計ファイルのコラボレーションがクラウドを意識せずにできる | TechCrunch Japan
AutoCadのデータだけのようですね。 うちには無いですし
受け取ることも無いです。

これは、Autodesk Forgeを利用しているのかな? "開発プラットフォーム" って
記載されているけど、未だに何なのか良くわからない Forge。

Dassaultは未だに、DraftSightと3DXML playerぐらいだし。
(3DXMLのフォーマットも公開していないと思う)
Autodeskえらいなぁ

背景色を変更・復元する

タイトルが異なりますが、こちらの続きです。
画面キャプチャをクリップボードに保存する - C#ATIA

単に背景色を切り替えるマクロです。
但し元の背景色に復元出来る様に、変更前の背景色RGBをパラメータに
保存しています。
(外部ファイルや何処かのプロパティに書き出すより、自然かと思います)

'vba sample_ChangeBackColor ver0.0.1 by Kantoku
'CATIAの背景色を変更・復元

Option Explicit

'背景色をバックアップするパラメータ名
Private Const BACKCOLOR_PRAM_NAME = "BackColorRGB"

'変更後背景色
Private Const BACKCOLOR = "255,255,255"

Sub CATMain()
    Dim Doc As Document
    Set Doc = CATIA.ActiveDocument
    
    Dim Msg As String
    
    Dim Prms As Parameters
    Set Prms = Get_Prms(Doc)
    If Prms Is Nothing Then
        Msg = "ProductかPartで使用してください"
        MsgBox Msg
        Exit Sub
    End If
    
    Msg = "背景色を変更しますか?" & vbNewLine & _
        "はい : 背景色を変更(RGB:" & BACKCOLOR & ")" & vbNewLine & _
        "いいえ : バックアップしている背景色に復元" & vbNewLine & _
        "キャンセル : 中止"
            
    Select Case MsgBox(Msg, vbYesNoCancel + vbQuestion)
        Case vbYes
            Call ChangeBackColor(Prms) '白に変更
        Case vbNo
            Call RestorationBackColor(Prms) '復元
        Case Else
            Exit Sub
    End Select
    
End Sub

'復元
Sub RestorationBackColor(ByVal Prms As Parameters)
    Dim Msg As String
    
    If Not Is_ExistsPrm(Prms, BACKCOLOR_PRAM_NAME) Then
        Msg = "バックアップしている背景色が有りませんでした"
        MsgBox Msg, vbOKOnly + vbExclamation
        Exit Sub
    End If
    
    Dim Prm As StrParam
    Set Prm = Prms.Item(BACKCOLOR_PRAM_NAME)
    
    If Not Is_RGB_Str(Prm.Value) Then
        Msg = "バックアップしている背景色パラメータが不正です"
        MsgBox Msg, vbOKOnly + vbExclamation
        Exit Sub
    End If
    
    Call Update_BackRGB(Prm.Value)
    
    Dim Sel As Selection
    Set Sel = CATIA.ActiveDocument.Selection
    With Sel
        .Clear
        .Add Prm
        .Delete
    End With
End Sub

'BACKCOLORに変更
Private Sub ChangeBackColor(ByVal Prms As Parameters)
    Dim Msg As String
    
    Dim Prm As StrParam
    If Is_ExistsPrm(Prms, BACKCOLOR_PRAM_NAME) Then
        Set Prm = Prms.Item(BACKCOLOR_PRAM_NAME)
        
        Msg = "既に背景色のバックアップがありますが、" & _
            "作業を続けますか?" & vbNewLine & _
            "はい : 新たにバックアップし、作業を進める" & vbNewLine & _
            "いいえ : バックアップは変更せず、作業を進める" & vbNewLine & _
            "キャンセル : 中止"
            
        Select Case MsgBox(Msg, vbYesNoCancel + vbQuestion)
            Case vbYes
                Prm.Value = Get_BackRGB_ToStr()
            Case vbNo
                '何もしない
            Case Else
                Exit Sub
        End Select
    Else
        Set Prm = Prms.CreateString(BACKCOLOR_PRAM_NAME, "")
        Prm.Value = Get_BackRGB_ToStr()
    End If
    
    Call Update_BackRGB(BACKCOLOR)
    'Prm.Hidden = True '非表示
End Sub


' --- サポート関数 ---
Private Function Is_RGB_Str(ByVal Str As String) As Boolean
    Is_RGB_Str = False
    
    Dim Ary As Variant
    Ary = Split(Str, ",")
    If Not UBound(Ary) = 2 Then Exit Function
    
    Dim i As Long
    For i = 0 To 2
        If Not IsNumeric(Ary(i)) Then Exit Function
        If Not Ary(i) = CLng(Ary(i)) Then Exit Function
    Next
    
    Is_RGB_Str = True
End Function

Private Sub Update_BackRGB(ByVal RGB_Str As String)
    Dim VisSetAtt As VisualizationSettingAtt
    Set VisSetAtt = CATIA.SettingControllers.Item( _
        "CATVizVisualizationSettingCtrl")
        
    Dim Rgb As Variant
    Rgb = Split(RGB_Str, ",")

    Call VisSetAtt.SetBackgroundRGB(Rgb(0), Rgb(1), Rgb(2))
    VisSetAtt.SaveRepository
End Sub

Private Function Get_BackRGB_ToStr() As String
    Dim VisSetAtt As VisualizationSettingAtt
    Set VisSetAtt = CATIA.SettingControllers.Item( _
        "CATVizVisualizationSettingCtrl")
    
    Dim ActColor(2) As Long
    Call VisSetAtt.GetBackgroundRGB( _
        ActColor(0), ActColor(1), ActColor(2))
    
    Get_BackRGB_ToStr = Join( _
        Array(ActColor(0), ActColor(1), ActColor(2)), ",")
End Function

Private Function Init_Prm(ByVal Prms As Parameters, _
                          ByVal Name As String) As Parameter
    Set Init_Prm = Prms.CreateString(BACKCOLOR_PRAM_NAME, "")
End Function

Private Function Is_ExistsPrm(ByVal Prms As Parameters, _
                              ByVal Name As String) As Boolean
    Dim Prm As Parameter
    
    On Error Resume Next
        Set Prm = Prms.Item(Name)
    On Error GoTo 0
    
    Is_ExistsPrm = Not (Prm Is Nothing)
    
    If Not TypeName(Prm) = "StrParam" Then
        Is_ExistsPrm = False
        '文字型タイプじゃない同一名のパラメータがある- 未対応
    End If
End Function

Private Function Get_Prms(ByVal Doc As Document) As Parameters
    Set Get_Prms = Nothing
    Select Case TypeName(Doc)
        Case "ProductDocument"
            Set Get_Prms = Doc.Product.Parameters
        Case "PartDocument"
            Set Get_Prms = Doc.Part.Parameters
    End Select
End Function

定数 "BACKCOLOR_PRAM_NAME" と同一名の文字型以外のパラメータが存在していると
上手く行かないです・・・。(対応策を深く考えませんでした)

又、KCLを利用しなかったのでDocumentのチェックがやや甘めです。

変更・復元を一つのマクロ(最初のMsgboxで切り替え)で行っている為、
使い勝手がイマイチなのですが、ブログでFormのコードをUp出来ないので
ご勘弁を。

正直な所、このようなマクロよりキャプチャをジャンジャン作るマクロの方が、
効率が良い気がするのですが・・・。

例えば、データをズーム・スピンさせながら、スペースキーを押すたびに
キャプチャファイルを作る とか、
スペースキーを押すたびにExcelにキャプチャを貼り付けるとか・・・。
(当方Excelが古いため試せませんが、ひょっとしたらCATIAから
Excel操作できるのかな?)

バインディングに苦しむ

昔、挑戦していた時もこれに悩まされてました。
XAMLデザイナでViewModelが存在しないと言われた場合のメモ - いろいろ備忘録日記

現象は同じだけど、プロジェクトはネットワークドライブじゃ無くCドライブ。
ひょっとしたらバインディングをコードビハインドすれば
解決するかも知れないけど、XAML側で行いたい。

全然進まない・・・。