Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  CustomTable sort und Toleranz Stapel

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   CustomTable sort und Toleranz Stapel (3718 mal gelesen)
cadsepp
Mitglied
Konstrukteur


Sehen Sie sich das Profil von cadsepp an!   Senden Sie eine Private Message an cadsepp  Schreiben Sie einen Gästebucheintrag für cadsepp

Beiträge: 40
Registriert: 19.04.2008

erstellt am: 14. Nov. 2010 19:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Passmasstabelle.jpg

 
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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 15. Nov. 2010 07:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadsepp 10 Unities + Antwort hilfreich

Hallo

Da die CustomTable.Sort Methode erst mit Inventor 2009 eingeführt wurde, bleibt für's Sortieren nur Handarbeit. Alle Zeilen in ein Array einlesen, das von VB sortieren lassen und mit der richtigen Sortierung die Tabelle erstellen.
Wenn ihr eine zentrale Stilbibliothek verwendet, stell dort den passenden Toleranztyp ein und laß deine Zeichnungen nur ihren Stil aktualisieren. Ansonsten findest du die Eigenschaft unter ThisApplication.ActiveDocument.StylesManager.DimensionStyles.Item(x).Tolerance.ToleranceType=kLimitsFitsStackedTolerance (glaub ich).

------------------
MfG
RK

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadsepp
Mitglied
Konstrukteur


Sehen Sie sich das Profil von cadsepp an!   Senden Sie eine Private Message an cadsepp  Schreiben Sie einen Gästebucheintrag für cadsepp

Beiträge: 40
Registriert: 19.04.2008

erstellt am: 15. Nov. 2010 13:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo rkauskh,

vielen Dank für Deine Antwort. Das mit dem Sortieren kriege ich wahrscheinlich hin. Allerdings klemmst es noch an dem umstellen der Werte. Prinzipiell möchte ich ja alle Werte die in Genauigkeit/ Toleranz die Option Grenzwerte/ Passungen - Toleranz haben auf Grenzwerte/ Passungen - Stapel setzen, da deren min und max Werte in die Tabelle ausgelesen wurden. Wenn ich nach dem Füllen der Tabelle folgendes ausführe, erhalte ich die Argument Exception "Falscher Parameter".

oDrawingDim.Tolerance.SetToFits(ToleranceTypeEnum.kLimitLinearTolerance, oDrawingDim.Tolerance.HoleTolerance, oDrawingDim.Tolerance.ShaftTolerance)


Wäre super wenn mir jemand helfen kann.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadsepp
Mitglied
Konstrukteur


Sehen Sie sich das Profil von cadsepp an!   Senden Sie eine Private Message an cadsepp  Schreiben Sie einen Gästebucheintrag für cadsepp

Beiträge: 40
Registriert: 19.04.2008

erstellt am: 15. Nov. 2010 18:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke nochmals an rkauskh,

habe es mittlerweile hinbekommen.

Code Snipet:

      If Not TolH = "" Then
                oDrawingDim.Tolerance.SetToFits(ToleranceTypeEnum.kLimitsFitsStackedTolerance, TolH, "")
                Tol = TolH
            ElseIf Not TolS = "" Then
                oDrawingDim.Tolerance.SetToFits(ToleranceTypeEnum.kLimitsFitsStackedTolerance, "", TolS)
                Tol = TolS
            Else

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz