C#ATIA

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

ロボドリル ブロックスキップ追加

フォーラムに上手くレス出来なかったので、こちらに記載。

元ネタはこちらです。
FANUCロボドリル CAMポスト編集 オプショナルブロックスキップ - Autodesk Community

ポスト処理時のダイアログの右下に表示される部分に "coolantskip" と言う項目を
追加しました。
f:id:kandennti:20190409004615p:plain

切り替えることで、クーラントのMコード前にオプショナルブロックスキップを
はい : 入れる(左側)
いいえ:入れない(右側)
となります。
f:id:kandennti:20190409005005p:plain

"M08(オイル)" に限らず対応しているクーラントのMコードの前に入ります。
但しどちらに設定しても "M09(キャンセル)" の前にはオプショナルブロックスキップは
入りません。


・・・ここには肝心のポストコンフィグは添付出来ない。

追記です。
ポストコンフィグの修正箇所(記憶)です。

先頭付近のこの辺に追記。
f:id:kandennti:20190409122857p:plain
これで最初の画像のオプションが表示されるようになるはずです。

上記プロパティを利用して判断し、終わりの方をこんな感じで
書き換えています。
f:id:kandennti:20190409123035p:plain

3DEXPERIENCEソーシャル・コラボレーション・サービス

これ、知らなかったです。
3DEXPERIENCEソーシャル・コラボレーション・サービス | カスタマー・トランスフォーメーション・プログラム - Dassault Systèmes®

CATIA V5を年間保守契約してれば、無料で利用可能だそうです。
・・・情報が不足しすぎて、何が出来るのかわかってません。

コラボツールなので、閲覧とコメント・マークアップは可能っぽいですね。
Drawもいけるんじゃないかな? と思ってます。
(実際に利用された方いらっしゃいますか?)

一番のハードルは "クラウド" と言う部分かと思うのですが、
Fusion360を利用した感じでは、スピード的に問題は感じた事は無いですし、
落ちても直前で復帰してくれるので、CATIAやSpace-eのオートバックアップ
より遥かに頼りがいあります。 が、恐らくクラウドNGの企業が
多いはず。

それ程遠くない将来、CADに関してはクラウドが主流になると思うんですけどね。

社内育成で趣味の延長程度のシステムエンジニアが構築したサーバー(恐らく
有効期限10年未満)と、そちらのプロが構築・運営・メンテしているサーバー
(数年毎に最新?)の信頼性を秤に掛けるまでも無いと思うんですが。

関数名

最近は忙しすぎて、ブログのネタになるような事をしてません。

こちらをチラッと読みました。

VBA 特定日付が、第何週目の何曜日なのかを求める関数 - t-hom’s diary

結構関数名に悩みます。リファクタリングすることで変数名の
ボキャブラリ不足を回避しているつもりですが、その反動で
関数名に悩みます。
(特にVBAは他言語に比べ、途中での関数名変更は敷居が高い)

で、こちらを偶に利用しています。
codic - プログラマーのためのネーミング辞書
それっぽい感じで出てくれるので。


・・・「翔んで埼玉」見ていない。家族で僕だけ。
僕は何時、翔べるのだろうか?

背景図を変更したい

Drawの背景図をマクロで用紙サイズ毎に変更したいのです。
「背景図を挿入」が使えるとありがたいのですが、出来なさそうです。
f:id:kandennti:20190312193007p:plain

昔、何かスプリクトで変更する動画を見た覚えが有るのですが、
これだったかな?
CATIA V5 Macro to insert frame and title block - YouTube
当時「すごいなぁ」と思いましたよ。

確か、この辺かな? Helpを見たのですが
Creating a Frame and a Title Block
ガッツリマクロかよ! って思ってそのまま流してしまいました。

結局、雛形的なDrawファイルからイロイロとコピペして、それなりに
値を修正するしかないのかな?
近い将来、必要になる気がしています。

始点の無い、片追い寸法

”片追い寸法” は正式な名称じゃないと思いますが、他の表現方法がわかりません。
こちらでは ”片矢印寸法” と表記(コマンド?)されていました。
片矢印寸法(dexdsid)

要はこんな感じの寸法です。
f:id:kandennti:20190312163850p:plain
始点がクリッピングされているような状態のものです。


まず累進寸法を作成。
f:id:kandennti:20190312163958p:plain

プロパティを開いて「寸法線」タブの「表現」を標準以外にする。
f:id:kandennti:20190312164019p:plain

寸法をアクティブにし黄色い部分を「情けないなぁ」と感じながら
チマチマ動かし、寸法線と寸法値のアンダーラインが重なる様にする。
f:id:kandennti:20190312164032p:plain

後はクリッピングで始点側を削除する。
f:id:kandennti:20190312164049p:plain


標準を変更すれば始点側の「0」の文字を消せるのですが、
それはちょっと許されないので、困っていました。
(標準では0が消えないんです・・・)

サポートさんその節はありがとうございます。
その際は解決には至りませんでしたが・・・。

本来の目的じゃない所に時間がかかるのは、どうかと思う。

指定ビュー内の2Dコンポーネントを削除する

「ビュー内の2Dコンポーネントを削除する方法」について御質問頂きました。

2Dコンポーネントについては、DrawingView内のComponentsプロパティの
コレクションが所有した状態になっています。

'vba 指定ビュー内の2Dコンポーネントを削除する
Option Explicit

Sub CATMain()

    Dim dDoc As DrawingDocument
    Set dDoc = CATIA.ActiveDocument
    
    'ビュー選択
    Dim msg As String
    msg = "2Dコンポーネントを削除するビューを選択してください / ESC-キャンセル"
    
    Dim sel 'As selection
    Set sel = dDoc.selection
    
    Dim status As String
    sel.Clear
    status = sel.SelectElement2(Array("DrawingView"), msg, False)
    If Not status = "Normal" Then Exit Sub
    
    Dim vi As DrawingView
    Set vi = sel.Item2(1).Value
    sel.Clear

    '2Dコンポーネント数確認
    If vi.Components.Count < 1 Then
        msg = vi.Name & " には、2Dコンポーネントが有りません"
        MsgBox msg
        Exit Sub
    End If
    
    '確認
    msg = vi.Name & " には、" & vi.Components.Count & _
        "個の2Dコンポーネントが有ります。" & vbCrLf & _
        "全て削除しますか?"
    
    If MsgBox(msg, vbQuestion + vbYesNo) = vbNo Then
        Exit Sub
    End If
    
    '2Dコンポーネント削除
    
    CATIA.HSOSynchronized = False
    
    Dim comp As DrawingComponent
    For Each comp In vi.Components
        sel.Add comp
    Next
    sel.Delete
    
    CATIA.HSOSynchronized = True
    
    '終わり
    MsgBox "done"
End Sub

同様に
テキスト : Texts
寸法 : Dimensions
等も検索を使用せずに同様の処理が可能です。