| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt |
Autor
|
Thema: Subtraktion von Elementen und Zufallsverteilung (3533 mal gelesen)
|
GeboWaz Mitglied
Beiträge: 7 Registriert: 13.01.2009 Autodesk Inventor 11 (Dateiversion 11.3.0.39100)
|
erstellt am: 13. Jan. 2009 13:28 <-- editieren / zitieren --> Unities abgeben:
Guten Tag, ich benutze Inventor erst seit wenigen Monaten und habe nun die Aufgabe für wissenschaftliche Zwecke ein "Random-Material" zu erstellen. Heißt: Es soll ein Zylinder erstellt werden welcher sehr viele Poren (>200), in Form von kugelformigen Aussparungen (alle gleiche Größe) enthält. Diese kugelformigen Aussparungen sollen zufällig (random) verteilt werden. Die Idee war nun ein Bauteil zu konstruieren welches aus diesen Kugeln besteht, deren Mittelpunkte (X,Y und Z)jeweils parametrisch vergeben werden. Die Lister der Parameter wird dann mit Zufallszahlen (aus einem anderen Programm) gefüttert. Am Schluss muss diese Kugelanordnung von dem Zylinderbauteil abgezogen werden. Dazu nun mehrer Fragen: 1. Ist es möglich ein (fertiges) Bauteil (bei mir: Kugelanordnung)von einem anderen Bauteil (bei mir: Zylinder) zu subtrahieren? 2a. Gibt es eine Möglichkeit alle 3 Raumdimensionen des Mittelpunktes einer Kugel zu parametrisieren und diese Kugel zu vervielfältigen (über 200 mal), mit fortlaufenden Parametern? 2b. Wie kann ich eine komplette Liste von Zufallszahlen (z.B. aus Excel) in die Parameterliste übertragen? 3. Wie kann ich ein fertiges Bauteil in seinen kompletten Abmaßen ändern, skalieren? Falls jemand eine anderen, einfachere, schnellere Lösungsmöglichkeit zur Erstellung eines solchen "Random-Materials" weis, dann wäre das natürlich noch viel besser. Lässt sich das evt. auch mit VBA umsetzen? Ich freue mich auf Eure Antworten, Gruß Gebhard ------------------ Never Touch a Running System Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Harry G. Ehrenmitglied V.I.P. h.c. one-man-show
Beiträge: 4585 Registriert: 24.01.2003 PDSP2014.1.3; W7.1-64 E3-1240, 16 GB Quadro K2000
|
erstellt am: 13. Jan. 2009 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
1. Bauteile in eine Baugruppe packen und davon eine "abgeleitete Komponente" erstellen. Dabei gibt es die Option der Volumensubtraktion 1. Keine Kugeln verwenden, sondern Kugelhohlräume (Befehl "Drehung") im Bauteil erzeugen 2a. In Excel machen und die Mittelpunktskoordinaten einlesen. Im 11er braucht's dafür ein Zusatztool. Das Erzeugen der Kugeln / Hohlkugeln daraus ist aber wohl Handarbeit. 2b. In der Parameterliste gibt es unten links einen Button zum Verknüpen / Einbetten von Exceldateien. 3. Skalieren ohne Verzerren ist beim Erzeugen einer abgeleiteten Komponete möglich 4. Hinterfragen, ob das Porenmaterial wirklich ausmodelliert sein muß. Das kann nämlich ein echter Performancekiller werden. ------------------ Grüße von Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Moderator Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13310 Registriert: 02.04.2004 IV 2019 + 2020 + 2021 W7pro64 F-Secure-Safe Dell-M4600 2,13GHz 12GB Quadro2000M 15,4"1920x1080 MS-IntelliMouse-Optical SpacePilotClassic
|
erstellt am: 13. Jan. 2009 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Moin und Herzlich Willkommen! Ja, geht alles! Mach eine Baugruppe (iam) mit dem Hüllkörper und platziere darin auch kleine Kugeln oder was auch immer für die "Poren". Mach dann ein neues Bauteil, leite die iam darin ab und setze dabei alle kleinen Kugeln auf Subtrahieren.
Man könnte das auch auch direkt im Einzelteil machen (Körper erstellen, Pore erstellen, Anordnung), ich glaube aber, dass es mit Hilfe einer iam leichter zu verwirklichen ist, denn die Raumkoordinaten von Exemplaren in einer iam sind gut zugänglich, und auch das Platzieren zusätzlicher Exemplare erscheint mir leichter als in einem Bauteil. Damit auch nachträglich hinzugefügte Poren sogleich als Subtraktion gelten, mache eine Unterbaugruppe für die Poren! Bei so vielen Poren ist das Erstellen aber schon mühsam; da empfiehlt sich ein Programm. Ehe ich mich damit zu lange herumärgern würde, würde ich dort fragen: www.fx64.de, die machen so was. Einzelne Parameter ändern in der Parameterliste sollte ja wohl kein Problem sein. Man kann auch alle Parameter von einem abhängig machen mit mathematischen Ausdrücken. Man kann dazu auch Parameter aus anderen Bauteilen nutzen, z.B. Porengröße und Anordnungsfaktoren in Abhängigkeit von den Maßen des Hüllkörpers. Außerdem kann man beim Ableiten einen Maßstabsfaktor angeben. Es gibt auch eine Spezialausführung von Abgeleitete Komponete, die für jede Koordinatenrichtung einen eigenen Faktor hat. Excel würde ich nicht dafür einsetzen, denn wenn Du ein Programm hast, das all die Poren einfügt, dann kann das dabei auch eine zufällige Verteilung vornehmen. Außerdem ist das Verknüpfen von Dateien verschiedener Formate immer mit Risiken behaftet. ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeboWaz Mitglied
Beiträge: 7 Registriert: 13.01.2009 Autodesk Inventor 11 (Dateiversion 11.3.0.39100)
|
erstellt am: 13. Jan. 2009 16:35 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die Antworten. Das Subtrahieren und das Skalieren hat geklappt. Das parametrische und automatische platzieren von Kugeln in einer Baugruppe hab ich noch nicht hinbekommen. Habe aber mal die Firma www.fx64.de angeschrieben. Gibt es nicht vielleicht eine Möglichkeit das jede eingefügte Kugel standartmäßig als Abhängigkeit eine Ursprungsbemaßung bekommt? Grüße Gebhard ------------------ Never Touch a Running System Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Aesop Ehrenmitglied CAD-Trainer & Supporter
Beiträge: 1540 Registriert: 03.05.2006 AI 7-2010 Vault Manufacturing ;( DualCore 1.8GHz 4GB RAM
|
erstellt am: 13. Jan. 2009 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Workarround könnte sein: die Assembly Tools, genauer: der Befehl Ground and Root Component. Der nämlich platziert Dir (leider immer nur) eine einzelne Komponente auf Koordniate 0,0,0 und fixiert das Teil - im Hintergrund werden genau die 3 Abhängigkeiten erstellt, und die gilt es anschließend nur noch zu befüllen mit den Zufallswerten. Assembly Tools findest Du in: C:\Programme\Autodesk\Inventor 2008\SDK\Tools\Users\AssemblyTools\AssemblyTools.msi ------------------ Grüße Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael Puschner Moderator Rentner
Beiträge: 13003 Registriert: 29.08.2003 Toshiba Encore mit MS Office Ein Programm sollte nicht nur Hand und Fuß, sondern auch Herz und Hirn haben. (Michael Anton)
|
erstellt am: 13. Jan. 2009 17:24 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Zitat: Original erstellt von Aesop: ... im Hintergrund werden genau die 3 Abhängigkeiten erstellt, und die gilt es anschließend nur noch zu befüllen mit den Zufallswerten. ...
Das ist wäre schon mal ein guter Ansatz. Werden wirklich Abhängigkeiten erzegt und nicht nur fixiert? Das "Befüllen" der Modellparameter der Abhängigkeiten in der Parametertabelle wäre dann nämlich nur noch ein Klacks: Erstellen eines Benutzerparameters, z.B. "ZufallMax", der den maximalen Abstand vom Ursprung angibt alle Gleichungen der Abhängigkeits-Modellparameter mit "random()*ZufallMax" befüllen (geht bequem über die Zwischenablage - einmal STRG+C und in jedes Gleichungsfeld STRG+V)Mit jedem Ändern des Wertes von "ZufallMax" und Aktualisieren der Baugruppe hüpfen alle Kugeln durch die Gegend, auch wenn für "ZufallMax" der selbe Wert nur nochmals neu eingegeben wird. Eine andere Möglichkeit wär das Platzieren der Kugeln über ein VBA-Makro. ------------------ Michael Puschner Autodesk Inventor Certified Expert Scholle und Partner GmbH The most dangerous phrase in the language is: "We've always done it this way." (Grace Murray Hopper) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Moderator Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13310 Registriert: 02.04.2004 IV 2019 + 2020 + 2021 W7pro64 F-Secure-Safe Dell-M4600 2,13GHz 12GB Quadro2000M 15,4"1920x1080 MS-IntelliMouse-Optical SpacePilotClassic
|
erstellt am: 13. Jan. 2009 18:18 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Zitat: Original erstellt von GeboWaz: Gibt es nicht vielleicht eine Möglichkeit, dass jede eingefügte Kugel standardmäßig als Abhängigkeit eine Ursprungsbemaßung bekommt?
Klingt naheliegend, und das in den Assembly-Tools enthaltene Ground-and-Root-Component macht genau das. So ist es aber viel umständlicher als nötig. Grundsätzlich hat nämlich jedes Exemplar sowieso immer sechs Koordinaten, mit denen seine augenblickliche Lage im Raum angegeben ist. Wenn man das Exemplar fixiert, kann man mittels drei dieser Koordinaten das Exemplar an beliebige Positionen im Raum definieren. Die drei rotatorischen Koordinaten sind leider für Eingaben gesperrt, d.h. Drehen kann man so nicht, aber bei Kugeln ist das ja egal. Als Exemplareigenschaften sind diese Koordinaten auch sehr gut programmtechnisch ansprechbar, vielleicht sogar besser, als wenn es Abhängigkeiten wären. Auf jeden Fall kann es nur effektiver sein, direkt die ohnehin vorhandenen Kordinaten zu setzen, anstatt in einer Unmenge Abhängigkeiten herumzuwühlen. Abhängigkeiten hätten nur den Vorteil, dass sie gemeinsam in der Parameterliste auftauchen und somit händischen Eingriffen offenstehen. Aber ist das bei der beabsichtigten Anzahl wirklich eine Alternative? ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Harry G. Ehrenmitglied V.I.P. h.c. one-man-show
Beiträge: 4585 Registriert: 24.01.2003 PDSP2014.1.3; W7.1-64 E3-1240, 16 GB Quadro K2000
|
erstellt am: 13. Jan. 2009 18:35 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Wenn man auf manuelle Eingabe angewiesen ist, dann ist das Ändern in der Parameterliste einfacher als in den Exemplareigenschaften, die man ja für jedes Teil einzeln aufrufen muß. In den Exemplareigenschaften lassen sich für die Koordinaten aber ebensogut Parameternamen einsetzen. Das muß man nur ein Mal tun und kann die Werte dann über die Parameterliste pflegen, oder mit Michael's Vorschlag erzeugen lassen. Toll, was alles geht, wenn was nicht geht ------------------ Grüße von Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael Puschner Moderator Rentner
Beiträge: 13003 Registriert: 29.08.2003 Toshiba Encore mit MS Office Ein Programm sollte nicht nur Hand und Fuß, sondern auch Herz und Hirn haben. (Michael Anton)
|
erstellt am: 13. Jan. 2009 21:54 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Zitat: Original erstellt von Harry G.: ... In den Exemplareigenschaften lassen sich für die Koordinaten aber ebensogut Parameternamen einsetzen. ...
Ich fürchte, Harry, dem ist nicht so. Die Versatz-Werte in den Exemplareigenschaften lassen sich nicht über Parameter steuern. Dafür braucht man schon Zusammenbau-Abhängigkeiten. ------------------ Michael Puschner Autodesk Inventor Certified Expert Scholle und Partner GmbH The most dangerous phrase in the language is: "We've always done it this way." (Grace Murray Hopper) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Harry G. Ehrenmitglied V.I.P. h.c. one-man-show
Beiträge: 4585 Registriert: 24.01.2003 PDSP2014.1.3; W7.1-64 E3-1240, 16 GB Quadro K2000
|
erstellt am: 13. Jan. 2009 22:23 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Ah wie gemein. Parameternamen werden bei der Eingabe akzepiert und das Bauteil auch an die berechnete Position verschoben. Erst beim Schließen des Eigenschaftsfensters wird klammheimlich der Parameter durch den Wert ersetzt. Pfui. ------------------ Grüße von Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9780 Registriert: 01.12.2003 AutoCAD 2.5 - 2024, Inventor AIP 4-2024.2 Windows 11 i7, 96 GB, SSD, Quadro P2200
|
erstellt am: 13. Jan. 2009 22:55 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Interessante Aufgabe. Das schreit doch nach einer kleinen VBA Programmierung. Habe mit meinen bescheidenen Kenntnissen mal die Beispielroutine AddOccurrence() aus der Inventor API Hilfe ein wenig überarbeitet. Modelliert habe ich eine Kugel mit Durchmesser 10mm, gespeichert in c:\temp\kugel.ipt Außerdem einen Zylinder modelliert mit 200mm Durchmesser und 200mm Höhe - diese Werte stehen im Moment auch als Konstanten im Programm. Dann neue Baugruppe erstellt und die angehängte Routine mit ALT+F11 ins Modul1 des Anwendungsprojektes kopiert und dann ausgeführt. Ergebnis siehe Bild - 200 Kugeln in 3 Sekunden. Code: Public Sub AddOccurrence_Zufallskugeln() Dim pi pi = 4 * Atn(1) ' Wert von Pi berechnen. ' Set a reference to the assembly component definintion. ' This assumes an assembly document is open. Dim oAsmCompDef As AssemblyComponentDefinition Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition ' Set a reference to the transient geometry object. Dim oTG As TransientGeometry Set oTG = ThisApplication.TransientGeometry ' Create a matrix. A new matrix is initialized with an identity matrix. Dim oMatrix As Matrix Set oMatrix = oTG.CreateMatrix ' Set the rotation of the matrix for a 45 degree rotation about the Z axis. 'Call oMatrix.SetToRotation(3.14159265358979 / 4, _ ' oTG.CreateVector(0, 0, 1), oTG.CreatePoint(0, 0, 0)) ' Set the translation portion of the matrix so the part will be positioned ' Zufallsberechnung For i = 1 To 200 pl = Sqr(Rnd()) * 10# ' Zylinderradius in cm pa = (Rnd() - 0.5) * 2# * pi ' Richtungswinkel px = Sin(pa) * pl py = Cos(pa) * pl pz = Rnd() * 20# ' Zylinderhöhe in cm Call oMatrix.SetTranslation(oTG.CreateVector(px, py, pz)) ' Add the occurrence. Dim oOcc As ComponentOccurrence Set oOcc = oAsmCompDef.Occurrences.Add("C:\Temp\Kugel.ipt", oMatrix) Next i End Sub
------------------ Mit freundlichem Gruß
Udo Hübner www.CAD-Huebner.de [Diese Nachricht wurde von CAD-Huebner am 13. Jan. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Moderator Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13310 Registriert: 02.04.2004 IV 2019 + 2020 + 2021 W7pro64 F-Secure-Safe Dell-M4600 2,13GHz 12GB Quadro2000M 15,4"1920x1080 MS-IntelliMouse-Optical SpacePilotClassic
|
erstellt am: 14. Jan. 2009 00:31 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Wenn Radius und Winkel gleichverteilt zufällig sind, müsste bei dieser Formulierung die Verteilung der Kugeln in der Mitte des Zylinders eine höhere Dichte haben. Außerdem wird es so keine Pore geben, deren Mittelpunkt außerhalb des Zylinders liegt, was bei Herstellung des Bauteils aus einem größeren Block unrealistisch wäre. Ich bin zwar nicht dermaßen neugierig, dass ich das jetzt gleich ausprobieren würde, aber interessieren tät's mich schon, das Modell anzusehen... ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9780 Registriert: 01.12.2003 AutoCAD 2.5 - 2024, Inventor AIP 4-2024.2 Windows 11 i7, 96 GB, SSD, Quadro P2200
|
erstellt am: 14. Jan. 2009 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Zitat: Original erstellt von Doc Snyder: Wenn Radius und Winkel gleichverteilt zufällig sind, müsste bei dieser Formulierung die Verteilung der Kugeln in der Mitte des Zylinders eine höhere Dichte haben. Außerdem wird es so keine Pore geben, deren Mittelpunkt außerhalb des Zylinders liegt, was bei Herstellung des Bauteils aus einem größeren Block unrealistisch wäre. Ich bin zwar nicht dermaßen neugierig, dass ich das jetzt gleich ausprobieren würde, aber interessieren tät's mich schon, das Modell anzusehen...
Hallo Roland, a) Das Problem der Radiusgleichverteilung habe ich umgangen, indem ich aus dem normierten Radius die Wurzel gezogen habe. Ansonsten habe ich mir da nicht viel Mühe gegeben. Es ist nur als Anregung gedacht. b) Für Kugelmittelpunkte außerhalb des Zylinders muss man entweder nur den Zylinderradius verkleinern, oder den Kugelradius im Programm berücksichtigen - ich habs mal mit eingebaut. c) Anbei die Baugruppe Zufallskugeln.iam (mit dem noch etwas modifizierten VBA Programmcode - eingebettet im Dokumentprojekt), sowie die Teile Kugel.ipt und Zylinder.ipt im IV 11 Format. Viel Spaß damit. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Moderator Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13310 Registriert: 02.04.2004 IV 2019 + 2020 + 2021 W7pro64 F-Secure-Safe Dell-M4600 2,13GHz 12GB Quadro2000M 15,4"1920x1080 MS-IntelliMouse-Optical SpacePilotClassic
|
erstellt am: 14. Jan. 2009 11:35 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
|
ugu_hro01 Mitglied Konstrukteur
Beiträge: 85 Registriert: 22.11.2005 INV 2012 Ultimate. (Netzlizenz) GAIN 10 XP 32Bit Prof.
|
erstellt am: 14. Jan. 2009 14:58 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Hi, mal abgesehen von der Inventorumsetzung Deines Problems, stelle ich mir gerade ein paar Fragen: welchen praktischen Mehrwert es für Dich hat, die Poren auszumodellieren -> reicht es nicht aus, an der Dichte zu "drehen"? wie sollen die Poren überhaupt aussehen -> sind alle gleich groß / ist das Material offen- oder geschlossenporig / gibt es eine "Außenhaut"? Gruß Ulf
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeboWaz Mitglied
Beiträge: 7 Registriert: 13.01.2009 Autodesk Inventor 11 (Dateiversion 11.3.0.39100)
|
erstellt am: 14. Jan. 2009 15:34 <-- editieren / zitieren --> Unities abgeben:
Nochmals vielen Dank für Eure kompetente Hilfe, besonders auch dir Udo Hübner, mit dem VBA-Code hat sehr gut funktioniert. Auch wenn ich noch nicht durch alle Befehle (Aufgrund mangelnder VBA-Kentnisse) durchgestiegen bin. In der einen Zeile ist noch ein kleiner Fehler drinn gewesen, müsste denk ich so lauten: pz = Rnd() * (Zh + Kdm) - Kdm / 2 ' Zylinderhöhe in cm @Ulf: nein reine Dichteänderung reicht nicht aus. Es soll der Realtität möglichst nahe kommen, damit Simulation und Experiment angepasst werden können. Das reale Material ist dabei VPS-W (Vakuum plasmagespraytes Wolfram). Das Modell muss ich evt. später noch erweitern, heißt es sollen anderst geformte Poren und evt. auch 3-dimensionale Risse verteilt werden. Sollte ich dabei mal wieder nicht weiter kommen, hoffe ich dass ich mich nochmals an Euch wenden darf!? Es freut mich, dass es solche uneigennützige, hilfsbereite Menschen wie Euch gibt, Gruß Gebhard
------------------ Never Touch a Running System Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeboWaz Mitglied
Beiträge: 7 Registriert: 13.01.2009 Autodesk Inventor 11 (Dateiversion 11.3.0.39100)
|
erstellt am: 14. Jan. 2009 18:52 <-- editieren / zitieren --> Unities abgeben:
Da wäre schon die erste weitere Frage: Ich möchte anstatt Kugeln andere Elemente zufällig verteilen, wie kann ich eine zufällige Verteilung der rotatorischen Koordinaten jedes Element erreichen. Bzw. wie greife ich mittels VBA-Code auf die rotatorischen Koordinaten zu? Falls einer von Euch eine gute Seite weis auf welcher VBA-Befehle (für Inventor)genauer erklärt werden, würde mir das auch schon sehr viel weiterhelfen. Gruß Gebhard ------------------ Never Touch a Running System Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9780 Registriert: 01.12.2003 AutoCAD 2.5 - 2024, Inventor AIP 4-2024.2 Windows 11 i7, 96 GB, SSD, Quadro P2200
|
erstellt am: 14. Jan. 2009 19:19 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
|
Steinw Mitglied Konstrukteur
Beiträge: 655 Registriert: 24.05.2002 Firma: DIVA 11 und 2012 Win 7- 64bit/ 4 GB Ram / Core2 Duo 3GHz/ NVidia Quadro ------------ Laptop: HP Compaq 8710w / Win 7 / 2 GB Ram / NVidia Quadro ------------ Home: Win 7 64Bit / 8 GB Ram / Core2 Quadro 2,5 GH / NVidia GForce 6600 / Diva IV2011 Pro und 2012
|
erstellt am: 15. Jan. 2009 13:13 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Hey irgendwie kommen hier alle guten Bräuche ab. Herzlich Willkommen im Forum - GeboWaz !!! Macht das nicht normal ein Mod? Abgesehen davon zurück zum Thema - was machst du genau? Bzw. wie machst du die Simulation? Grüße, Stein Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Moderator Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13310 Registriert: 02.04.2004 IV 2019 + 2020 + 2021 W7pro64 F-Secure-Safe Dell-M4600 2,13GHz 12GB Quadro2000M 15,4"1920x1080 MS-IntelliMouse-Optical SpacePilotClassic
|
erstellt am: 15. Jan. 2009 13:45 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
|
Steinw Mitglied Konstrukteur
Beiträge: 655 Registriert: 24.05.2002 Firma: DIVA 11 und 2012 Win 7- 64bit/ 4 GB Ram / Core2 Duo 3GHz/ NVidia Quadro ------------ Laptop: HP Compaq 8710w / Win 7 / 2 GB Ram / NVidia Quadro ------------ Home: Win 7 64Bit / 8 GB Ram / Core2 Quadro 2,5 GH / NVidia GForce 6600 / Diva IV2011 Pro und 2012
|
erstellt am: 15. Jan. 2009 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Hihihi, na sind wir heute ein wenig angespannt? Wollte ja nur mal einen Spaß machen. Leg dich niemals mit den Mods an - klare Divise. Nachdem ich aber nichts mehr dazu beitragen konnte und meine Mama immer sage: "Wennst nichts Positives beitragen kannst, dann sag nix, oder was lustiges." ... na eh schon wissen. Grüße, Stein [Diese Nachricht wurde von Steinw am 15. Jan. 2009 editiert.] [Diese Nachricht wurde von Steinw am 15. Jan. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeboWaz Mitglied
Beiträge: 7 Registriert: 13.01.2009 Autodesk Inventor 11 (Dateiversion 11.3.0.39100)
|
erstellt am: 15. Jan. 2009 17:40 <-- editieren / zitieren --> Unities abgeben:
Schönen Abend zusammen, Okey, dann werd ich mich jetzt erstmal vorstellen. Also: ich bin Maschinenbaustudent und derzeit im Praxissemester am "Max-Planck Institut für Plasmaphysik" (IPP), dort im Bereich Materialforschung. Eine meiner Aufgaben ist die Unterstützung eines Doktoranden der ebenfalls am IPP arbeitet. Er macht "FEM based on direct mapping" für VPS-W (=Vacuum plasma sprayed tungsten); heißt er benützt Fotos (habe ein Beispiel angehängt) um darauf Meshs zu erstellen, mit welchen dann Wärmeflusssimulationen gemacht werden. Da diese Simulationen nur in 2D gemacht werden können (Foto-information nur in 2D vorhanden) soll nun zur Einschätzung der daraus resultierenden Abweichung ein 2D-3D-Vergleich gemacht werden. Dazu soll ein 3D Modell von VPS-W mittels CAD erstellt werden und dann in 3D simuliert werden, und ebendso Schnitte davon in 2D. Dann lässt sich ein Umrechungsfaktor oder Funktion von 2D zu 3D ableiten. Dieses 3D Modell will ich nun mit Inventor erstellen, der erste Schritt, das Zufällige verteilen von Poren (Kugeln) hat Dank Eurer Hilfe bereits hervoragend funktioniert. Der nächste Schritt wäre nun eine zufällige rotatorische Verteilung der einzelnen Poren. Ich habe nun versucht durch ein paar Abänderungen des oben bereitgestellten VBA-Codes dies zu erreichen. Allerdings bin ich mit dem Ergebnis nicht ganz zufrieden. Hier der Code:
Code: Public Sub AddOccurrence_Zufallsrotation() Const Anz As Integer = 100 ' Anzahl der Körper Dim pi As Double pi = 3.14159265358979 ' Wert von Pi ' Set a reference to the assembly component definintion. ' This assumes an assembly document is open. Dim oAsmCompDef As AssemblyComponentDefinition Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition ' Set a reference to the transient geometry object. Dim oTG As TransientGeometry Set oTG = ThisApplication.TransientGeometry ' Create a matrix. A new matrix is initialized with an identity matrix. Dim oMatrix As Matrix Set oMatrix = oTG.CreateMatrix ' Zufallsberechnung ' Idee: Drehung des Körpers um einen zufälligen Winkel um eine zufällige Achse im Raum ' Dazu Erzeugung einer Zufälligen Achse durch einen Vektor von einem Ursprung ' zu der Oberfläche einer Einheitskugel (r=1). Dabei muss jeder Punkt auf der Oberfläche ' (als Endpunkt des Vektors) gleich warscheinlich sein. For i = 1 To Anz pVecX = Rnd() 'Zufällige X-Koordinate des Vektors; jede Länge gleich warscheinlich, 'da Formel für Oberfläche eines Kugelausschnittes: O=2*H*r*b 'also nur linear von der Breite (b) abhängig; nur positiv, da Halbkugel 'ausreichend abstand = Sqr(1 - pVecX * pVecX) 'Berechnug des Senkrechten Abstands von der X-Koordinate 'zur Kugeloberfläche pVecRot = Rnd() * pi * 2 pVecY = Cos(pVecRot) * abstand pvecz = Sin(pVecRot) * abstand 'Aufteilung des Abstandes in eine Y und Z Richtung, vom 'zufälligen Winkel "pVecRot" abhängig 'Erzeugung eines Vektors mit der Länge 1 und einer zufälligen Richtung abgeschlossen 'nun Drehung des Körpers um diesen Vektor mit einem zufälligen Winkel pRot = Rnd() * pi * 2 Call oMatrix.SetToRotation(pRot, oTG.CreateVector(pVecX, pVecY, pvecz), oTG.CreatePoint(0, 0, 0)) Call oMatrix.SetTranslation(oTG.CreateVector(0, 0, 0)) Dim oOcc As ComponentOccurrence Set oOcc = oAsmCompDef.Occurrences.Add("D:\Random_Materials_VPS_W\Poren_und_Risse\test.ipt", oMatrix) Next i End Sub
Im Anhang befindet sich auch eine Beispieldatei mit 100 nach obigem Code zufällig verteilten Körpern (Pfeilen). Man kann sofort erkenne das diese nicht ganz zufällig verteilt sind, sondern einer Vorzugsrichtung (Z-Achse) unterliegen. Ich weis aber nicht wiso. Irgendwo im Code oder auch im Gedankengang muss noch ein Fehler stecken, könnt Ihr mir helfen? Ist durch eine Drehung um eine beliebige Achse überhaupt jede rotatorische Ausrichtung eines Körpers erreichbar? Kann man eine Matrix auch mehrmals nacheinander um verschiedene Achsen drehen? Wie müsste das aussehen? Gibt es eine einfachere eindeutige Beschreibung der rotatorischen Ausrichtung (Euler-Winkel sind nicht eindeutig)? Ich hoffe ich habe mein Problem einigermaßen verständlich ausdrücken können. Und freue mich auf Eure Antworten. mit Dank und freundlichem Gruß, Gebhard ------------------ Never Touch a Running System [Diese Nachricht wurde von GeboWaz am 15. Jan. 2009 editiert.] [Diese Nachricht wurde von GeboWaz am 15. Jan. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Moderator Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13310 Registriert: 02.04.2004 IV 2019 + 2020 + 2021 W7pro64 F-Secure-Safe Dell-M4600 2,13GHz 12GB Quadro2000M 15,4"1920x1080 MS-IntelliMouse-Optical SpacePilotClassic
|
erstellt am: 15. Jan. 2009 19:00 <-- editieren / zitieren --> Unities abgeben: Nur für GeboWaz
Zitat: Original erstellt von GeboWaz: (1)Ist durch eine Drehung um eine beliebige Achse überhaupt jede rotatorische Ausrichtung eines Körpers erreichbar? (2)Kann man eine Matrix auch mehrmals nacheinander um verschiedene Achsen drehen? Wie müsste das aussehen? (3)Gibt es eine einfachere eindeutige Beschreibung der rotatorischen Ausrichtung (Euler-Winkel sind nicht eindeutig)?
Hallo Gebhard, 1. Ja, ganz sicher! Den vollständigen Beweis kann ich zwar nicht vorweisen, aber ich habe es mit Inventor ausprobiert, indem ich für zwei beliebiege Rotationslagen zweier Exemplare eines Körpers diese Achse und den Winkel der relativen Rotation so konstruieren konnte, dass er sich jeder Lage anpasste, die ich versucht habe. Das müsste ich Dir mal hersuchen. 2. Vermutlich ja. Ich forsche selber schon seit einiger Zeit daran, wie dieses Matrixobjekt genau definiert ist (habe auch noch anderes zu tun - zum Glück). Hier im Forum konnte es mir jedenfalls noch niemand sagen, und das will schon was heißen, aber mir scheint, dass wir jetzt gemeinsam das Geheimnis lösen werden. 3. Genau da liegt der Hase im Pfeffer, und genau darum sind die drei Winkelangaben in den Exemplareigenschaften gesperrt. Man kann einen Drehvektor angeben mit einer beliebigten Raumrichtung und der dem Verdrehwinkel entsprechenden Länge, seine Koordinaten haben die Dimension Winkel und seine maximale Länge beträgt 360 Grad. Ich habe da eine Erinnerung, dass ich das im Zusammenhang mit meinen Untersuchungen schon mal so in Inventor gesehen hätte, aber auf die drei Winkelangaben in den Exemplareigenschaften Werte trifft es leider nicht zu, die zeigen leider irgendwie was anderes. Ich glaube aber, dass das Matrixobjekt so strukturiert ist, bin nur noch nicht so weit gekommen, das Auslesetool für die Matriswerte, das Igor (fx64) mit mal gemacht hat, auch anzuwenden. --- Ich muss heute noch zu einem Termin, daher muss ich mich kurz fassen, aber ich muss mal schauen, ich hab da noch ein paar Sachen, die Dir helfen könnten, z.B. diesen Test mit der Rotationsachse und ein Tool zum Auslesen der Matrixwerte. Am Wochenende finde ich die vielleicht. Ein Teil davon ist auch schon hier im Forum zu irgendwelchen Beiträgen zu diesem Thema gepostet. Die Suche könnte helfen! Das Erzeugen synthetischer Strukturen ist ansonsten ein eigenes großes Thema, denn Deine paar Kugeln zufällig im Raum verteilt sind ja meilenweit von dem entfernt, wie Poren, Blasen, Schaum oder Körner sich in der Realität organisieren. Vielleicht wirst Du Deine eigene Dissertation mal darüber schreiben . Das Zeug dazu scheinst Du ja zu haben! ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeboWaz Mitglied
Beiträge: 7 Registriert: 13.01.2009 Autodesk Inventor 11 (Dateiversion 11.3.0.39100)
|
erstellt am: 16. Jan. 2009 15:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Roland, Freut mich, dass du dir soviel Zeit für meine Probleme nimmst zu_1: Du hast Recht. Denn, wenn man durch den Mittelpunkt eines Körpers eine feste Ebene legt, dann ein 2tes Exemplar dieses Körpers (+die Ebene) beliebig um den Mittelpunkt dreht gibt es immer eine Schnittgerade der beiden Ebenen. Diese wäre dann die Drehachse. Ausnahme ist allerdings wenn das 2te Exemplar um 180° zur ersten Situtation verdreht ist, heißt es hätte die gleiche Ebene (da ja nur 180° gedreht) wie das 2te Exemplar aus erster Situation und somit auch die gleiche Drehachse. Aber eben trotzdem eine andere Position im Raum. Allerdings beträfe diese, nicht mögliche Rotation nur einzelne Fälle (und keine größeren Bereiche) da schon bei nem minimal anderen Winkel wie 180° die Drehung möglich ist. Für ein einzelnes Ereignis ist die Warscheinlichkeit sowiso gegen Null, müsste deshalb egal sein. Bin mir nicht ganz sicher ob ich mit obiger Aussage ganz richtig liege. Und das erklärt natürlich auch noch nicht die unsymetrische Verteilung in der geposteten Beispieldatei. zu_2: Ich bin verdammt froh hier ein so gutes Wissen bereitgestellt zu bekommen . Denn ich Arbeite jetzt seit drei Tagen mit VBA in Inventor und mir fehlen einfach noch die Kentnisse darüber. Gibt es nicht eine Möglichkeit die verdrehte Matrize:
Code: Call oMatrix.SetToRotation(Winkel, Drehvektor, Drehpunkt(0, 0, 0))
unter einer neuen Matrix zu speichern, welche man dann erneut drehen könnte? Ich habe mich den ganzen Vormittag darin versucht, aber habs nicht geschaft.zu_3: so ein Drehvektor der die Lage im Raum beschreibt wäre eine feine Sache , und würde das Problem wahrscheinlich lösen. Bin leider nicht fündig Geworden. Das die Erzeugung von zufälligen Poren und Rissen noch weit von der Realität entfernt ist, ist mir schon bewusst. Aber ein 2D zu 3D zusammenhang der Simulationen lässt sich hoffentlich trotzdem daraus ableiten. Ein noch größeres Problem bei VPS-W ist, dass man wohl davon ausgehen muss, dass es eine große Menge noch kleinerer Risse (zu klein für die Mikroskopaufnahmen) im Material gibt. Und durch diese fehlende Information die Simulation verfältscht wird. Danke, bin gerade aber erst in der Mitte des Studiums, sollte ich wirklich mal eine Doktorarbeit schreiben wäre das eine Überlegung wert. Bisher liegt das aber noch weit in den Sternen Ein Schönes Wochenende, Gruß Gebhard ------------------ Never Touch a Running System Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GeboWaz Mitglied
Beiträge: 7 Registriert: 13.01.2009 Autodesk Inventor 11 (Dateiversion 11.3.0.39100)
|
erstellt am: 21. Jan. 2009 14:50 <-- editieren / zitieren --> Unities abgeben:
Heureka - ich hab's Hallo zusammen, ich denke ich habe es nun endlich geschafft eine zufällige, statistisch homogene Drehung von Körper zu erzeugen. Zumindest sieht das Ergebnis so aus, was natürlich noch keien 100% sicherheit der Richtigkeit dieser Annahme gibt. Aber ich werde hier mal den VBA-Code und das Modell posten: Code: Public Sub AddOccurrence_Zufallsrotation() 'Anzahl der Körper: Const Anz As Integer = 1500 'Berechnug von Pi: Dim pi As Double pi = Atn(-1) * 4 Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition Dim oTG As TransientGeometry Set oTG = ThisApplication.TransientGeometry Dim oMatrix As Matrix Set oMatrix = oTG.CreateMatrix For i = 1 To Anz 'ein Vektor soll zufällig auf die Oberfläche einer Einheitskugel (r=1) zeigen. 'Dabei ist zu beachten das nicht sein Winkel zufällig sein soll, sonder das 'Zeigen auf einen bestimmten punkt auf der Oberfläche. Wie die Oberfläche eines 'Kugelausschnitt dabei von der x-Koordinate des Vektors (und somit auch von seinem 'Winkel) abhängig ist kann man auf: http://www.matheplanet.com/default3.html?call=article.php?sid=413&ref=http%3A%2F%2Fwww.google.de%2Fsearch%3Fhl%3Dde%26client%3Dfirefox-a%26rls%3Dorg.mozilla%3Ade%3Aofficial%26hs%3D Izc%26sa%3DX%26oi%3Dspell%26resnum%3D0%26ct%3Dresult%26cd%3D1%26q%3Dkugelabschnitt%2Boberfl%25C3%25A4che%26spell%3D1 'nachlesen unter "Mantel einer Kugelschicht". 'Zuerst soll nun die Zufällige x-Koordinate (hier pX) erzeugt werden: pX = 2 * Rnd() - 1 'da die Rotationsmatrix in Inventor auf dem Prinzip der Kardan-Winkel beruht, 'siehe: http://www.itm.uni-stuttgart.de/courses/madyn/Merkblaetter/pdf/M08.pdf 'Zufällige Verteilung um den Winkel Alpha erhält man durch: a = Rnd() * pi * 2 'da bei Beta nun nicht der Winkel Zufällig sein soll sondern die x-Koordinate (pX) 'des Vektors (welcher die neue Ausrichtung angibt), muss Beta über die arcsin-Funktion 'zurück berechnet werden. Diese Funtion wird über den Umweg der Arctan-Funktion berechnet, 'da diese in VBA verfügbar ist. b = Atn(pX / Sqr(-pX * pX + 1)) 'der Winkel Gamma soll nun wieder rein Zufällig sein c = Rnd() * pi * 2 sinA = Sin(a) cosA = Cos(a) sinB = Sin(b) cosB = Cos(b) sinC = Sin(c) cosC = Cos(c) 'Berechnug der einzelnen Zellwerte für die Rotationsmatrix nach dem Prinzip der Kardan-Winkel oMatrix.Cell(1, 1) = cosB * cosC oMatrix.Cell(1, 2) = -cosB * sinC oMatrix.Cell(1, 3) = sinB oMatrix.Cell(2, 1) = cosA * sinC + sinA * sinB * cosC oMatrix.Cell(2, 2) = cosA * cosC - sinA * sinB * sinC oMatrix.Cell(2, 3) = -sinA * cosB oMatrix.Cell(3, 1) = sinA * sinC - cosA * sinB * cosC oMatrix.Cell(3, 2) = sinA * cosC + cosA * sinB * sinC oMatrix.Cell(3, 3) = cosA * cosB Dim oOcc As ComponentOccurrence Set oOcc = oAsmCompDef.Occurrences.Add("D:\Random_Materials_VPS_W\Poren_und_Risse\test.ipt", oMatrix) Next i End Sub
Nochmals Danke für Eure Hilfe, Gruß Gebhard ------------------ Never Touch a Running System Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|