Hallo Forum,
ich arbeite gerade an einem Makro, dass die Toleranzwerte (Passungen) der Maße ausliest und in ein CustomTable schreibt (Passmasstabelle). Das funktioniert auch soweit ganz gut. Nachdem die Tabelle erstellt ist, möchte ich die Einträge nach der ersten Spalte Maß sortieren lassen. Die Sort Methode habe ich zwar für PartsList gefunden aber nicht für CustomTables. Nachdem die Tabelle erstellt ist, würde ich noch gerne die Maße auf Grenzwerte/Passungen - Stapel setzten, damit hier nur die Passungen angezeigt werden (z.B. H7). Die Werte stehen ja in der Tabelle. Habt Ihr eine Idee, wie man die Sortierung der Tabelle und das setzten der Bemaßung auf Stapel bewerkstelligen kann? Ach ist für Inventor 11, daher keine FitsList Nutzung möglich!
Hier das bisherige Produkt:
oInventorApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application")
'Zuweisung des aktuell offenen Dokumentes
oDoc = oInventorApp.ActiveDocument
If oDoc Is Nothing Then
MsgBox("Keine Inventorzeichnung geöffnet, bitte öffnen Sie eine idw!", MsgBoxStyle.Exclamation)
Exit Sub
End If
If oDoc.DocumentType <> Inventor.DocumentTypeEnum.kDrawingDocumentObject Then
MsgBox("Aktives Dokument ist keine Inventorzeichnung, bitte öffnen Sie eine idw!", MsgBoxStyle.Exclamation)
Exit Sub
End If
oSheet = oDoc.ActiveSheet
i = 1
oTG = oInventorApp.TransientGeometry
Select Case oDoc.ActiveSheet.Size
Case Inventor.DrawingSheetSizeEnum.kA4DrawingSheetSize
opointx = 1.8
opointy = 28.575
Case Inventor.DrawingSheetSizeEnum.kA3DrawingSheetSize
opointx = 1.75
opointy = 28.3
Case Inventor.DrawingSheetSizeEnum.kA2DrawingSheetSize
opointx = 1.0
opointy = 41.0
Case Inventor.DrawingSheetSizeEnum.kA1DrawingSheetSize
opointx = 1.0
opointy = 58.4
Case Inventor.DrawingSheetSizeEnum.kA0DrawingSheetSize
opointx = 1.0
opointy = 83.1
End Select
oPoint = oTG.CreatePoint2d(opointx, opointy)
Title = "Passmaßtabelle"
Ueberschriften(0) = "Maß"
Ueberschriften(1) = "Passung"
Ueberschriften(2) = "min."
Ueberschriften(3) = "max."
For Each Me.oCustomTable In oSheet.CustomTables
thisTitle = oCustomTable.Title
If thisTitle = Title Then Exit For
Next
If oCustomTable Is Nothing = True Then
oCustomTable = oSheet.CustomTables.Add(Title, oPoint, 4, 1, Ueberschriften)
End If
For Each Me.oDrawingDim In oSheet.DrawingDimensions
Max = oDrawingDim.Tolerance.Upper * 10
Min = oDrawingDim.Tolerance.Lower * 10
TolH = oDrawingDim.Tolerance.HoleTolerance
TolS = oDrawingDim.Tolerance.ShaftTolerance
Value = System.Math.Round(oDrawingDim.ModelValue * 10, 2)
Rows = oCustomTable.Rows.Count
If Not TolH = "" Then
If i > Rows Then oCustomTable.Rows.Add()
oCustomTable.Rows(i).Item(1).Value = Value
oCustomTable.Rows(i).Item(2).Value = TolH
oCustomTable.Rows(i).Item(3).Value = Value + Min
oCustomTable.Rows(i).Item(4).Value = Value + Max
i = i + 1
End If
If Not TolS = "" Then
If i > Rows Then oCustomTable.Rows.Add()
oCustomTable.Rows(i).Item(1).Value = Value
oCustomTable.Rows(i).Item(2).Value = TolS
oCustomTable.Rows(i).Item(3).Value = Value + Min
oCustomTable.Rows(i).Item(4).Value = Value + Max
i = i + 1
End If
Next
'Aufräumen und Speicher freimachen, damit Inventor keine Fehlermeldung rausgibt
oDoc = Nothing
oInventorApp = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
Close()
End Sub
End Class
Danke,
Sebastian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP