Inventorの部屋

iLogicによる設計の自動化などで作業効率化を図ります。

iLogic - 選択した寸法をセンター合わせ

選択した寸法をセンター合わせ

図面変更なのでずれた寸法をセンターに合わせます。

  • 1.複数の設計ファイルで同じ自動化ルールを実行できるように外部ルールで作成します。
    iLogicブラウザの外部ルールで追加したフォルダを右クリックして[新しい外部ルールを作成]をクリック。
    ilogic - 風船にコメントをつける
  • 2.任意の名前を入力して[保存]をクリック。
    ilogic - 風船にコメントをつける
  • 3.下記コードを入力して[保存]をクリック。
    
    Imports Autodesk.Inventor
    Imports Autodesk.Inventor
    
    Imports Autodesk.Inventor
    
    Imports Autodesk.Inventor
    
    ' 改良版:選択した直線寸法をセンターにする(高さを維持 - X/Y両対応)
    Sub Main()
        Try
            ' アクティブドキュメントを取得
            Dim oDoc As DrawingDocument = ThisApplication.ActiveDocument
            
            ' 選択セットを取得
            Dim oSelSet As SelectSet = oDoc.SelectSet
            
            ' 処理した寸法の数をカウント
            Dim iCount As Integer = 0
            
            ' 選択されているオブジェクトを処理
            For i = 1 To oSelSet.Count
                If TypeOf oSelSet.Item(i) Is LinearGeneralDimension Then
                    CenterDimensionText(oSelSet.Item(i))
                    iCount += 1
                End If
            Next
            
            ' 選択されているものがない場合
            If iCount = 0 Then
                MessageBox.Show("直線寸法を選択してからコードを実行してください。", "情報")
            End If
            
        Catch ex As Exception
            MessageBox.Show("エラーが発生しました: " & ex.Message, "エラー")
        End Try
    End Sub
    
    ' 寸法テキストを中央に配置する関数(高さを維持 - X/Y両対応)
    Sub CenterDimensionText(ByVal oDim As LinearGeneralDimension)
        Try
            ' 現在のテキスト位置を保存
            Dim currentOrigin As Point2d = Nothing
            Dim hasCustomOrigin As Boolean = False
            
            ' 現在のテキスト位置を取得
            Try
                currentOrigin = oDim.Text.Origin
                If Not currentOrigin Is Nothing Then
                    hasCustomOrigin = True
                End If
            Catch
                hasCustomOrigin = False
            End Try
            
            ' 寸法線の中点を取得
            Dim oMidPoint As Point2d = oDim.DimensionLine.MidPoint
            
            ' 寸法の方向を判定(水平か垂直か)
            Dim oDirection As UnitVector2d = oDim.DimensionLine.Direction
            Dim isHorizontal As Boolean = Math.Abs(oDirection.X) > Math.Abs(oDirection.Y)
            
            ' 新しい位置を設定
            Dim newOrigin As Point2d
            
            If hasCustomOrigin Then
                If isHorizontal Then
                    ' 水平寸法: X座標は中点、Y座標(高さ)は維持
                    newOrigin = ThisApplication.TransientGeometry.CreatePoint2d(oMidPoint.X, currentOrigin.Y)
                Else
                    ' 垂直寸法: Y座標は中点、X座標(高さ)は維持
                    newOrigin = ThisApplication.TransientGeometry.CreatePoint2d(currentOrigin.X, oMidPoint.Y)
                End If
            Else
                ' カスタム位置がない場合は、寸法線の中点を使用
                newOrigin = oMidPoint
            End If
            
            ' 新しい位置を設定
            oDim.Text.Origin = newOrigin
            
        Catch ex As Exception
            Throw New Exception("寸法 " & oDim.Tag & " の処理に失敗: " & ex.Message)
        End Try
    End Sub
    
    


    作成した外部ルールをリボンやショートカットに登録しておくと便利です。

  • 4. 寸法を選択し、作成したルールを右クリックして[ルールを実行]すると寸法がセンターに配置されます。
    ilogic - 風船にコメントをつける
3D CAD用パソコン比較