Projekt 1: Quader-Darstellung mit CubeVertices
Projekt 2: DrawText muß korrekt eingebunden werden
.
Projekt 1: Quader-Darstellung mit CubeVertices

Imports Microsoft.DirectX.Direct3D
Public Class Form1
Dim _dev As Device
Dim _pP As PresentParameters
Dim _angel As Single = 0
Sub initialisieren()
_pP = New PresentParameters
_pP.Windowed = True
_pP.SwapEffect = SwapEffect.Discard
_pP.EnableAutoDepthStencil = True
_pP.AutoDepthStencilFormat = DepthFormat.D16
_dev = New Device(0, DeviceType.Hardware, Panel1.Handle, CreateFlags.SoftwareVertexProcessing, _pP)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
initialisieren()
Timer1.Enabled = True
End Sub
Sub render_ohne_licht()
_dev.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, Color.Aquamarine, 1, 0)
_dev.Transform.Projection = Matrix.PerspectiveFovLH(Math.PI / 4, 1, 1, 10)
_dev.Transform.View = Matrix.LookAtLH(New Vector3(0, 0, 5), New Vector3(), New Vector3(0, 1, 0))
_dev.RenderState.Lighting = False
_dev.BeginScene()
_dev.Transform.World = Matrix.RotationYawPitchRoll(_angel, _angel, _angel)
_angel += 0.2
Dim c As New CubeVertices
_dev.VertexFormat = CustomVertex.PositionColored.Format
_dev.DrawUserPrimitives(PrimitiveType.TriangleList, c.NumberOfPrimitives, c.GetPositionNormalColored)
_dev.EndScene()
_dev.Present()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
render_ohne_licht()
End Sub
End Class
Imports Microsoft.DirectX.Direct3D
Public Class CubeVertices
' Methods
Public Function GetPositionColored() As CustomVertex.PositionColored()
Dim verts As CustomVertex.PositionColored() = New CustomVertex.PositionColored(36) {}
Dim colorCount As Integer = -1
Dim vertCounter As Integer
For vertCounter = 0 To 35
If ((vertCounter Mod 6) = 0) Then
colorCount += 1
End If
verts(vertCounter) = New CustomVertex.PositionColored(CubeVertices.m_DataTriangle(vertCounter, 0), CubeVertices.m_DataTriangle(vertCounter, 1), CubeVertices.m_DataTriangle(vertCounter, 2), Me.m_Colors(colorCount).ToArgb)
Next vertCounter
Return verts
End Function
Public Function GetPositionNormalColored() As CustomVertex.PositionNormalColored()
Dim verts As CustomVertex.PositionNormalColored() = New CustomVertex.PositionNormalColored(36) {}
Dim colorCount As Integer = -1
Dim vertCounter As Integer
For vertCounter = 0 To 35
If ((vertCounter Mod 6) = 0) Then
colorCount += 1
End If
verts(vertCounter) = New CustomVertex.PositionNormalColored(CubeVertices.m_DataTriangle(vertCounter, 0), CubeVertices.m_DataTriangle(vertCounter, 1), CubeVertices.m_DataTriangle(vertCounter, 2), CubeVertices.m_DataNormals((vertCounter \ 3), 0), CubeVertices.m_DataNormals((vertCounter \ 3), 1), CubeVertices.m_DataNormals((vertCounter \ 3), 2), Me.m_Colors(colorCount).ToArgb)
Next vertCounter
Return verts
End Function
' Properties
Public ReadOnly Property NumberOfPrimitives() As Integer
Get
Return 12
End Get
End Property
Public ReadOnly Property NumberOfVertices() As Integer
Get
Return 36
End Get
End Property
' Fields
Private m_Colors As Color() = New Color() {Color.White, Color.Blue, Color.Red, Color.Yellow, Color.Green, Color.Purple}
Private Shared ReadOnly m_DataNormals As Single(,) = New Single(,) {{0.0!, 0.0!, 1.0!}, {0.0!, 0.0!, 1.0!}, {0.0!, 0.0!, -1.0!}, {0.0!, 0.0!, -1.0!}, {0.0!, 1.0!, 0.0!}, {0.0!, 1.0!, 0.0!}, {0.0!, -1.0!, 0.0!}, {0.0!, -1.0!, 0.0!}, {-1.0!, 0.0!, 0.0!}, {-1.0!, 0.0!, 0.0!}, {1.0!, 0.0!, 0.0!}, {1.0!, 0.0!, 0.0!}}
Private Shared ReadOnly m_DataTexture As Single(,) = New Single(,) {{0.0!, 0.0!}, {0.0!, 1.0!}, {1.0!, 0.0!}, {0.0!, 1.0!}, {1.0!, 1.0!}, {1.0!, 0.0!}, {0.0!, 0.0!}, {1.0!, 0.0!}, {0.0!, 1.0!}, {0.0!, 1.0!}, {1.0!, 0.0!}, {1.0!, 1.0!}, {0.0!, 0.0!}, {1.0!, 1.0!}, {0.0!, 1.0!}, {0.0!, 0.0!}, {1.0!, 0.0!}, {1.0!, 1.0!}, {0.0!, 0.0!}, {0.0!, 1.0!}, {1.0!, 1.0!}, {0.0!, 0.0!}, {1.0!, 1.0!}, {1.0!, 0.0!}, {0.0!, 0.0!}, {1.0!, 1.0!}, {1.0!, 0.0!}, {0.0!, 1.0!}, {1.0!, 1.0!}, {0.0!, 0.0!}, {0.0!, 0.0!}, {1.0!, 0.0!}, {1.0!, 1.0!}, {0.0!, 1.0!}, {0.0!, 0.0!}, {1.0!, 1.0!}}
Private Shared ReadOnly m_DataTriangle As Single(,) = New Single(,) {{-1.0!, 1.0!, 1.0!}, {-1.0!, -1.0!, 1.0!}, {1.0!, 1.0!, 1.0!}, {-1.0!, -1.0!, 1.0!}, {1.0!, -1.0!, 1.0!}, {1.0!, 1.0!, 1.0!}, {-1.0!, 1.0!, -1.0!}, {1.0!, 1.0!, -1.0!}, {-1.0!, -1.0!, -1.0!}, {-1.0!, -1.0!, -1.0!}, {1.0!, 1.0!, -1.0!}, {1.0!, -1.0!, -1.0!}, {-1.0!, 1.0!, 1.0!}, {1.0!, 1.0!, -1.0!}, {-1.0!, 1.0!, -1.0!}, {-1.0!, 1.0!, 1.0!}, {1.0!, 1.0!, 1.0!}, {1.0!, 1.0!, -1.0!}, {-1.0!, -1.0!, 1.0!}, {-1.0!, -1.0!, -1.0!}, {1.0!, -1.0!, -1.0!}, {-1.0!, -1.0!, 1.0!}, {1.0!, -1.0!, -1.0!}, {1.0!, -1.0!, 1.0!}, {-1.0!, 1.0!, 1.0!}, {-1.0!, -1.0!, -1.0!}, {-1.0!, -1.0!, 1.0!}, {-1.0!, 1.0!, -1.0!}, {-1.0!, -1.0!, -1.0!}, {-1.0!, 1.0!, 1.0!}, {1.0!, 1.0!, 1.0!}, {1.0!, -1.0!, 1.0!}, {1.0!, -1.0!, -1.0!}, {1.0!, 1.0!, -1.0!}, {1.0!, 1.0!, 1.0!}, {1.0!, -1.0!, -1.0!}}
Private Shared ReadOnly m_DataVertices As Single(,) = New Single(,) {{-1.0!, -1.0!, -1.0!}, {-1.0!, -1.0!, 1.0!}, {-1.0!, 1.0!, -1.0!}, {-1.0!, 1.0!, 1.0!}, {1.0!, -1.0!, -1.0!}, {1.0!, -1.0!, 1.0!}, {1.0!, 1.0!, -1.0!}, {1.0!, 1.0!, 1.0!}}
End Class
Module GlobaleVariablen
Public Const C000 As Long = 16711680 '//Red
Public Const C001 As Long = 65280 '//Green
Public Const C100 As Long = 255 '//Blue
Public Const C101 As Long = 16711935 '//Magenta
Public Const C011 As Long = 65535 '//Yellow
Public Const C010 As Long = 16776960 '//Cyan
Public Const C110 As Long = 16777215 '//White
Public Const C111 As Long = 8421631 '//Orange
End Module
Projekt 2: DrawText muß korrekt eingebunden werden
Achtung: Sehr wichtiger Tip für VB2005/VB2008/VB.NET-User:
DrawText funktioniert nur dann wenn die DirectX-Datei Version 1.0.2911.0 eingebunden wird......
Ansonsten wird die Fehlermeldung angezeigt:
Error 1 'DrawText' is
ambiguous because multiple kinds of members with this name exist in
class 'Microsoft.DirectX.Direct3D.Font.....
Wer
mal mit "DrawText ambiguous vb" gegoogelt hat, der stellt
fest, daß hier über 948 Einträge angezeigt werden!

3D-CAD-Viewer
3DVBVIEW als Anwendung und mit Quellcode für
VB 6.0 und
VB.NET Programmierer
Der CAD-Viewer 3DVBVIEW bietet folgende Features in der Code-Grundversion:
Modell-Übernahme durch DXF- und STL-Schnittstelle aus CAD-Systemen wie AutoCAD, Solid Edge, Solid Works, Inventor, Catia, Pro/E
einzelne Baugruppen können mit einer STL-Datei zusammengefügt werden und sind ein- und ausblendbar
ASCII-Schnittstelle mit neutralem Format mit extrem schneller Abspeicherung von großen Modellen
Editor für Knotenkoordinaten und Triangles um die Geometrie der Modelle zu verändern
das 3D-Modell kann beliebig in Echtzeit im Raum gedreht, skaliert und plaziert werden
anwenderfreundliche Benutzeroberfläche mit Dialogboxen, Editor, TreeViews und Iconleisten
Farben- und Lichteffekte können eingestellt werden, Flächennormalen werden über das Kreuzprodukt geprüft und gedreht
Texte in verschiedenen Größen können als Markups hinzugefügt werden (Zusatz-Code MARKUP)
Abstände oder Durchmesser können exakt nachgemessen werden (Zusatz-Code MESSEN)
Berührungskontakt-Algorithmus um z.B. Durchdringungen von Baugruppen zu berechnen (Zusatz-Code KONTAKT)
gesamter Quellcode in VB 6.0 oder VB.NET und kann lizenzfrei in eigene Entwicklungen eingesetzt werden
SDK-Ersatz für VB-Anwender die kein C können
Warum soll ich diesen Code in VB 6.0 oder VB.NET kaufen
um ca. 2-3 Jahre Entwicklungszeit zu sparen
um nicht C# oder C++ lernen zu müssen
CAD-Modelle die aus verschiedenen CAD-Systemen als STL-Modell importiert wurden:

Darstellung einer Turbine aus dem CAD-System Inventor mit 3 Baugruppen bzw. aus 3 zusammengefügten STL-ASCII-Dateien

Darstellung eines Schalen-Flächenmodells in einem ASCII-Format (kann mit jedem Editor weiterbearbeitet werden) mit 14 Elementgruppen

Darstellung einer Baugruppe mit Text-Markups sowohl im Bild- als auch im Weltkoordinatensystem plaziert

Bestellung
Quellcode Grundversion für Entwickler und Programmierer
3DVBVIEWER für VB.NET / DirectX9 für € 49,00
oder Visual Basic 6.0 / OpenGL für € 39,00
beide VB.NET / DirectX9 + VB6.0 / OpenGL für € 69,00
Neu: Erweitern Sie die Grundversion von 3DVBVIEW mit
folgenden Code Erweiterungen (nur für VB.NET):
Zusatz-Code Kontakt für € 39,00
Code eines Berührungskontakt-Algorithmus um z.B. Kollisionen,
Durchdringungen oder Schnittpunkte zwischen einzelnen Baugruppen zu ermitteln.
Zusatz-Code MESSEN für € 39,00
Abstände oder Durchmesser können exakt interaktiv nachgemessen werden
Zusatz-Code MARKUP für € 39,00
Text-Markups mit beliebigen Texten und Fonts können dem 3D-Modell hinzugefügt werden. Plazierung
der Texte sowohl im Bild- als auch im Weltkoordinatensystem
Zusatz-Code ANIMATION für € 39,00
Erstellen Sie Ihre eigenen Animationen indem Sie einzelne Baugruppen drehen und bewegen.
(siehe Roboterbeispiel)
Preise zzgl. 19% MwSt
Bestellung per Email
Homepage von 3DVBVIEW
Tutorial für VB2005/VB2008 und DirectX9
kommerzielle CAE-Anwendung mit Codes von 3DVBVIEW