Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  3D-Solids aus Oberfächen extrudieren

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:  3D-Solids aus Oberfächen extrudieren (2899 mal gelesen)
pfitzepfatze
Mitglied



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

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 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


draht.jpg


render.jpg

 
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


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 09. Feb. 2005 20:34    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 pfitzepfatze 10 Unities + Antwort hilfreich


Act3DMesh_netz.jpg


Act3DMesh_render.jpg

 
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



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

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 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

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
 


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

Beiträge: 554
Registriert: 09.08.2001

erstellt am: 14. Feb. 2005 12:57    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 pfitzepfatze 10 Unities + Antwort hilfreich


3dteil.jpg

 
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



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

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 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

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
 


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

Beiträge: 554
Registriert: 09.08.2001

erstellt am: 17. Feb. 2005 14:25    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 pfitzepfatze 10 Unities + Antwort hilfreich

Ich würde empfehlen, aus der "unteren" Begrenzungsfläche ebenfalls einen Projektionskörper zu erzeugen und diesen vom ersten Projektionskörper zu subtrahieren - oder verstehe ich Deinen Projektionsbegriff falsch?
Mit besten Grüßen aus der Rhön
Jochen www.black-cad.de

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

pfitzepfatze
Mitglied



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

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 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


volumen_draht.jpg


volumen_render.jpg

 
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

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