| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Endlich eine vernünftige Bounding Box IV 2021 (1950 / mal gelesen)
|
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1732 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 28. Jul. 2021 08:54 <-- editieren / zitieren --> Unities abgeben:
Wurde nicht wirklich laut von Autodesk über die Änderung in der API laut gesagt. Es gibt nun endlich eine vernünftige "Alligned" Bounding Box Funktion ********************************* • SurfaceBody.OrientedMinimumRangeBox property - OrientedMinimumRangebox in SurfaceBody object which gives overall size of the surface body. ------------------ ************************************ 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
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 28. Jul. 2021 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 29. Jul. 2021 15:56 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Hallo Das Property ist für SurfaceBody im Bauteil und für SurfaceBodyProxy in der Baugruppe verfügbar. Entgegen der RangeBox besitzt die OrientedBox keinen Max-/MinPoint, sondern einen definierten Eckpunkt und davon ausgehend drei Vektoren. Bei Multibody Bauteilen muss man für eine Gesamtabmessung vermutlich erst temporär einen vereinigten Body über die TransientBReps erstellen. Welche der drei Dimensionen was ist, muss jeder selbst entscheiden. Hab schon gesehen das aufsteigend Höhe, Breite und Länge benannt wurden. Hier mal ein ganz einfaches Beispiel für ein Bauteil mit einem Volumenkörper. Zum Vergleich die Werte der RangeBox. Code:
Option ExplicitPrivate Sub DemoOrientedBox() Dim oApp As Inventor.Application Set oApp = ThisApplication Dim oPartDoc As PartDocument Set oPartDoc = oApp.ActiveDocument Dim oSB As SurfaceBody Set oSB = oPartDoc.ComponentDefinition.SurfaceBodies(1) Dim oBox As Box Set oBox = oSB.RangeBox Dim dX As Double Dim dY As Double Dim dZ As Double dX = Round((oBox.maxPoint.x - oBox.minPoint.x) * 10, 1) dY = Round((oBox.maxPoint.y - oBox.minPoint.y) * 10, 1) dZ = Round((oBox.maxPoint.Z - oBox.minPoint.Z) * 10, 1) Dim oOBox As OrientedBox Set oOBox = oSB.OrientedMinimumRangeBox Dim dOX As Double Dim dOY As Double Dim dOZ As Double dOX = Round(oOBox.DirectionOne.Length * 10, 1) dOY = Round(oOBox.DirectionTwo.Length * 10, 1) dOZ = Round(oOBox.DirectionThree.Length * 10, 1) MsgBox ("RangeBox: " & dX & " x " & dY & " x " & dZ & " mm" & vbCrLf & "OrientedRangeBox: " & dOX & " x " & dOY & " x " & dOZ & " mm") End Sub
------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 720 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 29. Jul. 2021 18:04 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Gibt es irgendwo weitere Informationen und Details zur OrientedMinimumRangeBox? Gelten ähnliche Einschränkungen wie bei der RangeBox? z.B. dass Stützpunkte einer Spline mit eingeschlossen werden. Wie funktioniert das unter der Haube? die Optimierung (Minimierung des Volumens, nehme ich an) mit 9 Parametern erscheint mir nicht sehr einfach. Die API-Hilfe ist da sehr wortkarg. ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernoAn Mitglied
Beiträge: 172 Registriert: 16.01.2014
|
erstellt am: 30. Jul. 2021 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
|
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 30. Jul. 2021 09:36 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Zitat: Original erstellt von KraBBy: Gelten ähnliche Einschränkungen wie bei der RangeBox?
Testergebnisse: - sichtbare überstehende Ursprungsebenen: kein Einfluss - sichtbare ausladende 2D-Skizzen: kein Einfluss - sichtbare ausladende 3D-Skizze: kein Einfluss - sichtbare außenliegende Versatzfläche: kein Einfluss - Aufdickung (Versatz als solid): genau wie es sein soll ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! [Diese Nachricht wurde von Roland Schröder am 30. Jul. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 01. Aug. 2021 19:20 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Hallo Hier noch eine Version die in Multibodyparts alle Volumenkörper vereint berücksichtigt. Mich stört noch, dass es keine Möglichkeit gibt die Orientierung z.B. über ein BKS vorzugeben. So wie's jetzt ist, bekomme ich drei Längenwerte und kann nicht definieren was Länge, Breite und Höhe ist. Code:
Private Sub OrientedSBBox2()Dim oApp As Inventor.Application Set oApp = ThisApplication Dim oPartDoc As PartDocument Set oPartDoc = oApp.ActiveDocument Dim oSB As SurfaceBody Set oSB = oPartDoc.ComponentDefinition.SurfaceBodies(1) Dim oTransBRep As TransientBRep Set oTransBRep = oApp.TransientBRep Dim oTransUnion As SurfaceBody Set oTransUnion = oTransBRep.Copy(oSB) Dim oAddBody As SurfaceBody Dim oTransAdd As SurfaceBody If oPartDoc.ComponentDefinition.SurfaceBodies.Count > 1 Then Dim i As Integer For i = 2 To oPartDoc.ComponentDefinition.SurfaceBodies.Count Set oAddBody = oPartDoc.ComponentDefinition.SurfaceBodies(i) Set oTransAdd = oTransBRep.Copy(oAddBody) Call oTransBRep.DoBoolean(oTransUnion, oTransAdd, kBooleanTypeUnion) Next End If Dim oBox As Box Set oBox = oTransUnion.RangeBox Dim dX As Double Dim dY As Double Dim dZ As Double dX = Round((oBox.maxPoint.x - oBox.minPoint.x) * 10, 1) dY = Round((oBox.maxPoint.y - oBox.minPoint.y) * 10, 1) dZ = Round((oBox.maxPoint.Z - oBox.minPoint.Z) * 10, 1) Dim oOBox As OrientedBox Set oOBox = oTransUnion.OrientedMinimumRangeBox Dim dOX As Double Dim dOY As Double Dim dOZ As Double dOX = Round(oOBox.DirectionOne.Length * 10, 1) dOY = Round(oOBox.DirectionTwo.Length * 10, 1) dOZ = Round(oOBox.DirectionThree.Length * 10, 1) MsgBox ("RangeBox: " & dX & " x " & dY & " x " & dZ & " mm" & vbCrLf & "OrientedRangeBox: " & dOX & " x " & dOY & " x " & dOZ & " mm") End Sub
------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 720 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 02. Aug. 2021 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
|
BernoAn Mitglied
Beiträge: 172 Registriert: 16.01.2014
|
erstellt am: 02. Aug. 2021 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
|
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 02. Aug. 2021 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Zitat: Original erstellt von rkauskh: ...kann nicht definieren was Länge, Breite und Höhe ist.
Moin! Danke erst mal für Deine Code-Beiträge! Ich bin total dabei, weil mich das Problem der "wahren Größe" schon seit vielen Jahren der planbasierten Modellierung mit den oft schräg im Raum angeordneten Bauteilen begeleitet. An Multibody hatte ich bei meinem Test vorige Tage nicht gedacht. Alle zusammenzuzählen finde ich auch zunächst mal richtig, das hat die alte RangeBox ja auch gemacht. Dann aber denke ich, dass es auch Bedarf geben könnte, die Abmessungen der einzelnen Volumina auch einzeln zu bestimmen und anzuzeigen. Aber das muss man ja auch erst mal programmieren, da will ich nichts verlangen. Was die Reihenfolge der drei Werte angeht, scheint mir die neue Funktion vom Ursprungskoordinatensystem auszugehen und durch Variation ein Minimum zu suchen. Ich habe hier jedenfalls einen Fall, wo die orientierte RangeBox einer schräg im Raum liegende Platte nicht auf die tatsächliche Breite reduziert wird, sondern ein paar Hundertstel mm größer bleibt; so als ob in Schritten gearbeitet würde und eine völlig exakte Ausrichtung nicht erreicht wird. Aber das ist nur ein Nebeneffekt, den ich akzeptabel finde. Die Annahme einer vom Ursprungskoordinatensystem ausgehenden Variation passt auch dazu, dass die Reihenfolge der drei mit 1, 2 und 3 indizierten Werte oft ähnlich denen in x, y und z ist. Die Indices 1, 2 und 3 sind allerdings bei z. B. den Trägheitsachsen räumlich bewegter Körper oder auch bei einem räumlichen Spannungszustand (zumindest in der deutschen ingenieurwissenschaftlichen Tradition) eindeutig zugewiesen. 1 oder I bezeichnet da immer den größten Wert ("Hauptspannung", "Haupttträgheitsachse") und 3 oder III den kleinsten. Der allgmeine Sprachbegrauch ist nicht so eindeutig. "Höhe" kann (bei Schaltschränken) größer als "Breite sein", "Länge" (bei Fahrzeugen) kleiner als "Höhe" oder (bei Profilen) kleiner als "Breite" oder "Dicke". Und dann kommen auch noch "Tiefe" statt "Breite" oder "Dicke" oder nichts davon und stattdessen "Durchmesser". Das alles so zuzuordnen, wie der User grad denkt, wäre ein unangemessen hoher Softwareaufwand, wenn nicht sogar praktisch unmöglich. Insofern ist mein Vorschlag, gar keine Benennungen zu verwenden, sondern die Werte einfach nur nach Größe sortiert anzugeben (was ich eigentlich von Autodesk erwartet hätte, was die aber offenbar versäumt haben), z. B. "Hüllmaße in mm: 100 x 75 x 20". ------------------ 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 |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 720 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 02. Aug. 2021 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Zitat: Original erstellt von rkauskh: Mich stört noch, dass es keine Möglichkeit gibt die Orientierung z.B. über ein BKS vorzugeben.
Angenommen, du hast ein BKS, das die Orientierung vorgeben soll: -> oBKS dann den Body so transformieren, dass das BKS im Ursprung liegt, davon die Box rechnen. Hilft vermutlich vor allem bei der Verwendung der (alten) RangeBox, die drei Vektoren der OrientedBox müsste man immer noch genauer untersuchen. Code: ' ... Dim oMatrix As Matrix Set oMatrix = oBKS.Transformation Call oMatrix.Invert 'invertieren (aus "Position BKS zum UrsprungsKS" wird "Pos. Ursprung zum BKS") Call oTransBRep.Transform(oTransUnion, oMatrix) 'Versch./Drehen '...
------------------ Gruß KraBBy 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
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 02. Aug. 2021 17:42 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Zitat: Original erstellt von Roland Schröder: ...einen Fall, wo die orientierte RangeBox einer schräg im Raum liegende Platte nicht auf die tatsächliche Breite reduziert wird, sondern ein paar Hundertstel mm größer bleibt
Sorry, falscher Alarm. Ich hatte in der idw falsch bemaßt. ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! [Diese Nachricht wurde von Roland Schröder am 02. Aug. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bwr Mitglied Konstrukteur
Beiträge: 139 Registriert: 21.02.2007
|
erstellt am: 04. Aug. 2021 09:36 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Vielen Dank an alle Beteiligten für die Tests und die Veröffentlichung der Erkenntnisse. Soweit ich weiß gibt's die OrientedBox schon seit Inventor 2016, die OrientedMinimumRangeBox ist neu, habe aber beides noch nicht weiter untersucht. Vor einiger Zeit habe ich eine Abmessungen-App geschrieben bei der die Körper beliebig im Raum liegen können. Diese verwendet noch die alte RangeBox mit einigen zusätzlichen Berechnungen im Hintergrund. Sobald aber Splines ins Spiel kommen funktioniert die RangeBox nicht mehr. Da benutze ich dann eine alternative Berechungsmethode. ------------------ Grüße Andreas etaCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |