Met deze iLogic regel kan je in een tekening een nieuwe sheet maken per model state in je basis model.
Om te starten heb je 1 sheet met een base view nodig. Annotaties zoals afmetingen en teksten worden meegenomen en up-to-date gezet. Iedere nieuwe sheet krijgt de naam van de Model State. De [Primary] model state wordt overgeslagen.
Hier zie je de iLogic regel in actie:
Dit is de volledige code:
Sub Main ' iLogic Rule: Duplicate Sheets for Model States ' This rule duplicates an existing sheet for each model state in the referenced part/assembly, ' updates the base view to match the corresponding model state, and renames the sheet. ' Get the active document (assumes it is a .idw file) Dim oDrawingDoc As DrawingDocument = ThisApplication.ActiveDocument ' Get the first sheet (this will serve as the template for duplication) Dim oTemplateSheet As Sheet = oDrawingDoc.Sheets.Item(1) ' Get the referenced model from the base view on the template sheet Dim oBaseView As DrawingView = oTemplateSheet.DrawingViews.Item(1) Dim oReferencedModel As Document = oBaseView.ReferencedDocumentDescriptor.ReferencedDocument ' Get the model states from the referenced model Dim oModelStates As ModelStates = oReferencedModel.ComponentDefinition.ModelStates ' Ensure the model states collection is not empty If oModelStates.Count = 0 Then MessageBox.Show("No model states found in the referenced model.", "Error") Return End If ' Loop through the model states and create a sheet for each ' start count at 2 to skip [Primary] model state For i As Integer = 2 To oModelStates.Count Dim oModelState As ModelState = oModelStates.Item(i) ' Create a new sheet by duplicating the template sheet, reference the model and change the name Dim oNewSheet As Sheet = CopySheet(oTemplateSheet) oNewSheet.Name = oModelState.Name ' Update the base view on the new sheet to reference the corresponding model state Dim oNewBaseView As DrawingView = oNewSheet.DrawingViews.Item(1) oNewBaseView.SetActiveModelState(oModelState.Name) Next MessageBox.Show("All new sheets have been created.", "Done") End Sub Function CopySheet(oSheet As Inventor.Sheet) As Inventor.Sheet If oSheet Is Nothing Then Return Nothing Dim oDDoc As DrawingDocument = oSheet.Parent Dim oInvApp As Inventor.Application = oSheet.Application If oDDoc.Views.Count = 0 OrElse oDDoc IsNot oInvApp.ActiveDocument Then Try 'it must be the 'active' document (visibly showing on your screen) oDDoc = oInvApp.Documents.Open(oDDoc.FullDocumentName, True) oDDoc.Activate() Catch : End Try End If Dim oCmdMgr As CommandManager = oInvApp.CommandManager Dim oCDs As ControlDefinitions = oCmdMgr.ControlDefinitions oCmdMgr.DoSelect(oSheet) oCDs.Item("AppCopyCmd").Execute() oCmdMgr.DoUnSelect(oSheet) oCDs.Item("AppPasteCmd").Execute() Dim oNewSheet1 As Inventor.Sheet = oDDoc.Sheets.Item(oDDoc.Sheets.Count) Return oNewSheet1 End Function
Veel plezier!
Klik hier om te zien hoe je iLogic rules kan inladen en gebruiken in Inventor.
Controleer onze opleidingskalender voor meer informatie over Inventor.