Inventorの部屋

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

iLogic - 三面図一括配置

三面図一括配置

複数ファイルの三面図を一括配置します。

  • 1.複数の設計ファイルで同じ自動化ルールを実行できるように外部ルールで作成します。
    iLogicブラウザの外部ルールで追加したフォルダを右クリックして[新しい外部ルールを作成]をクリック。
    ilogic - 三面図一括配置
  • 2.任意の名前を入力して[保存]をクリック。
    ilogic - 三面図一括配置
  • 3.下記コードを入力して[保存]をクリック。
    
    Sub Main()
        Try
            If ThisApplication.ActiveDocumentType <> DocumentTypeEnum.kDrawingDocumentObject Then Exit Sub
            Dim oDrawingDoc As DrawingDocument = ThisApplication.ActiveDocument
            Dim selectedFiles As Collection = SelectMultipleFiles()
            If selectedFiles.Count = 0 Then Exit Sub
            EnsureSufficientSheets(oDrawingDoc, selectedFiles.Count)
    
            Dim centerX As Double = 21.0
            Dim centerY As Double = 14.85
    
            For i As Integer = 0 To selectedFiles.Count - 1
                Try
                    Dim filePath As String = selectedFiles(i + 1)
                    Dim targetSheet As Sheet = oDrawingDoc.Sheets(i + 1)
                    targetSheet.Name = System.IO.Path.GetFileNameWithoutExtension(filePath)
                    CreateOrthographicViewsOnSheet(oDrawingDoc, targetSheet, filePath, centerX, centerY)
                Catch ex As Exception
                    Continue For
                End Try
            Next
    
            oDrawingDoc.Sheets(1).Activate()
        Catch ex As Exception
        End Try
    End Sub
    
    Function SelectMultipleFiles() As Collection
        Dim selectedFiles As New Collection()
        Try
            Dim openFileDialog As New System.Windows.Forms.OpenFileDialog()
            With openFileDialog
                .Title = "3Dファイル選択"
                .Filter = "Inventor Parts (*.ipt)|*.ipt|Inventor Assemblies (*.iam)|*.iam|All Files (*.*)|*.*"
                .Multiselect = True
                .InitialDirectory = System.IO.Path.GetDirectoryName(ThisDoc.Document.FullFileName)
            End With
            If openFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                For Each fileName As String In openFileDialog.FileNames
                    selectedFiles.Add(fileName)
                Next
            End If
        Catch ex As Exception
        End Try
        Return selectedFiles
    End Function
    
    Sub EnsureSufficientSheets(drawingDoc As DrawingDocument, requiredSheets As Integer)
        Try
            Dim currentSheetCount As Integer = drawingDoc.Sheets.Count
            If currentSheetCount < requiredSheets Then
                For i As Integer = 1 To (requiredSheets - currentSheetCount)
                    Dim newSheet As Sheet = drawingDoc.Sheets.Add()
                    newSheet.Name = $"Sheet{currentSheetCount + i}"
                Next
            End If
        Catch ex As Exception
        End Try
    End Sub
    
    Sub CreateOrthographicViewsOnSheet(drawingDoc As DrawingDocument, targetSheet As Sheet, filePath As String, centerX As Double, centerY As Double)
        Try
            Dim sourceDoc As Document = ThisApplication.Documents.Open(filePath, False)
            Dim viewSpacing As Double = 8.0
    
            Dim frontViewPos As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(centerX, centerY)
            Dim frontView As DrawingView = targetSheet.DrawingViews.AddBaseView(
                sourceDoc,
                frontViewPos,
                1,
                ViewOrientationTypeEnum.kFrontViewOrientation,
                DrawingViewStyleEnum.kHiddenLineDrawingViewStyle)
            frontView.Name = "正面図"
    
            Dim topViewPos As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(centerX, centerY + viewSpacing)
            Dim topView As DrawingView = targetSheet.DrawingViews.AddProjectedView(
                frontView,
                topViewPos,
                DrawingViewStyleEnum.kHiddenLineDrawingViewStyle)
            topView.Name = "平面図"
    
            Dim rightViewPos As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(centerX + viewSpacing, centerY)
            Dim rightView As DrawingView = targetSheet.DrawingViews.AddProjectedView(
                frontView,
                rightViewPos,
                DrawingViewStyleEnum.kHiddenLineDrawingViewStyle)
            rightView.Name = "右側面図"
    
            AddTitleText(targetSheet, System.IO.Path.GetFileNameWithoutExtension(filePath), centerX, centerY - 10.0)
            sourceDoc.Close(True)
            ThisApplication.ActiveView.Fit()
        Catch ex As Exception
        End Try
    End Sub
    
    Sub AddTitleText(targetSheet As Sheet, fileName As String, centerX As Double, titleY As Double)
        Try
            Dim titlePos As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(centerX, titleY)
            Dim titleText As Inventor.TextBox = targetSheet.DrawingTexts.AddTextBox(titlePos, fileName)
            titleText.HorizontalJustification = HorizontalTextAlignmentEnum.kAlignTextCenter
        Catch ex As Exception
        End Try
    End Sub
    

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

  • 4. 配置したいファイルの数だけシートを作成しておく。(シートを作成しない場合、図面枠や表題欄が何もないシートが自動で作成されます)
    ilogic - 三面図一括配置
    作成したルールを右クリックして[ルールを実行]をクリック。
    ilogic - 三面図一括配置
    配置したい図面フォルダかファイルを複数選択して[開く]をクリックすると自動で配置されます。
    ilogic - 三面図一括配置
    三面図の位置、用紙サイズ、尺度等は個々に調整が必要です。
3D CAD用パソコン比較