【Inventor】標題欄の質量を有効桁数3桁で自動表記する(iLogic・単位g/kg自動切替)

Autodesk InventorのiLogicによる質量表示自動化。小数点以下の長い数値を有効桁数3桁に丸め、パーツの重さに応じて単位をg(グラム)とkg(キログラム)で自動選択して表記するBefore/Afterの比較イラスト 設計実務の自動化

解決したい課題(背景)

  • 質量の桁数がバラバラで標題欄が見にくい。
  • 小さい部品(g)と重いアセンブリ(kg)が混在し、手動修正はミスの元。
  • 「気合の検図」を減らし、設計を論理的に自動化したい。

「設定で変えられる」という言葉に潜む、設計の停滞

会社の規定で「質量の有効桁数は3桁」と決まっています。
しかし、私たちが扱う部品は100kgを超える大物から、わずか0.01gの精密部品まで多岐にわたります。

ある人が聞きました。

「テンプレートのデフォルトだと質量が××.××××になりますが、どうしたら良いのでしょう?」

そして会議でリーダーが自慢げにこう言いました。

「標題欄のパラメータの精度設定をその都度書き換えれば、3桁で表示できるよ!ホラッ」

たしかにその通りです。
でも、私はあることがとても気になりました。

「毎回、標題欄のために手作業で設定をいじるのは、設計の本質だろうか?」

「似ても似つかない過去図面を流用して、設定を引き継ぐような『綱渡り』をいつまで続けるのか?」

毎回数クリックの手間をかける「内職」を、設計者に強いてはいけない。
100kgでも0.01gでも、図面を開いた瞬間に「正しいルール(3桁)」で「読みやすい単位(g/kg)」に整っている。 この「当たり前の基準」をシステムとして保証することこそが、本当の設計DXだと考えたのです。

iLogicコード(コピペエリア)

単位を自動で切り替え、常に有効桁数3桁で表示するためのiLogicコードを作成しました。

  • 「g」:質量 < 1kg(未満)
  • 「kg」:質量 >= 1kg(以上)

このコードは、数値の大きさに応じて小数点の位置を調整し、常に「3桁の数字+単位」という文字列を生成します。

質量自動切替コード

' ==========================================================
' 【iLogic】質量表示の有効桁数3桁化 & 単位(g/kg)自動切替
' ==========================================================
' このルールは、モデルの質量を読み取り、
' 「有効桁数3桁」に整えた文字列をカスタムプロパティに書き出します。
' ----------------------------------------------------------

' 1. モデルから現在の質量を取得(Inventor標準はkg単位)
Dim m As Double = iProperties.Mass
Dim displayMass As String = ""

' 質量が0の場合は処理をスキップまたは0を表示
If m <= 0 Then
    displayMass = "0 g"
Else
    ' --- 単位の判定と換算 ---
    Dim targetValue As Double
    Dim unitStr As String
    
    If m < 1 Then
        ' 1kg未満ならグラム(g)に換算
        targetValue = m * 1000
        unitStr = " g"
    Else
        ' 1kg以上ならキログラム(kg)のまま
        targetValue = m
        unitStr = " kg"
    End If

    ' --- 有効桁数3桁への丸め処理 ---
    ' 数値の桁数(ログ)を取得して、どの位置で丸めるかを計算
    Dim digits As Double = Math.Floor(Math.Log10(Math.Abs(targetValue)))
    Dim scale As Double = Math.Pow(10, digits - 2)
    Dim roundedValue As Double = Math.Round(targetValue / scale) * scale
    
    ' --- 文字列の整形 ---
    ' 「G3」書式を使うことで、常に有効桁数3桁で表示
    displayMass = roundedValue.ToString("G3") & unitStr
End If

' 2. カスタムプロパティ「DisplayMass」に書き込み
' ※図面枠(標題欄)では、この「DisplayMass」という名前を参照してください。
iProperties.Value("Custom", "DisplayMass") = displayMass

' 3. 図面へ即座に反映させるための更新コマンド
InventorVb.DocumentUpdate()

このコードによる表示例

  • 0.001234 kg の場合 → 「1.23 g
  • 0.05678 kg の場合 → 「56.8 g
  • 1.2345 kg の場合 → 「1.23 kg
  • 12.345 kg の場合 → 「12.3 kg
  • 123.45 kg の場合 → 「123 kg
  • 1234.5 kg の場合 → 「1230 kg

「初心者向け補足」のポイント

どこに貼ればいいの?

  • Inventorの「iLogicブラウザ」を開き、右クリックで「ルールを追加」を選択。
  • 適当な名前(例:質量自動計算)をつけて、上のコードを全部消して貼り付けるだけ!

図面(標題欄)での設定方法は?

  • 図面テンプレートの「標題欄」のテキスト編集画面で、以下の設定にする。
    • タイプ:カスタムプロパティ – モデル
    • プロパティ:DisplayMass(手入力して「追加」ボタンを押す)

自動で動かすには?

  • 「管理」タブ > 「イベントトリガー」 を開く。
  • 「ドキュメントの保存前」 にこのルールを指定する。
  • これで、「保存」を押すたびに自動で質量が最新になります!

逆引きのカスタマイズ解説

単位の間にスペースを入れたくない:unitStr = " g" のスペースを消せばOK
有効桁数を4桁にしたい:digits - 2digits - 3 にすれば4桁になる

イベントトリガー: 「管理」タブ > 「イベントトリガー」から、「保存前」「モデルの状態変化時」にこのルールが実行されるように設定してください。
これにより、設計変更時に標題欄の数値が自動で更新されます。

図面テンプレート: 図面(idw/dwg)の標題欄で、テキストの参照先を「モデルのカスタムプロパティ」から DisplayMass に設定しておけば、すべての図面でこの「3桁表示」が適用されます。

手動での単位換算や桁数の調整を自動化することで、計算ミスや転記ミスといった「ヒューマンエラー」を構造的に排除できるようになります。ぜひお試しください。

ページ番号表示コード

手順

  1. 図面のカスタムプロパティに PageText という項目を作ります。
  2. 図面側のiLogicルールに以下のコードを記述し、イベントトリガーの「シート変更時」や「保存前」に設定します。
  3. 標題欄のテキストに、このカスタムプロパティ <PageText> を配置します
' 全シート数を確認
Dim totalSheets As Integer = ThisDoc.Document.Sheets.Count
Dim currentSheet As Integer = 0

' 現在のシート番号を取得
For i As Integer = 1 To totalSheets
    If ThisDoc.Document.Sheets.Item(i).Name = ActiveSheet.Sheet.Name Then
        currentSheet = i
        Exit For
    End If
Next

' 1枚だけの時は空文字、複数枚の時は「1/2」などの形式にする
If totalSheets > 1 Then
    iProperties.Value("Custom", "PageText") = currentSheet & " / " & totalSheets
Else
    iProperties.Value("Custom", "PageText") = "" ' 1枚のみの場合は何も表示しない
End If
項目修正前 (Before)修正後 (After)
表示精度1.234567kg (バラバラ)1.23kg (有効桁3桁)
単位kg固定 (0.001kg)g/kg 自動切替 (1.0g)
操作手動でプロパティ変更iLogicで完全自動

「条件によって表示・非表示を切り替える賢い標題欄」を1つ作っておけば、図面枚数が嵩むことが多いものでもこのテンプレートを使えばミスは起きないと言うことになります。

実装のステップ

以下の手順を箇条書きにしておきます。

  1. 外部ルールの保存: 共有サーバのパス(例:S:\...)をメモ。
  2. イベントトリガーの設定: 「保存前」に設定することを強調。
  3. 図面枠(標題欄)の編集: カスタムプロパティ DisplayMassPageText をテキストボックスにリンクさせる手順。

手順:

  • iLogicブラウザの「外部ルール」タブを右クリックし、「外部ルールディレクトリを構成」を選択。
    共有フォルダ(例:S:\Design_Standard\iLogic\)を登録します。
    そこに作成したコードを保存します(例:Mass_AutoUnit.vb)。
    メリット: * 管理者がコードを1箇所書き換えるだけで、全員分が同時にアップデートされます。
    各個人のPCに設定をコピーする必要がありません。
  • 2. 「イベントトリガー」をテンプレートに仕込む
    「保存前」に外部ルールを実行する設定を、**パーツ(.ipt)、アセンブリ(.iam)、図面(.idw)の「テンプレートファイル」**自体に持たせます。
    設定方法:
    テンプレートファイル(新規作成時に開く元ファイル)を開きます。
    「イベントトリガー」を開き、「ドキュメントの保存前」を選択。
    「外部ルール」の中から、共有フォルダに置いた Mass_AutoUnit を指定します。
    結果:
    メンバーが「新規作成」で設計を始める。
    保存するたびに、裏で自動的に共有フォルダのコードが読み込まれ、質量やページ番号が更新される。
    メンバーはiLogicの存在すら意識せず、正しく管理された図面が出来上がる。

システム部門がプロジェクトファイル(.ipj)を管理していて、個人の裁量で編集できないという状況は、大企業やセキュリティの厳しい現場では「あるある」ですね。

プロジェクトファイルが触れない場合、「ユーザー単位の設定またはテンプレートへの埋め込み」で対応するのが現実的です。
以下の3つのステップで進めるのがスムーズです。


外部ルールのパスを通す(ユーザー設定)

プロジェクトファイルで指定できない場合は、個々のPCのInventor設定で「外部ルールの参照先」を追加します。これならシステム担当の手を煩わせることなく、各自で設定可能です。

  • 手順:
    1. ツール > オプション > iLogic 設定 を開く。
    2. 「外部ルールディレクトリ」の「+」ボタンを押し、共有フォルダ(例:S:\設計標準\iLogic\)を追加する。
  • メリット: 一度設定すれば、どのプロジェクトファイルを開いていても共通のルールが使えます。

テンプレートに「ルール実行」を仕込む

プロジェクトファイルが触れなくても、「図面テンプレート(.idw)」や「パーツテンプレート(.ipt)」**は触れるはずです。

  • イベントトリガーの活用:あらかじめ共有フォルダの外部ルールを呼び出す設定をしたテンプレートを配布します。
  • 配布方法:システムが管理している公式テンプレートフォルダとは別に、「DesignDX用テンプレート」としてフォルダを共有し、そこから新規作成してもらうように運用します。

将来の自分への「一言」

年数回のミスを『たまにあること』と笑うか、『仕組みの欠陥』と捉えるか。
その意識の差が、設計現場をDX(変革)できるかどうかの境界線である。

「計算や転記といった『人間がやらなくていい作業』をロジックに任せることで、エンジニアは本来の『創造的な設計』に集中できる。

コメント

タイトルとURLをコピーしました