Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Werte der OrientedMinimumRangeBox nach Größe sortieren

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:  Werte der OrientedMinimumRangeBox nach Größe sortieren (78 / mal gelesen)
Roland Schröder
Ehrenmitglied V.I.P. h.c.
Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen



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

Beiträge: 13372
Registriert: 02.04.2004

AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot
DellM4600 2,13GHz 2GB FxGo1400 1920x1200
am Dock Dell2711

erstellt am: 17. Jul. 2024 18:49    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

Moin!

Ich benutze ja oft und gern die OrientedMinimumRangeBox, nur erscheint mir die Reihenfolge der drei ermittlten Maße irgendwie zufällig zu sein. Ich würde die gern von groß nach klein sortiert bekommen, aber das ist nicht der Fall. Die drei Zahlen kommen zwar als oOBox.DirectionOne.Length, oOBox.DirectionTwo.Length und oOBox.DirectionThree.Length, aber im Gegensetz z. B. zu der in der Dynamik üblichen Indizierung der Trägheitsachsen ist hier nicht die erste die größte.

Da ich nicht annehmen, dass sich das leicht ändern lässt, muss ich sie im Code wohl selber sortieren. Daher meine Frage:

Wie kann ich drei beliebige vorliegende Zahlenwerte der Größe nach sortiert drei Ausgabevariablen zuordnen?

------------------
Roland  
www.Das-Entwicklungsbuero.de

It's not the hammer - it's the way you hit!

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

Windows 10 x64, AIP 2020-2025

erstellt am: 17. Jul. 2024 20:09    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 Roland Schröder 10 Unities + Antwort hilfreich

Moin

Stimmt, die Reihenfolge läßt sich nicht beeinflussen. Wie die Reihenfolge zustande kommt, hat sich mir auch noch nicht erschlossen.
Probier mal, es in ein Array einzulesen und dort zu sortieren. Etwa so:

Code:

Option Explicit

Private Sub sort()

Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.ActiveDocument

Dim oSB As SurfaceBody
Set oSB = oPartDoc.ComponentDefinition.SurfaceBodies(1)

Dim oArr(2) As Double

oArr(0) = oSB.OrientedMinimumRangeBox.DirectionOne.Length
oArr(1) = oSB.OrientedMinimumRangeBox.DirectionTwo.Length
oArr(2) = oSB.OrientedMinimumRangeBox.DirectionThree.Length

Dim i As Integer
Dim j As Integer
Dim dTemp As Double

For i = 0 To 2
    For j = i + 1 To 2
        If oArr(i) < oArr(j) Then
            dTemp = oArr(j)
            oArr(j) = oArr(i)
            oArr(i) = dTemp
        End If
    Next
   
Next

MsgBox ("LxBxH: " & oArr(0) & " x " & oArr(1) & " x " & oArr(2))

End Sub


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

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

Roland Schröder
Ehrenmitglied V.I.P. h.c.
Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen



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

Beiträge: 13372
Registriert: 02.04.2004

AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot
DellM4600 2,13GHz 2GB FxGo1400 1920x1200
am Dock Dell2711

erstellt am: 18. Jul. 2024 00:21    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

Prima, Danke, ist schon eingebaut und funktioniert super.

Aber wo wir grad dabei sind: Funktioniert die OrientedMinimumRangeBox eigentlich auch für Assemblies?

Wenn ich den Code, wie er jetzt ist, in einer iam aufrufe, gibt es Mecker bei "Set oPartDoc = oApp.ActiveDocument", was ich auch verstehe, denn ein Asm ist kein Part.

Der alte Code für die xyz-box hatte eine Unterscheidung nach ipt oder iam und nahm dann entsprechend oPart... oder oAsm... Das krieg ich noch kopiert, ich weiß aber nicht, ob der Aufruf der OrientedMinimumRangeBox dann nicht anders erfolgen muss und ob er für iam überhaupt funktioniert.

------------------
Roland  
www.Das-Entwicklungsbuero.de

It's not the hammer - it's the way you hit!

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

Windows 10 x64, AIP 2020-2025

erstellt am: 18. Jul. 2024 11:05    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 Roland Schröder 10 Unities + Antwort hilfreich

Moin

Ja, das geht auch für Baugruppen. Man kann sich dabei die automatische Typkonvertierung von VBA zu Nutze machen, die ein Document je nach Bedarf später in ein PartDocument bzw. AssemblyDocument umwandelt.
Mir ist noch ein Fehler aufgefallen. Bei Bauteilen würde nur der erste Volumenkörper berücksichtigt. Das stimmt bei MBP's dann möglicherweise nicht. Ich hatte übersehen, dass die ComponentDefinition diese Box für den Gesamtkörper bereitstellt.
Für leere Bauteile und Baugruppen ist noch eine Fehlerbehandlung dazugekommen.

Code:

Option Explicit

Private Sub sort()

If Not ThisApplication.ActiveDocumentType = kAssemblyDocumentObject And Not ThisApplication.ActiveDocumentType = kPartDocumentObject Then
    Call MsgBox("Funktion nur in Baugruppen und Bauteilen Verfügbar.", vbExclamation, "OrientedMinnimumBox")
    Exit Sub
End If

Dim oDoc As Document
Set oDoc = ThisApplication.ActiveDocument

Dim oCompDef As ComponentDefinition
Set oCompDef = oDoc.ComponentDefinition

On Error Resume Next
Dim oOMB As OrientedBox
Set oOMB = oCompDef.OrientedMinimumRangeBox

If Err.Number <> 0 Then
    MsgBox ("L x B x H: 0 x 0 x 0")
    Exit Sub
End If

On Error GoTo 0

Dim oArr(2) As Double

oArr(0) = oCompDef.OrientedMinimumRangeBox.DirectionOne.Length
oArr(1) = oCompDef.OrientedMinimumRangeBox.DirectionTwo.Length
oArr(2) = oCompDef.OrientedMinimumRangeBox.DirectionThree.Length

Dim i As Integer
Dim j As Integer
Dim dTemp As Double

For i = 0 To 2
    For j = i + 1 To 2
        If oArr(i) < oArr(j) Then
            dTemp = oArr(j)
            oArr(j) = oArr(i)
            oArr(i) = dTemp
        End If
    Next
   
Next

MsgBox ("L x B x H: " & oArr(0) & " x " & oArr(1) & " x " & oArr(2))

End Sub


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

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