| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: 3D-Solids aus Oberfächen extrudieren (2899 mal gelesen)
|
pfitzepfatze Mitglied
Beiträge: 23 Registriert: 21.01.2005 AutoCAD 2005 Civil 3D Adesk Revit Bentley Microstation V8 Bentley InRoads Suite Bentley TriForma + Architecture Speedikon MS Venturis TRICAD Mantra4D NavisWorks
|
erstellt am: 09. Feb. 2005 12:02 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe VBA'ler, ich möchte aus zwei übereinander liegenden 3D-Oberflächen, die aus Dreiecken vermascht sind (Geländemodelle) Volumenkörper erstellen (siehe Bildanhang). Das Problem besteht aber darin, dass der Abstand zum Extrudieren nicht konstant ist, sondern immer die darunter liegenden Punkte als Eckpunkte verwendet werden sollen. Geht sowas mit VB überhaupt? Ich weiß, dass die Geländemodell-Software (Civil3D) diese Prismenmethode zum Berechnen von Volumen zwischen 2 Oberflächen verwendet, nur wird dann das Volumen nicht grafisch dargestellt - aber genau das brauche ich. Ich will aber nicht jedes Dreieck von Hand extrudieren. Hat vielleicht jemand eine Idee oder einen Ansatz? Vielen DANK!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 09. Feb. 2005 20:34 <-- editieren / zitieren --> Unities abgeben: Nur für pfitzepfatze
Hallo pfitzepfatze! VBA und 3D ist schon eine Sache für sich. Ich bin gerade dabei, mir kleine Programme im Bezug auf Volumenkörper zu schreiben. Die AutoCAD Hilfe gibt schon oft einiges an Anregungen hervor. Ich hab Dir mal folgenden Add3DMesh Example Code kopiert, der unter VBA das was die Befehle 3dnetz oder _3dmesh unter AutoCAD erzeugen, ein Polygonnetz. Kopier Dir diesen mal in ein leeres Modul und führ es aus. Ich hab es mal getestet und die Ergebnisse kannst Du in den Bildchen sehen (hoffe das es das ist was Du suchst). Sub Example_Add3DMesh() ' This example creates a 4 X 4 polygonmesh in model space. Dim meshObj As AcadPolygonMesh Dim mSize, nSize, count As Integer Dim points(0 To 47) As Double ' Create the matrix of points points(0) = 0: points(1) = 0: points(2) = 0 points(3) = 2: points(4) = 0: points(5) = 1 points(6) = 4: points(7) = 0: points(8) = 0 points(9) = 6: points(10) = 0: points(11) = 1 points(12) = 0: points(13) = 2: points(14) = 0 points(15) = 2: points(16) = 2: points(17) = 1 points(18) = 4: points(19) = 2: points(20) = 0 points(21) = 6: points(22) = 2: points(23) = 1 points(24) = 0: points(25) = 4: points(26) = 0 points(27) = 2: points(28) = 4: points(29) = 1 points(30) = 4: points(31) = 4: points(32) = 0 points(33) = 6: points(34) = 4: points(35) = 0 points(36) = 0: points(37) = 6: points(38) = 0 points(39) = 2: points(40) = 6: points(41) = 1 points(42) = 4: points(43) = 6: points(44) = 0 points(45) = 6: points(46) = 6: points(47) = 0 mSize = 4: nSize = 4 ' creates a 3Dmesh in model space Set meshObj = ThisDrawing.ModelSpace.Add3DMesh(mSize, nSize, points) ' Change the viewing direction of the viewport to better see the cylinder Dim NewDirection(0 To 2) As Double NewDirection(0) = -1: NewDirection(1) = -1: NewDirection(2) = 1 ThisDrawing.ActiveViewport.direction = NewDirection ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport ZoomAll End Sub Gruß
Dirk [Diese Nachricht wurde von Dirk.B am 09. Feb. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pfitzepfatze Mitglied
Beiträge: 23 Registriert: 21.01.2005 AutoCAD 2005 Civil 3D Adesk Revit Bentley Microstation V8 Bentley InRoads Suite Bentley TriForma + Architecture Speedikon MS Venturis TRICAD Mantra4D NavisWorks
|
erstellt am: 10. Feb. 2005 15:30 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank Dirk, die 3D-Oberflächen (Polygonnetz - 3Dmesh) hatte ich bereits erstellt. Ich wollte eigentlich einen Schritt weiter gehen und echte Körper daraus entwickeln, d.h. geschlossene 3D-Objekte als Prismen oder ähnliches. Aber ich habe schon beim Probieren festgestellt, dass ich wahrscheinlich mehr will als die Software hergibt, da sich die Volumenkörper nicht aus den gängigen 3DSolids erzeugen lassen. Der zu erstellende Körper, der durch Erweiterung eines einzelnen Dreiecks nach unten bis zum darunterliegenden Dreieck entstehen soll, hätte keine parallelen Flächen, da die beiden Polygonnetze nicht parallel verlaufen. Ist ja in der Natur auch nicht so, wenn es sich bspw. um 2 verschiedene Erdschichten handelt, die übereinander liegen. Da ist nix parallel. Aber Volumen wären trotzdem gut für Massenberechnung, Verschneidung und Kollisionsbetrachtung. Danke erstmal. Vielleicht kommt mir noch eine Idee ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
scj Mitglied
Beiträge: 554 Registriert: 09.08.2001
|
erstellt am: 14. Feb. 2005 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für pfitzepfatze
Wenn's nicht unbedingt VBA sein muss... In AutoLISP habe ich mir Programme geschrieben, die den unter einer 3D-Fläche liegenden Projektionskörper ermittelt. Bei Bedarf melde dich mal über www.black-cad.de Beste Grüße aus der Rhön Jochen [Diese Nachricht wurde von scj am 14. Feb. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pfitzepfatze Mitglied
Beiträge: 23 Registriert: 21.01.2005 AutoCAD 2005 Civil 3D Adesk Revit Bentley Microstation V8 Bentley InRoads Suite Bentley TriForma + Architecture Speedikon MS Venturis TRICAD Mantra4D NavisWorks
|
erstellt am: 17. Feb. 2005 09:48 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, das schaut ja sehr schön aus. Wenn es nun keine flache Projektionsfläche sondern eine andere 3D-Fläche sein soll, auf die der Körper erweitert werden soll, wird's recht schwierig wie ich festgestellt habe. Einige Applikationen bieten immerhin die Funktionalität für beliebige 3D-Objekte im Gegensatz zu den einfachen Solids aus AutoCAD (z.B. Triforma für Microstation). Vielleicht kann ich damit irgendwas erreichen. Wie gesagt, wenn die Civil-Programme das Volumen zwischen 2 Geländemodellen berechnen können, muss es doch möglich sein, genau dieses Volumen als Grafik darzustellen.
------------------ --------------------------- Viele Grüße, Markus ------------------------------------- ----------------------------------------------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
scj Mitglied
Beiträge: 554 Registriert: 09.08.2001
|
erstellt am: 17. Feb. 2005 14:25 <-- editieren / zitieren --> Unities abgeben: Nur für pfitzepfatze
|
pfitzepfatze Mitglied
Beiträge: 23 Registriert: 21.01.2005 AutoCAD 2005 Civil 3D Adesk Revit Bentley Microstation V8 Bentley InRoads Suite Bentley TriForma + Architecture Speedikon MS Venturis TRICAD Mantra4D NavisWorks
|
erstellt am: 17. Feb. 2005 16:53 <-- editieren / zitieren --> Unities abgeben:
12 POINTS go to JOCHEN !!! Genau das war des Rätsels Lösung. Manchmal kann es so einfach sein aber man will einfach nicht drauf kommen... Ich habe beide Oberflächen mit gleichem Abstand extrudiert und danach voneinander subtrahiert. Genial einfach - einfach genial. Allerdings war es mit einfachen Solids tatsächlich nicht möglich, sondern es sind Zellen entstanden. Aber Hauptsache Volumen ;-) Danke an alle. ------------------ --------------------------- Viele Grüße, Markus ------------------------------------- ----------------------------------------------- [Diese Nachricht wurde von pfitzepfatze am 17. Feb. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |