Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Auf Ordner im Inventor Browser zugreifen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Auf Ordner im Inventor Browser zugreifen (1734 mal gelesen)
Didikalle
Mitglied
Konstrukteur


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

Beiträge: 91
Registriert: 07.10.2011

Ich nutze Inventor 2016 mit dem BS Win 10

erstellt am: 02. Apr. 2015 17:18    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


Abwicklung.JPG


Volumenkoerper.JPG

 
Hallo Zusammen
Wie erreiche ich im Inventorbrowser per VBA einen bestimmten Ordner. In meinem Fall wäre es z.B bei einem Blechteil den Ordner "Abwicklung" oder im Bautel den Ordner "Volumenkoerper 1". Ich habe zwar in der Programmierhilfe in INV einiges gefunden, komme aber nicht zu besagten Punkten.
Gruss Didi

------------------
Didi

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 02. Apr. 2015 22:00    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 Didikalle 10 Unities + Antwort hilfreich

Hallo

Im einzelnen Bauteil geht's relativ einfach, z.B.

Code:
Private Sub BrowserPane()

Dim oBrowserNode As BrowserNode
For Each oBrowserNode In ThisApplication.ActiveDocument.BrowserPanes.Item("Modell").TopNode.BrowserNodes
    If Right(oBrowserNode.FullPath, 13) = "Volumenkörper" Then
        'irgendwas
    ElseIf Right(oBrowserNode.FullPath, 10) = "Abwicklung" Then
        'irgendwas anderes
    End If
Next

End Sub


------------------
MfG
Ralf

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

Didikalle
Mitglied
Konstrukteur


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

Beiträge: 91
Registriert: 07.10.2011

Ich nutze Inventor 2016 mit dem BS Win 10

erstellt am: 03. Apr. 2015 10:44    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 Ralf,

herzlichen Dank. Das Makro klappt soweit gut. Einzig, ich muss bei dem Bauteil auf Volumenkörper 1, also eine Ebene tiefer (siehe Bild oben). Muss da die Zahl (13) geändert werden? und wenn ja, wie ist das mit den Zahlen gegliedert, wo bekommt man eine Übersicht?
Gruss Didi

------------------
Didi

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 05. Apr. 2015 15:53    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 Didikalle 10 Unities + Antwort hilfreich

Hallo

Nein, die Nummern schneiden nur den Namen des Browserknotens zu. In Wirklichtkeit heißt der Browserknoten "Volumenkörper" --> "Bauteil1:Volumenkörper". Wobei "Bauteil1" der Dateiname des Bauteils ist. Um auf die einzelnen Einträge des Knotens Volumenkörper zuzugreifen, kann man entweder direkt über den Namen gehen oder man in einer Schleife durch alle und fischt den passenden heraus. Das kommt darauf an, was du vor hast.


Code:
Private Sub BrowserPane()

Dim oBrowserNode As BrowserNode
Dim oSubNode As BrowserNode
For Each oBrowserNode In ThisApplication.ActiveDocument.BrowserPanes.Item("Modell").TopNode.BrowserNodes
    If Right(oBrowserNode.FullPath, 13) = "Volumenkörper" Then
        For Each oSubNode In oBrowserNode.BrowserNodes
            'Hier könnte man z.B. prüfen, ob der Browserknoten "Volumenkörper1" heißt
            If Right(oSubNode.FullPath, 14) = "Volumenkörper1" Then
                '...
            End If
        Next
    ElseIf Right(oBrowserNode.FullPath, 10) = "Abwicklung" Then
        For Each oSubNode In oBrowserNode.BrowserNodes
            '...
        Next
    End If
Next

End Sub


------------------
MfG
Ralf

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

Didikalle
Mitglied
Konstrukteur


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

Beiträge: 91
Registriert: 07.10.2011

Ich nutze Inventor 2016 mit dem BS Win 10

erstellt am: 06. Apr. 2015 11: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

Hallo Ralf,

danke für die Antwort und das Makro.
Dieses Makro bzw.Code habe ich dem vorhergehenden Thread "Länge, Breite...." vorgeschaltet, so kann ich mit einem Makro Bauteil oder Blechabwicklung erkennen und die Abmessungen in die Iprops einfügen. Dabei ist es nötig "Volumen 1" anzusprechen, habe aber gemerkt dass auch auf "Modell" gehen klappt.
Ich habe mich über die Ostertage einmal damit beschäftigt und Dein Makro mit der RangeBox für mich angepasst. Anbei der komplette Code

Code:
Public Sub Flach()

    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
 
    Dim oDoc As PartDocument
    Set oDoc = oApp.ActiveDocument
 
    Dim oPane As BrowserPane
    Set oPane = oDoc.BrowserPanes("Modell")
 
    Call oPane.TopNode.DoSelect
 
    Dim oBrowserNode As BrowserNode
 
    For Each oBrowserNode In ThisApplication.ActiveDocument.BrowserPanes.Item("Modell").TopNode.BrowserNodes
   
    If Right(oBrowserNode.FullPath, 10) = "Abwicklung" Then
        oBrowserNode.DoSelect
  End If

Next

    Dim oCompDef As ComponentDefinition
    Set oCompDef = ThisApplication.ActiveDocument.ComponentDefinition
   
    If oDoc.SelectSet.Count = 0 Then
        MsgBox "Bitte vorher Baugruppe auswählen."

        ' Delete any graphics, if they exist.
        On Error Resume Next
        Dim oExistingGraphicsData As GraphicsDataSets
        Set oExistingGraphicsData = oDoc.GraphicsDataSetsCollection.Item("RangeBoxGraphics")
        If Err.Number = 0 Then
            On Error GoTo 0
            Dim oExistingGraphics As ClientGraphics
            Set oExistingGraphics = oCompDef.ClientGraphicsCollection.Item("RangeBoxGraphics")
            oExistingGraphics.Delete
            oExistingGraphicsData.Delete
            ThisApplication.ActiveView.Update
        End If

        Exit Sub
    End If

    ReDim aoRanges(1 To oDoc.SelectSet.Count) As Box
    Dim iRangeCount As Long
    Dim i As Long
    On Error Resume Next
    For i = 1 To oDoc.SelectSet.Count
      Dim oBox As Box
        Set oBox = oDoc.SelectSet.Item(i).RangeBox
        If Err Then
            Err.Clear
            ' Special case for B-Rep entities.
            If oDoc.SelectSet.Item(i).Type = kFaceObject Or _
              oDoc.SelectSet.Item(i).Type = kFaceProxyObject Or _
              oDoc.SelectSet.Item(i).Type = kEdgeObject Or _
              oDoc.SelectSet.Item(i).Type = kEdgeProxyObject Then
                ' Get the range from evaluator of the BRep object.
                Set oBox = oDoc.SelectSet.Item(i).Evaluator.RangeBox
                iRangeCount = iRangeCount + 1
                Set aoRanges(iRangeCount) = oBox
            End If
        Else
            iRangeCount = iRangeCount + 1
            Set aoRanges(iRangeCount) = oBox
        End If
    Next
    On Error GoTo 0

    If iRangeCount = 0 Then
        MsgBox "You must pick object(s) that support a 3D RangeBox property."
        Exit Sub
    End If

    ' Check to see if range box graphics information already exists.
    On Error Resume Next
    Dim oClientGraphics As ClientGraphics
    Dim oLineGraphics As LineGraphics
    Dim oBoxNode As GraphicsNode
    Dim oGraphicsData As GraphicsDataSets
    Set oGraphicsData = oDoc.GraphicsDataSetsCollection.Item("RangeBoxGraphics")
    If Err Then
        Err.Clear
        On Error GoTo 0

        ' Set a reference to the transient geometry object for user later.
        Dim oTransGeom As TransientGeometry
        Set oTransGeom = ThisApplication.TransientGeometry

        ' Create a graphics data set object. This object contains all of the
        ' information used to define the graphics.
        Dim oDataSets As GraphicsDataSets
        Set oDataSets = oDoc.GraphicsDataSetsCollection.Add("RangeBoxGraphics")

        ' Create a coordinate set.
        Dim oCoordSet As GraphicsCoordinateSet
        Set oCoordSet = oDataSets.CreateCoordinateSet(1)

        ' Create the client graphics for this compdef.
        Set oClientGraphics = oCompDef.ClientGraphicsCollection.Add("RangeBoxGraphics")

        ' Create a graphics node.
        Set oBoxNode = oClientGraphics.AddNode(1)
        oBoxNode.Selectable = False

        ' Create line graphics.
        Set oLineGraphics = oBoxNode.AddLineGraphics

        oLineGraphics.CoordinateSet = oCoordSet
    Else
        Set oCoordSet = oGraphicsData.ItemById(1)
        Set oBoxNode = oCompDef.ClientGraphicsCollection.Item("RangeBoxGraphics").ItemById(1)
    End If

    Dim dBoxLines() As Double
    ReDim dBoxLines(1 To 12 * 6 * iRangeCount) As Double
    For i = 0 To iRangeCount - 1
        Dim MinPoint(1 To 3) As Double
        Dim MaxPoint(1 To 3) As Double
        Call aoRanges(i + 1).GetBoxData(MinPoint, MaxPoint)

        ' Line 1
        dBoxLines(i * 72 + 1) = MinPoint(1)
        dBoxLines(i * 72 + 2) = MinPoint(2)
        dBoxLines(i * 72 + 3) = MinPoint(3)
        dBoxLines(i * 72 + 4) = MaxPoint(1)
        dBoxLines(i * 72 + 5) = MinPoint(2)
        dBoxLines(i * 72 + 6) = MinPoint(3)

        ' Line 2
        dBoxLines(i * 72 + 7) = MinPoint(1)
        dBoxLines(i * 72 + 8) = MinPoint(2)
        dBoxLines(i * 72 + 9) = MinPoint(3)
        dBoxLines(i * 72 + 10) = MinPoint(1)
        dBoxLines(i * 72 + 11) = MaxPoint(2)
        dBoxLines(i * 72 + 12) = MinPoint(3)

        ' Line 3
        dBoxLines(i * 72 + 13) = MinPoint(1)
        dBoxLines(i * 72 + 14) = MinPoint(2)
        dBoxLines(i * 72 + 15) = MinPoint(3)
        dBoxLines(i * 72 + 16) = MinPoint(1)
        dBoxLines(i * 72 + 17) = MinPoint(2)
        dBoxLines(i * 72 + 18) = MaxPoint(3)

        ' Line 4
        dBoxLines(i * 72 + 19) = MaxPoint(1)
        dBoxLines(i * 72 + 20) = MaxPoint(2)
        dBoxLines(i * 72 + 21) = MaxPoint(3)
        dBoxLines(i * 72 + 22) = MinPoint(1)
        dBoxLines(i * 72 + 23) = MaxPoint(2)
        dBoxLines(i * 72 + 24) = MaxPoint(3)

        ' Line 5
        dBoxLines(i * 72 + 25) = MaxPoint(1)
        dBoxLines(i * 72 + 26) = MaxPoint(2)
        dBoxLines(i * 72 + 27) = MaxPoint(3)
        dBoxLines(i * 72 + 28) = MaxPoint(1)
        dBoxLines(i * 72 + 29) = MinPoint(2)
        dBoxLines(i * 72 + 30) = MaxPoint(3)

        ' Line 6
        dBoxLines(i * 72 + 31) = MaxPoint(1)
        dBoxLines(i * 72 + 32) = MaxPoint(2)
        dBoxLines(i * 72 + 33) = MaxPoint(3)
        dBoxLines(i * 72 + 34) = MaxPoint(1)
        dBoxLines(i * 72 + 35) = MaxPoint(2)
        dBoxLines(i * 72 + 36) = MinPoint(3)

        ' Line 7
        dBoxLines(i * 72 + 37) = MinPoint(1)
        dBoxLines(i * 72 + 38) = MaxPoint(2)
        dBoxLines(i * 72 + 39) = MinPoint(3)
        dBoxLines(i * 72 + 40) = MaxPoint(1)
        dBoxLines(i * 72 + 41) = MaxPoint(2)
        dBoxLines(i * 72 + 42) = MinPoint(3)

        ' Line 8
        dBoxLines(i * 72 + 43) = MinPoint(1)
        dBoxLines(i * 72 + 44) = MaxPoint(2)
        dBoxLines(i * 72 + 45) = MinPoint(3)
        dBoxLines(i * 72 + 46) = MinPoint(1)
        dBoxLines(i * 72 + 47) = MaxPoint(2)
        dBoxLines(i * 72 + 48) = MaxPoint(3)

        ' Line 9
        dBoxLines(i * 72 + 49) = MaxPoint(1)
        dBoxLines(i * 72 + 50) = MinPoint(2)
        dBoxLines(i * 72 + 51) = MaxPoint(3)
        dBoxLines(i * 72 + 52) = MaxPoint(1)
        dBoxLines(i * 72 + 53) = MinPoint(2)
        dBoxLines(i * 72 + 54) = MinPoint(3)

        ' Line 10
        dBoxLines(i * 72 + 55) = MaxPoint(1)
        dBoxLines(i * 72 + 56) = MinPoint(2)
        dBoxLines(i * 72 + 57) = MaxPoint(3)
        dBoxLines(i * 72 + 58) = MinPoint(1)
        dBoxLines(i * 72 + 59) = MinPoint(2)
        dBoxLines(i * 72 + 60) = MaxPoint(3)

        ' Line 11
        dBoxLines(i * 72 + 61) = MinPoint(1)
        dBoxLines(i * 72 + 62) = MinPoint(2)
        dBoxLines(i * 72 + 63) = MaxPoint(3)
        dBoxLines(i * 72 + 64) = MinPoint(1)
        dBoxLines(i * 72 + 65) = MaxPoint(2)
        dBoxLines(i * 72 + 66) = MaxPoint(3)

        ' Line 12
        dBoxLines(i * 72 + 67) = MaxPoint(1)
        dBoxLines(i * 72 + 68) = MinPoint(2)
        dBoxLines(i * 72 + 69) = MinPoint(3)
        dBoxLines(i * 72 + 70) = MaxPoint(1)
        dBoxLines(i * 72 + 71) = MaxPoint(2)
        dBoxLines(i * 72 + 72) = MinPoint(3)
    Next

    ' Assign the points into the coordinate set.
    Call oCoordSet.PutCoordinates(dBoxLines)

    ' Update the display.
    ThisApplication.ActiveView.Update
     
' Create a string that defines an area using the current length unit.
    Dim oUOM As UnitsOfMeasure
    Set oUOM = ThisApplication.ActiveDocument.UnitsOfMeasure
 
  ' Get the enum value that defines the current default length units.
    Dim eLengthUnit As UnitsTypeEnum
    eLengthUnit = oUOM.LengthUnits

    ' Get the equivalent string of the enum value.
    Dim sLengthUnit As String
    sLengthUnit = " " & oUOM.GetStringFromType(eLengthUnit)
         
    'Dim sLänge As String
    'Dim sBreite As String
    'Dim sStärke As String
   
    Dim rLänge As String
    Dim rBreite As String
    Dim rStärke As String
   
'festlegen, dass Länge immer Lännge, Breite immer Breite und Stärke immer Stärke ist
   
    If (MaxPoint(1) - MinPoint(1)) < (MaxPoint(2) - MinPoint(2)) And (MaxPoint(1) - MinPoint(1)) > (MaxPoint(3) - MinPoint(3)) Then
    rLänge = Round((MaxPoint(2) - MinPoint(2)) * 10, 1)
    rBreite = Round((MaxPoint(1) - MinPoint(1)) * 10, 1)
    rStärke = Round((MaxPoint(3) - MinPoint(3)) * 10, 1)
   
    ElseIf (MaxPoint(1) - MinPoint(1)) < (MaxPoint(3) - MinPoint(3)) And (MaxPoint(1) - MinPoint(1)) > (MaxPoint(2) - MinPoint(2)) Then
    rLänge = Round((MaxPoint(2) - MinPoint(2)) * 10, 1)
    rBreite = Round((MaxPoint(3) - MinPoint(3)) * 10, 1)
    rStärke = Round((MaxPoint(1) - MinPoint(1)) * 10, 1)
   
    ElseIf (MaxPoint(3) - MinPoint(3)) < (MaxPoint(2) - MinPoint(2)) And (MaxPoint(3) - MinPoint(3)) > (MaxPoint(1) - MinPoint(1)) Then
    rLänge = Round((MaxPoint(3) - MinPoint(3)) * 10, 1)
    rBreite = Round((MaxPoint(1) - MinPoint(1)) * 10, 1)
    rStärke = Round((MaxPoint(2) - MinPoint(2)) * 10, 1)
   
    ElseIf (MaxPoint(3) - MinPoint(3)) < (MaxPoint(1) - MinPoint(1)) And (MaxPoint(3) - MinPoint(3)) > (MaxPoint(2) - MinPoint(2)) Then
    rLänge = Round((MaxPoint(1) - MinPoint(1)) * 10, 1)
    rBreite = Round((MaxPoint(3) - MinPoint(3)) * 10, 1)
    rStärke = Round((MaxPoint(2) - MinPoint(2)) * 10, 1)
   
    ElseIf (MaxPoint(2) - MinPoint(2)) < (MaxPoint(3) - MinPoint(3)) And (MaxPoint(2) - MinPoint(2)) > (MaxPoint(1) - MinPoint(1)) Then
    rLänge = Round((MaxPoint(3) - MinPoint(3)) * 10, 1)
    rBreite = Round((MaxPoint(2) - MinPoint(2)) * 10, 1)
    rStärke = Round((MaxPoint(1) - MinPoint(1)) * 10, 1)
   
    Else
    rLänge = Round((MaxPoint(1) - MinPoint(1)) * 10, 1)
    rBreite = Round((MaxPoint(2) - MinPoint(2)) * 10, 1)
    rStärke = Round((MaxPoint(3) - MinPoint(3)) * 10, 1)
    End If
         
    MsgBox "Länge: " & rLänge & sLengthUnit & Chr(13) & Chr(10) & "Breite: " & rBreite & sLengthUnit & Chr(13) & Chr(10) & "Stärke: " & rStärke & sLengthUnit
   
    Dim bLängeDa As Boolean
    Dim oProper As Property
    bLängeDa = False
    For Each oProper In oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}")  'Benutzerdefiniert
        If oProper.Name = "Länge" Then
            bLängeDa = True
            Exit For
        End If
    Next
    'Länge eintragen oder ändern
    If bLängeDa Then
        oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Länge").Value = rLänge
    Else
        oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Add rLänge, "Länge"
    End If
   
        'Breite vorhanden?
    Dim bBreiteDa As Boolean
    bBreiteDa = False
    For Each oProper In oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}")  'Benutzerdefiniert
        If oProper.Name = "Breite" Then
            bBreiteDa = True
            Exit For
        End If
    Next
    'Breite eintragen oder ändern
    If bBreiteDa Then
        oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Breite").Value = rBreite
    Else
        oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Add rBreite, "Breite"
    End If
   
    'Stärke vorhanden?
    Dim bStärkeDa As Boolean
    bStärkeDa = False
    For Each oProper In oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}")  'Benutzerdefiniert
        If oProper.Name = "Stärke" Then
            bStärkeDa = True
            Exit For
        End If
    Next
    'Höhe eintragen oder ändern
    If bStärkeDa Then
        oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Stärke").Value = rStärke
    Else
        oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Add rStärke, "Stärke"
    End If
   
    'Da die ClientGraphic nur temporär sein soll, wird sie nach Bestätigen
    'der Meldung wieder gelöscht.
    If oDoc.SelectSet.Count = 0 Then
   
    ' Delete any graphics, if they exist.
    On Error Resume Next
    Set oExistingGraphicsData = oDoc.GraphicsDataSetsCollection.Item("RangeBoxGraphics")
    If Err.Number = 0 Then
        On Error GoTo 0
        Set oExistingGraphics = oCompDef.ClientGraphicsCollection.Item("RangeBoxGraphics")
        oExistingGraphics.Delete
        oExistingGraphicsData.Delete
        ThisApplication.ActiveView.Update
    End If

    Exit Sub
    End If
   
End Sub



Du siehst, ich habe die Formatzuweisung geändert, so kommt bei glatten Zahlen kein Komma mit Null dahinter und bei Kommazahlen eine Stelle dahinter. Gleichfalls habe ich eine Abfrageroutine eingebaut, dass immer das größte Mass mit Länge belegt ist. Wenn es da eine elegantere Lösung gibt kannst Du mir diese zukommen lassen. Soll dieser Code auch in den anderen Thread hinterlegt werden?
Gruss Didi

------------------
Didi

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 07. Apr. 2015 00:06    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 Didikalle 10 Unities + Antwort hilfreich

Hallo

Schön wenn's funktioniert.
Eine Anmerkung zur RangeBox. Die RangeBox ist immer am Koordinatensystem ausgerichtet.
Daher:
1. Liegt die Abwicklung irgendwie schief, kommen falsche Abmessungen heraus. Der User muss vorher die Abwicklung korrekt ausrichten.
2. Wenn ein Bauteil in seinen drei Dimensionen nicht am Koordinatensystem ausgerichtet modelliert wurde, kommen falsche Ergebnisse heraus. Lässt sich das Bauteil nicht anders modellieren, hilft nur ein vom User eingefügtes (und korrekt ausgerichtetes) Benutzerkoordinatensystem (UCS). Dann das Bauteil in eine leere Baugruppe einfügen, UCS am Koordinatensystem der Baugruppe ausrichten und jetzt die RangeBox abfragen.

Achja, Autodesk garantiert nur das die RangeBox mindestens so groß wie der Volumenkörper ist. Davon das sie nicht deutlich größer sein kann ist keine Rede. Sichtbare Skizzen und Arbeitselemente haben wenn ich mich recht erinnere auch Einfluß auf die Größe.

------------------
MfG
Ralf

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

Didikalle
Mitglied
Konstrukteur


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

Beiträge: 91
Registriert: 07.10.2011

Ich nutze Inventor 2016 mit dem BS Win 10

erstellt am: 07. Apr. 2015 08:53    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 Ralf,
danke für die doch wichtigen Informationen. Grundsätzlich ist ja die gelernte Arbeitsweise die, alles korrekt auf das Koordinatensystem auszurichten. Aber wie Du schon sagst, kommen auch mal andere Situationen vor. Gibt es da dann eine Möglichkeit, das abzufragen und wenn diese Asymmetrie vorliegt, eine Fehlermeldung mit Abbruch auszugeben?
Gruss Didi.

------------------
Didi

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 07. Apr. 2015 14:04    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 Didikalle 10 Unities + Antwort hilfreich

Hallo

Meines Wissens gibt es keine fertige Möglichkeit.
Man könnte das Bauteil in eine Baugruppe einfügen.
Man fragt alle Flächen ab und ermittelt die größte. (Ich unterstelle mal, das Höhe immer die kleinste Dimension ist.)
Diese Fläche koplanar zu XY ausrichten.
Jetzt könnte man schonmal Z abfragen und mit der Höhe laut RangeBox vergleichen.
Das Bauteil in 1°-Schritten drehen und die Abmessung abfragen.
Überschreitet einer der X- bzw. Y-Werte die ermittelten Abmessungen, liegt der Verdacht nahe.
Das ganze dürfte ziemlich rechenintensiv werden.
Ich empfehle die Variante mit dem Benutzerkoordinatensystem zu verwenden.

Im Blechteil funktioniert diese Methode nicht, da eine Abwicklung nicht in die Baugruppe eingefügt werden kann.


------------------
MfG
Ralf

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

Didikalle
Mitglied
Konstrukteur


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

Beiträge: 91
Registriert: 07.10.2011

Ich nutze Inventor 2016 mit dem BS Win 10

erstellt am: 07. Apr. 2015 14:12    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 Ralf,

klinkt kompliziert, ist es auch. Ich werde mal mit dem Vorhandenen arbeiten und sehen wann überhaubt das Problem bei mir auftritt.
Erst einmal herzlichen Dank und bis Demnächst.
Gruss Didi

------------------
Didi

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)2023 CAD.de | Impressum | Datenschutz