3D Programm

  • Hi,

    Hier möchte ich mein neues 3D Programm vorstellen.

    Ich hoffe, es funktioniert und gefällt.

    Verbesserungsvorschläge werden gerne entgegen genommen.

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode",1)
    Opt("MouseCoordMode",2)
    Global $iWidth = @DesktopWidth
    Global $iHeight = @DesktopHeight
    Global $iWidthmenu = 300
    Global $iHeightmenu = 300
    Global $iWidthhilfe = 500
    Global $iHeighthilfe = 300
    Global $alpha = 0.5
    Global $nullpunktx = $iWidth/2
    Global $nullpunkty = $iHeight/2
    Global $feldlaengex = 200
    Global $feldlaengey = 200
    Global $feldlaengez = 200
    Global $zoom = 1
    Global $ansicht = 0.5
    Global $gitter = 1
    Global $wuerfelanzahl = 1
    Global $wuerfelkante1X1[99] = [0]
    Global $wuerfelkante1Y1[99] = [0]
    Global $wuerfelkante1X2[99] = [0]
    Global $wuerfelkante1Y2[99] = [0]
    Global $wuerfelkante2X1[99] = [0]
    Global $wuerfelkante2Y1[99] = [0]
    Global $wuerfelkante2X2[99] = [0]
    Global $wuerfelkante2Y2[99] = [0]
    Global $wuerfelkante3X1[99] = [0]
    Global $wuerfelkante3Y1[99] = [0]
    Global $wuerfelkante3X2[99] = [0]
    Global $wuerfelkante3Y2[99] = [0]
    Global $wuerfelkante4X1[99] = [0]
    Global $wuerfelkante4Y1[99] = [0]
    Global $wuerfelkante4X2[99] = [0]
    Global $wuerfelkante4Y2[99] = [0]
    Global $arkoordX[99] = [0]
    Global $arkoordY[99] = [0]
    Global $arkoordZ[99] = [0]
    Global $arwuerfelwidth[99] = [0]
    Global $arwuerfelheight[99] = [0]
    Global $arwuerfeldepth[99] = [0]
    Global $zahl1 = 0

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $hWnd = GUICreate("3D",$iWidth,$iHeight,0,-1,$WS_POPUPWINDOW)
    Global $contextmenu = GUICtrlCreateContextMenu()
    Global $datei = GUICtrlCreateMenu("Datei",$contextmenu)
    Global $neu = GUICtrlCreateMenuItem("Neu",$datei,$contextmenu)
    Global $oeffnen = GUICtrlCreateMenuItem("Öffnen",$datei)
    Global $speichern = GUICtrlCreateMenuItem("Speichern",$datei)
    Global $beenden = GUICtrlCreateMenuItem("Beenden",$datei)
    Global $bearbeiten = GUICtrlCreateMenu("Bearbeiten",$contextmenu)
    Global $rueckgaengig = GUICtrlCreateMenuItem("---",$bearbeiten)
    Global $einfuegen = GUICtrlCreateMenu("Einfügen",$contextmenu)
    Global $koerper = GUICtrlCreateMenuItem("Körper",$einfuegen)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hilfemenu = GUICtrlCreateMenu("?",$contextmenu)
    Global $hilfe = GUICtrlCreateMenuItem("Hilfe",$hilfemenu)
    GUISetState(@SW_SHOW)
    GUISetOnEvent(-3,"_exit")
    GUICtrlSetOnEvent($beenden,"_exit")
    GUICtrlSetOnEvent($neu,"_neu")
    GUICtrlSetOnEvent($oeffnen,"_oeffnen")
    GUICtrlSetOnEvent($speichern,"_speichern")
    GUICtrlSetOnEvent($koerper,"_einfuegen")
    GUICtrlSetOnEvent($hilfe,"_hilfe")

    [/autoit] [autoit][/autoit] [autoit]

    Global $hWndmenu = GUICreate("Körper einfügen",$iWidthmenu,$iHeightmenu,0,-1,-1,-1,$hWnd)
    Global $tabkoerper = GUICtrlCreateTab(0,0,$iWidthmenu,$iHeightmenu - 40)
    GUICtrlCreateTabItem("Würfel")
    Global $wuerfelcheckbox = GUICtrlCreateCheckbox("",10,30,20,20)
    GUICtrlCreateLabel("Würfelnummer: ",120,35,80,20)
    Global $wuerfelnummer = GUICtrlCreateInput($wuerfelanzahl,200,35,40,20)
    Global $wuerfelnummerminus = GUICtrlCreateButton("-",250,35,15,20)
    Global $wuerfelnummerplus = GUICtrlCreateButton("+",267,35,15,20)
    GUICtrlCreateLabel("(x/y/z) : (",$iWidthmenu/20,75,50,20)
    Global $koordX = GUICtrlCreateInput("x",$iWidthmenu/20 + 50,75,40,20)
    GUICtrlCreateLabel("/",$iWidthmenu/20 + 95,75,10,20)
    Global $koordY = GUICtrlCreateInput("y",$iWidthmenu/20 + 110,75,40,20)
    GUICtrlCreateLabel("/",$iWidthmenu/20 + 155,75,10,20)
    Global $koordZ = GUICtrlCreateInput("z",$iWidthmenu/20 + 170,75,40,20)
    GUICtrlCreateLabel(")",$iWidthmenu/20 + 215,75,10,20)
    GUICtrlCreateLabel("Width: ",$iWidthmenu/20,115,40,20)
    Global $wuerfelwidth = GUICtrlCreateInput("Width",$iWidthmenu/20 + 45,115,40,20)
    GUICtrlCreateLabel("Height: ",$iWidthmenu/20,155,40,20)
    Global $wuerfelheight = GUICtrlCreateInput("Height",$iWidthmenu/20 + 45,155,40,20)
    GUICtrlCreateLabel("Depth: ",$iWidthmenu/20,195,40,20)
    Global $wuerfeldepth = GUICtrlCreateInput("Depth",$iWidthmenu/20 + 45,195,40,20)

    [/autoit] [autoit][/autoit] [autoit]

    Global $okbutton = GUICtrlCreateButton("Hinzufügen",$iWidthmenu/3 - 50,$iHeightmenu - 35,100,30)
    GUISetOnEvent(-3,"_hide")
    GUICtrlSetOnEvent($wuerfelnummerminus,"_wuerfelnummerminus")
    GUICtrlSetOnEvent($wuerfelnummerplus,"_wuerfelnummerplus")
    GUICtrlSetOnEvent($okbutton,"_wuerfelzeichnen")

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth,$iHeight,$hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $hPenrot = _GDIPlus_PenCreate(0xFFFF0000)
    $hPengruen = _GDIPlus_PenCreate(0xFF00FF00)
    $hPenblau = _GDIPlus_PenCreate(0xFF0000FF)
    $hBrushgruen = _GDIPlus_BrushCreateSolid(0xFF00FF00)

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("_draw",10)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    WEnd
    Func _draw()
    _GDIPlus_GraphicsClear($hBuffer,0xFF000000)
    If $gitter = 1 Then
    _GDIPlus_GraphicsDrawLine($hBuffer,$nullpunktx + Cos($alpha)*$feldlaengex*$zoom,$nullpunkty - Sin($alpha)*$feldlaengey*$zoom*$ansicht,$nullpunktx + Cos($alpha + 3.141)*$feldlaengex*$zoom,$nullpunkty - Sin($alpha + 3.141)*$feldlaengey*$zoom*$ansicht,$hPengruen)
    _GDIPlus_GraphicsDrawLine($hBuffer,$nullpunktx + Cos($alpha+1.5705)*$feldlaengex*$zoom,$nullpunkty - Sin($alpha+1.5705)*$feldlaengey*$zoom*$ansicht,$nullpunktx + Cos($alpha + 4.7115)*$feldlaengex*$zoom,$nullpunkty - Sin($alpha + 4.7115)*$feldlaengey*$zoom*$ansicht,$hPenblau)
    _GDIPlus_GraphicsDrawLine($hBuffer,$nullpunktx,$nullpunkty + $feldlaengez*(1-$ansicht)*$zoom,$nullpunktx,$nullpunkty - $feldlaengez*(1-$ansicht)*$zoom,$hPenrot)
    EndIf
    For $i = 1 To $wuerfelanzahl
    $wuerfelkante1X1[$i] = $nullpunktx + Cos($alpha)*$arkoordX[$i]*$zoom + Cos($alpha + 1.5705)*$arkoordZ[$i]*$zoom
    $wuerfelkante1Y1[$i] = $nullpunkty - Sin($alpha)*$arkoordX[$i]*$ansicht*$zoom - Sin($alpha + 1.5705)*$arkoordZ[$i]*$ansicht*$zoom - $arkoordY[$i]*(1-$ansicht)*$zoom
    $wuerfelkante1X2[$i] = $wuerfelkante1X1[$i]
    $wuerfelkante1Y2[$i] = $wuerfelkante1Y1[$i] + $arwuerfelheight[$i]*(1-$ansicht)*$zoom
    $wuerfelkante2X1[$i] = $wuerfelkante1X1[$i] + Cos($alpha)*$arwuerfelwidth[$i]*$zoom
    $wuerfelkante2Y1[$i] = $wuerfelkante1Y1[$i] - Sin($alpha)*$arwuerfelwidth[$i]*$ansicht*$zoom
    $wuerfelkante2X2[$i] = $wuerfelkante2X1[$i]
    $wuerfelkante2Y2[$i] = $wuerfelkante2Y1[$i] + $arwuerfelheight[$i]*(1-$ansicht)*$zoom
    $wuerfelkante3X1[$i] = $wuerfelkante1X1[$i] + Cos($alpha)*$arwuerfelwidth[$i]*$zoom + Cos($alpha + 1.5705)*$arwuerfeldepth[$i]*$zoom
    $wuerfelkante3Y1[$i] = $wuerfelkante1Y1[$i] - Sin($alpha)*$arwuerfelwidth[$i]*$ansicht*$zoom - Sin($alpha + 1.5705)*$arwuerfeldepth[$i]*$ansicht*$zoom
    $wuerfelkante3X2[$i] = $wuerfelkante1X2[$i] + Cos($alpha)*$arwuerfelwidth[$i]*$zoom + Cos($alpha + 1.5705)*$arwuerfeldepth[$i]*$zoom
    $wuerfelkante3Y2[$i] = $wuerfelkante1Y2[$i] - Sin($alpha)*$arwuerfelwidth[$i]*$ansicht*$zoom - Sin($alpha + 1.5705)*$arwuerfeldepth[$i]*$ansicht*$zoom
    $wuerfelkante4X1[$i] = $wuerfelkante1X1[$i] + Cos($alpha + 1.5705)*$arwuerfeldepth[$i]*$zoom
    $wuerfelkante4Y1[$i] = $wuerfelkante1Y1[$i] - Sin($alpha + 1.5705)*$arwuerfeldepth[$i]*$ansicht*$zoom
    $wuerfelkante4X2[$i] = $wuerfelkante1X2[$i] + Cos($alpha + 1.5705)*$arwuerfeldepth[$i]*$zoom
    $wuerfelkante4Y2[$i] = $wuerfelkante1Y2[$i] - Sin($alpha + 1.5705)*$arwuerfeldepth[$i]*$ansicht*$zoom
    If $i <> GUICtrlRead($wuerfelnummer) Then
    $hPenwechsel = $hPengruen
    ElseIf $i = GUICtrlRead($wuerfelnummer) Then
    $hPenwechsel = $hPenrot
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If MouseGetPos(0) > $wuerfelkante1X1[$i] - 3 And MouseGetPos(0) < $wuerfelkante1X1[$i] + 1 And MouseGetPos(1) >= $wuerfelkante1Y1[$i] And MouseGetPos(1) <= $wuerfelkante1Y2[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If MouseGetPos(0) > $wuerfelkante2X1[$i] - 3 And MouseGetPos(0) < $wuerfelkante2X1[$i] + 1 And MouseGetPos(1) >= $wuerfelkante2Y1[$i] And MouseGetPos(1) <= $wuerfelkante2Y2[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If MouseGetPos(0) > $wuerfelkante3X1[$i] - 3 And MouseGetPos(0) < $wuerfelkante3X1[$i] + 1 And MouseGetPos(1) >= $wuerfelkante3Y1[$i] And MouseGetPos(1) <= $wuerfelkante3Y2[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If MouseGetPos(0) > $wuerfelkante4X1[$i] - 3 And MouseGetPos(0) < $wuerfelkante4X1[$i] + 1 And MouseGetPos(1) >= $wuerfelkante4Y1[$i] And MouseGetPos(1) <= $wuerfelkante4Y2[$i] Then
    $hPenwechsel = $hPenblau
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If MouseGetPos(0) > $wuerfelkante1X1[$i] And MouseGetPos(0) < $wuerfelkante2X1[$i] And MouseGetPos(1) > (($wuerfelkante2Y1[$i]-$wuerfelkante1Y1[$i])/($wuerfelkante2X1[$i]-$wuerfelkante1X1[$i]))*MouseGetPos(0)+$wuerfelkante1Y1[$i]-(($wuerfelkante2Y1[$i]-$wuerfelkante1Y1[$i])/($wuerfelkante2X1[$i]-$wuerfelkante1X1[$i]))*$wuerfelkante1X1[$i] - 3 And MouseGetPos(1) < (($wuerfelkante2Y1[$i]-$wuerfelkante1Y1[$i])/($wuerfelkante2X1[$i]-$wuerfelkante1X1[$i]))*MouseGetPos(0)+$wuerfelkante1Y1[$i]-(($wuerfelkante2Y1[$i]-$wuerfelkante1Y1[$i])/($wuerfelkante2X1[$i]-$wuerfelkante1X1[$i]))*$wuerfelkante1X1[$i] Then
    $hPenwechsel = $hPenblau
    ElseIf MouseGetPos(0) < $wuerfelkante1X1[$i] And MouseGetPos(0) > $wuerfelkante2X1[$i] And MouseGetPos(1) > (($wuerfelkante2Y1[$i]-$wuerfelkante1Y1[$i])/($wuerfelkante2X1[$i]-$wuerfelkante1X1[$i]))*MouseGetPos(0)+$wuerfelkante1Y1[$i]-(($wuerfelkante2Y1[$i]-$wuerfelkante1Y1[$i])/($wuerfelkante2X1[$i]-$wuerfelkante1X1[$i]))*$wuerfelkante1X1[$i] - 3 And MouseGetPos(1) < (($wuerfelkante2Y1[$i]-$wuerfelkante1Y1[$i])/($wuerfelkante2X1[$i]-$wuerfelkante1X1[$i]))*MouseGetPos(0)+$wuerfelkante1Y1[$i]-(($wuerfelkante2Y1[$i]-$wuerfelkante1Y1[$i])/($wuerfelkante2X1[$i]-$wuerfelkante1X1[$i]))*$wuerfelkante1X1[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If MouseGetPos(0) > $wuerfelkante2X1[$i] And MouseGetPos(0) < $wuerfelkante3X1[$i] And MouseGetPos(1) > (($wuerfelkante3Y1[$i]-$wuerfelkante2Y1[$i])/($wuerfelkante3X1[$i]-$wuerfelkante2X1[$i]))*MouseGetPos(0)+$wuerfelkante2Y1[$i]-(($wuerfelkante3Y1[$i]-$wuerfelkante2Y1[$i])/($wuerfelkante3X1[$i]-$wuerfelkante2X1[$i]))*$wuerfelkante2X1[$i] - 3 And MouseGetPos(1) < (($wuerfelkante3Y1[$i]-$wuerfelkante2Y1[$i])/($wuerfelkante3X1[$i]-$wuerfelkante2X1[$i]))*MouseGetPos(0)+$wuerfelkante2Y1[$i]-(($wuerfelkante3Y1[$i]-$wuerfelkante2Y1[$i])/($wuerfelkante3X1[$i]-$wuerfelkante2X1[$i]))*$wuerfelkante2X1[$i] Then
    $hPenwechsel = $hPenblau
    ElseIf MouseGetPos(0) < $wuerfelkante2X1[$i] And MouseGetPos(0) > $wuerfelkante3X1[$i] And MouseGetPos(1) > (($wuerfelkante3Y1[$i]-$wuerfelkante2Y1[$i])/($wuerfelkante3X1[$i]-$wuerfelkante2X1[$i]))*MouseGetPos(0)+$wuerfelkante2Y1[$i]-(($wuerfelkante3Y1[$i]-$wuerfelkante2Y1[$i])/($wuerfelkante3X1[$i]-$wuerfelkante2X1[$i]))*$wuerfelkante2X1[$i] - 3 And MouseGetPos(1) < (($wuerfelkante3Y1[$i]-$wuerfelkante2Y1[$i])/($wuerfelkante3X1[$i]-$wuerfelkante2X1[$i]))*MouseGetPos(0)+$wuerfelkante2Y1[$i]-(($wuerfelkante3Y1[$i]-$wuerfelkante2Y1[$i])/($wuerfelkante3X1[$i]-$wuerfelkante2X1[$i]))*$wuerfelkante2X1[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If MouseGetPos(0) > $wuerfelkante3X1[$i] And MouseGetPos(0) < $wuerfelkante4X1[$i] And MouseGetPos(1) > (($wuerfelkante4Y1[$i]-$wuerfelkante3Y1[$i])/($wuerfelkante4X1[$i]-$wuerfelkante3X1[$i]))*MouseGetPos(0)+$wuerfelkante3Y1[$i]-(($wuerfelkante4Y1[$i]-$wuerfelkante3Y1[$i])/($wuerfelkante4X1[$i]-$wuerfelkante3X1[$i]))*$wuerfelkante3X1[$i] - 3 And MouseGetPos(1) < (($wuerfelkante4Y1[$i]-$wuerfelkante3Y1[$i])/($wuerfelkante4X1[$i]-$wuerfelkante3X1[$i]))*MouseGetPos(0)+$wuerfelkante3Y1[$i]-(($wuerfelkante4Y1[$i]-$wuerfelkante3Y1[$i])/($wuerfelkante4X1[$i]-$wuerfelkante3X1[$i]))*$wuerfelkante3X1[$i] Then
    $hPenwechsel = $hPenblau
    ElseIf MouseGetPos(0) < $wuerfelkante3X1[$i] And MouseGetPos(0) > $wuerfelkante4X1[$i] And MouseGetPos(1) > (($wuerfelkante4Y1[$i]-$wuerfelkante3Y1[$i])/($wuerfelkante4X1[$i]-$wuerfelkante3X1[$i]))*MouseGetPos(0)+$wuerfelkante3Y1[$i]-(($wuerfelkante4Y1[$i]-$wuerfelkante3Y1[$i])/($wuerfelkante4X1[$i]-$wuerfelkante3X1[$i]))*$wuerfelkante3X1[$i] - 3 And MouseGetPos(1) < (($wuerfelkante4Y1[$i]-$wuerfelkante3Y1[$i])/($wuerfelkante4X1[$i]-$wuerfelkante3X1[$i]))*MouseGetPos(0)+$wuerfelkante3Y1[$i]-(($wuerfelkante4Y1[$i]-$wuerfelkante3Y1[$i])/($wuerfelkante4X1[$i]-$wuerfelkante3X1[$i]))*$wuerfelkante3X1[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If MouseGetPos(0) > $wuerfelkante4X1[$i] And MouseGetPos(0) < $wuerfelkante1X1[$i] And MouseGetPos(1) > (($wuerfelkante1Y1[$i]-$wuerfelkante4Y1[$i])/($wuerfelkante1X1[$i]-$wuerfelkante4X1[$i]))*MouseGetPos(0)+$wuerfelkante4Y1[$i]-(($wuerfelkante1Y1[$i]-$wuerfelkante4Y1[$i])/($wuerfelkante1X1[$i]-$wuerfelkante4X1[$i]))*$wuerfelkante4X1[$i] - 3 And MouseGetPos(1) < (($wuerfelkante1Y1[$i]-$wuerfelkante4Y1[$i])/($wuerfelkante1X1[$i]-$wuerfelkante4X1[$i]))*MouseGetPos(0)+$wuerfelkante4Y1[$i]-(($wuerfelkante1Y1[$i]-$wuerfelkante4Y1[$i])/($wuerfelkante1X1[$i]-$wuerfelkante4X1[$i]))*$wuerfelkante4X1[$i] Then
    $hPenwechsel = $hPenblau
    ElseIf MouseGetPos(0) < $wuerfelkante4X1[$i] And MouseGetPos(0) > $wuerfelkante1X1[$i] And MouseGetPos(1) > (($wuerfelkante1Y1[$i]-$wuerfelkante4Y1[$i])/($wuerfelkante1X1[$i]-$wuerfelkante4X1[$i]))*MouseGetPos(0)+$wuerfelkante4Y1[$i]-(($wuerfelkante1Y1[$i]-$wuerfelkante4Y1[$i])/($wuerfelkante1X1[$i]-$wuerfelkante4X1[$i]))*$wuerfelkante4X1[$i] - 3 And MouseGetPos(1) < (($wuerfelkante1Y1[$i]-$wuerfelkante4Y1[$i])/($wuerfelkante1X1[$i]-$wuerfelkante4X1[$i]))*MouseGetPos(0)+$wuerfelkante4Y1[$i]-(($wuerfelkante1Y1[$i]-$wuerfelkante4Y1[$i])/($wuerfelkante1X1[$i]-$wuerfelkante4X1[$i]))*$wuerfelkante4X1[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If MouseGetPos(0) > $wuerfelkante1X2[$i] And MouseGetPos(0) < $wuerfelkante2X2[$i] And MouseGetPos(1) > (($wuerfelkante2Y2[$i]-$wuerfelkante1Y2[$i])/($wuerfelkante2X2[$i]-$wuerfelkante1X2[$i]))*MouseGetPos(0)+$wuerfelkante1Y2[$i]-(($wuerfelkante2Y2[$i]-$wuerfelkante1Y2[$i])/($wuerfelkante2X2[$i]-$wuerfelkante1X2[$i]))*$wuerfelkante1X2[$i] - 3 And MouseGetPos(1) < (($wuerfelkante2Y2[$i]-$wuerfelkante1Y2[$i])/($wuerfelkante2X2[$i]-$wuerfelkante1X2[$i]))*MouseGetPos(0)+$wuerfelkante1Y2[$i]-(($wuerfelkante2Y2[$i]-$wuerfelkante1Y2[$i])/($wuerfelkante2X2[$i]-$wuerfelkante1X2[$i]))*$wuerfelkante1X2[$i] Then
    $hPenwechsel = $hPenblau
    ElseIf MouseGetPos(0) < $wuerfelkante1X2[$i] And MouseGetPos(0) > $wuerfelkante2X2[$i] And MouseGetPos(1) > (($wuerfelkante2Y2[$i]-$wuerfelkante1Y2[$i])/($wuerfelkante2X2[$i]-$wuerfelkante1X2[$i]))*MouseGetPos(0)+$wuerfelkante1Y2[$i]-(($wuerfelkante2Y2[$i]-$wuerfelkante1Y2[$i])/($wuerfelkante2X2[$i]-$wuerfelkante1X2[$i]))*$wuerfelkante1X2[$i] - 3 And MouseGetPos(1) < (($wuerfelkante2Y2[$i]-$wuerfelkante1Y2[$i])/($wuerfelkante2X2[$i]-$wuerfelkante1X2[$i]))*MouseGetPos(0)+$wuerfelkante1Y2[$i]-(($wuerfelkante2Y2[$i]-$wuerfelkante1Y2[$i])/($wuerfelkante2X2[$i]-$wuerfelkante1X2[$i]))*$wuerfelkante1X2[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If MouseGetPos(0) > $wuerfelkante2X2[$i] And MouseGetPos(0) < $wuerfelkante3X2[$i] And MouseGetPos(1) > (($wuerfelkante3Y2[$i]-$wuerfelkante2Y2[$i])/($wuerfelkante3X2[$i]-$wuerfelkante2X2[$i]))*MouseGetPos(0)+$wuerfelkante2Y2[$i]-(($wuerfelkante3Y2[$i]-$wuerfelkante2Y2[$i])/($wuerfelkante3X2[$i]-$wuerfelkante2X2[$i]))*$wuerfelkante2X2[$i] - 3 And MouseGetPos(1) < (($wuerfelkante3Y2[$i]-$wuerfelkante2Y2[$i])/($wuerfelkante3X2[$i]-$wuerfelkante2X2[$i]))*MouseGetPos(0)+$wuerfelkante2Y2[$i]-(($wuerfelkante3Y2[$i]-$wuerfelkante2Y2[$i])/($wuerfelkante3X2[$i]-$wuerfelkante2X2[$i]))*$wuerfelkante2X2[$i] Then
    $hPenwechsel = $hPenblau
    ElseIf MouseGetPos(0) < $wuerfelkante2X2[$i] And MouseGetPos(0) > $wuerfelkante3X2[$i] And MouseGetPos(1) > (($wuerfelkante3Y2[$i]-$wuerfelkante2Y2[$i])/($wuerfelkante3X2[$i]-$wuerfelkante2X2[$i]))*MouseGetPos(0)+$wuerfelkante2Y2[$i]-(($wuerfelkante3Y2[$i]-$wuerfelkante2Y2[$i])/($wuerfelkante3X2[$i]-$wuerfelkante2X2[$i]))*$wuerfelkante2X2[$i] - 3 And MouseGetPos(1) < (($wuerfelkante3Y2[$i]-$wuerfelkante2Y2[$i])/($wuerfelkante3X2[$i]-$wuerfelkante2X2[$i]))*MouseGetPos(0)+$wuerfelkante2Y2[$i]-(($wuerfelkante3Y2[$i]-$wuerfelkante2Y2[$i])/($wuerfelkante3X2[$i]-$wuerfelkante2X2[$i]))*$wuerfelkante2X2[$i] Then
    $hPenwechsel = $hPenblau
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If MouseGetPos(0) > $wuerfelkante3X2[$i] And MouseGetPos(0) < $wuerfelkante4X2[$i] And MouseGetPos(1) > (($wuerfelkante4Y2[$i]-$wuerfelkante3Y2[$i])/($wuerfelkante4X2[$i]-$wuerfelkante3X2[$i]))*MouseGetPos(0)+$wuerfelkante3Y2[$i]-(($wuerfelkante4Y2[$i]-$wuerfelkante3Y2[$i])/($wuerfelkante4X2[$i]-$wuerfelkante3X2[$i]))*$wuerfelkante3X2[$i] - 3 And MouseGetPos(1) < (($wuerfelkante4Y2[$i]-$wuerfelkante3Y2[$i])/($wuerfelkante4X2[$i]-$wuerfelkante3X2[$i]))*MouseGetPos(0)+$wuerfelkante3Y2[$i]-(($wuerfelkante4Y2[$i]-$wuerfelkante3Y2[$i])/($wuerfelkante4X2[$i]-$wuerfelkante3X2[$i]))*$wuerfelkante3X2[$i] Then
    $hPenwechsel = $hPenblau
    ElseIf MouseGetPos(0) < $wuerfelkante3X2[$i] And MouseGetPos(0) > $wuerfelkante4X2[$i] And MouseGetPos(1) > (($wuerfelkante4Y2[$i]-$wuerfelkante3Y2[$i])/($wuerfelkante4X2[$i]-$wuerfelkante3X2[$i]))*MouseGetPos(0)+$wuerfelkante3Y2[$i]-(($wuerfelkante4Y2[$i]-$wuerfelkante3Y2[$i])/($wuerfelkante4X2[$i]-$wuerfelkante3X2[$i]))*$wuerfelkante3X2[$i] - 3 And MouseGetPos(1) < (($wuerfelkante4Y2[$i]-$wuerfelkante3Y2[$i])/($wuerfelkante4X2[$i]-$wuerfelkante3X2[$i]))*MouseGetPos(0)+$wuerfelkante3Y2[$i]-(($wuerfelkante4Y2[$i]-$wuerfelkante3Y2[$i])/($wuerfelkante4X2[$i]-$wuerfelkante3X2[$i]))*$wuerfelkante3X2[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If MouseGetPos(0) > $wuerfelkante4X2[$i] And MouseGetPos(0) < $wuerfelkante1X2[$i] And MouseGetPos(1) > (($wuerfelkante1Y2[$i]-$wuerfelkante4Y2[$i])/($wuerfelkante1X2[$i]-$wuerfelkante4X2[$i]))*MouseGetPos(0)+$wuerfelkante4Y2[$i]-(($wuerfelkante1Y2[$i]-$wuerfelkante4Y2[$i])/($wuerfelkante1X2[$i]-$wuerfelkante4X2[$i]))*$wuerfelkante4X2[$i] - 3 And MouseGetPos(1) < (($wuerfelkante1Y2[$i]-$wuerfelkante4Y2[$i])/($wuerfelkante1X2[$i]-$wuerfelkante4X2[$i]))*MouseGetPos(0)+$wuerfelkante4Y2[$i]-(($wuerfelkante1Y2[$i]-$wuerfelkante4Y2[$i])/($wuerfelkante1X2[$i]-$wuerfelkante4X2[$i]))*$wuerfelkante4X2[$i] Then
    $hPenwechsel = $hPenblau
    ElseIf MouseGetPos(0) < $wuerfelkante4X2[$i] And MouseGetPos(0) > $wuerfelkante1X2[$i] And MouseGetPos(1) > (($wuerfelkante1Y2[$i]-$wuerfelkante4Y2[$i])/($wuerfelkante1X2[$i]-$wuerfelkante4X2[$i]))*MouseGetPos(0)+$wuerfelkante4Y2[$i]-(($wuerfelkante1Y2[$i]-$wuerfelkante4Y2[$i])/($wuerfelkante1X2[$i]-$wuerfelkante4X2[$i]))*$wuerfelkante4X2[$i] - 3 And MouseGetPos(1) < (($wuerfelkante1Y2[$i]-$wuerfelkante4Y2[$i])/($wuerfelkante1X2[$i]-$wuerfelkante4X2[$i]))*MouseGetPos(0)+$wuerfelkante4Y2[$i]-(($wuerfelkante1Y2[$i]-$wuerfelkante4Y2[$i])/($wuerfelkante1X2[$i]-$wuerfelkante4X2[$i]))*$wuerfelkante4X2[$i] Then
    $hPenwechsel = $hPenblau
    EndIf
    If $hPenwechsel = $hPenblau And _IsPressed("01") Then
    GUICtrlSetData($wuerfelnummer,$i)
    $hPenwechsel = $hPenrot
    EndIf
    If _IsPressed("02") Then
    GUICtrlSetData($wuerfelnummer,$wuerfelanzahl)
    EndIf
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante1X1[$i],$wuerfelkante1Y1[$i],$wuerfelkante1X2[$i],$wuerfelkante1Y2[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante2X1[$i],$wuerfelkante2Y1[$i],$wuerfelkante2X2[$i],$wuerfelkante2Y2[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante3X1[$i],$wuerfelkante3Y1[$i],$wuerfelkante3X2[$i],$wuerfelkante3Y2[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante4X1[$i],$wuerfelkante4Y1[$i],$wuerfelkante4X2[$i],$wuerfelkante4Y2[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante1X1[$i],$wuerfelkante1Y1[$i],$wuerfelkante2X1[$i],$wuerfelkante2Y1[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante2X1[$i],$wuerfelkante2Y1[$i],$wuerfelkante3X1[$i],$wuerfelkante3Y1[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante3X1[$i],$wuerfelkante3Y1[$i],$wuerfelkante4X1[$i],$wuerfelkante4Y1[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante4X1[$i],$wuerfelkante4Y1[$i],$wuerfelkante1X1[$i],$wuerfelkante1Y1[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante1X2[$i],$wuerfelkante1Y2[$i],$wuerfelkante2X2[$i],$wuerfelkante2Y2[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante2X2[$i],$wuerfelkante2Y2[$i],$wuerfelkante3X2[$i],$wuerfelkante3Y2[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante3X2[$i],$wuerfelkante3Y2[$i],$wuerfelkante4X2[$i],$wuerfelkante4Y2[$i],$hPenwechsel)
    _GDIPlus_GraphicsDrawLine($hBuffer,$wuerfelkante4X2[$i],$wuerfelkante4Y2[$i],$wuerfelkante1X2[$i],$wuerfelkante1Y2[$i],$hPenwechsel)
    Next
    _GDIPlus_GraphicsDrawImageRect($hGraphics,$hBitmap,0,0,$iWidth,$iHeight)

    [/autoit] [autoit][/autoit] [autoit]

    ;LINKS
    If _IsPressed("25") Then
    $alpha -= 0.1
    EndIf
    ;RECHTS
    If _IsPressed("27") Then
    $alpha += 0.1
    EndIf
    ;HOCH
    If _IsPressed("26") Then
    $ansicht -= 0.1
    EndIf
    ;RUNTER
    If _IsPressed("28") Then
    $ansicht += 0.1
    EndIf
    ;U
    If _IsPressed("55") Then
    $zoom -= 0.1
    EndIf
    ;I
    If _IsPressed("49") Then
    $zoom += 0.1
    EndIf
    If _IsPressed("01") And Not _IsPressed("11") Then
    If $zahl1 = 0 Then
    Global $alpha1 = $alpha
    Global $mousex = MouseGetPos(0)
    Global $ansicht1 = $ansicht
    Global $mousey = MouseGetPos(1)
    $zahl1 = 1
    EndIf
    $ansicht = $ansicht1 - ($mousey - MouseGetPos(1))/400
    If MouseGetPos(1) < $nullpunkty Then
    $alpha = $alpha1 + ($mousex - MouseGetPos(0))/400
    ElseIf MouseGetPos(1) > $nullpunkty Then
    $alpha = $alpha1 - ($mousex - MouseGetPos(0))/400
    EndIf
    EndIf
    If Not _IsPressed("01") Then $zahl1 = 0

    [/autoit] [autoit][/autoit] [autoit]

    ;Strg + LINKE MAUSTASTE
    If _IsPressed("01") And _IsPressed("11") Then
    $nullpunktx = MouseGetPos(0)
    $nullpunkty = MouseGetPos(1)
    EndIf
    ;J
    If _IsPressed("4A")Then
    $gitter = 0
    ;K
    ElseIf _IsPressed("4B") Then
    $gitter = 1
    EndIf
    ;E
    If _IsPressed("45") Then _einfuegen()
    If $alpha < 0 Then $alpha = 6.282
    If $alpha > 6.282 Then $alpha = 0
    If $ansicht < 0 Then $ansicht = 0
    If $ansicht > 1 Then $ansicht = 1
    If $zoom < 0.25 Then $zoom = 0.25
    If $zoom > 50 Then $zoom = 50
    EndFunc
    Func _wuerfelzeichnen()
    If GUICtrlRead($wuerfelcheckbox) = 1 Then
    $wuerfelanzahlbearbeiten = GUICtrlRead($wuerfelnummer)
    If $wuerfelanzahlbearbeiten <= 98 Then
    $arkoordX[$wuerfelanzahlbearbeiten] = GUICtrlRead($koordX)
    $arkoordY[$wuerfelanzahlbearbeiten] = GUICtrlRead($koordY)
    $arkoordZ[$wuerfelanzahlbearbeiten] = GUICtrlRead($koordZ)
    $arwuerfelwidth[$wuerfelanzahlbearbeiten] = GUICtrlRead($wuerfelwidth)
    $arwuerfelheight[$wuerfelanzahlbearbeiten] = GUICtrlRead($wuerfelheight)
    $arwuerfeldepth[$wuerfelanzahlbearbeiten] = GUICtrlRead($wuerfeldepth)
    Else
    MsgBox(0,"","Maximale Anzahl Würfel erreicht.")
    $wuerfelanzahlbearbeiten = 97
    EndIf
    If $wuerfelanzahlbearbeiten >= $wuerfelanzahl Then
    $wuerfelanzahl += 1
    EndIf
    GUICtrlSetData($wuerfelnummer,$wuerfelanzahl + 1)
    EndIf
    EndFunc
    Func _wuerfelnummerminus()
    GUICtrlSetData($wuerfelnummer,GUICtrlRead($wuerfelnummer) - 1)
    If GUICtrlRead($wuerfelnummer) < 1 Then GUICtrlSetData($wuerfelnummer,"1")
    EndFunc
    Func _wuerfelnummerplus()
    GUICtrlSetData($wuerfelnummer,GUICtrlRead($wuerfelnummer) + 1)
    If GUICtrlRead($wuerfelnummer) > 98 Then GUICtrlSetData($wuerfelnummer,"98")
    EndFunc
    Func _einfuegen()
    GUISetState(@SW_SHOW,$hWndmenu)
    EndFunc
    Func _hide()
    GUISetState(@SW_HIDE)
    EndFunc
    Func _neu()
    For $i = 1 To $wuerfelanzahl
    $arkoordX[$i] = ""
    $arkoordY[$i] = ""
    $arkoordZ[$i] = ""
    $arwuerfelwidth[$i] = ""
    $arwuerfelheight[$i] = ""
    $arwuerfeldepth[$i] = ""
    Next
    $wuerfelanzahl = 1
    GUICtrlSetData($wuerfelnummer,$wuerfelanzahl)
    EndFunc
    Func _oeffnen()
    $inioeffnen = FileOpenDialog("Öffnen",@ScriptDir,"Alle (*.*)|Ini-Dateien (*.ini)",1,"",$hWnd)
    $wuerfelanzahl = IniRead($inioeffnen,"Variablen","$wuerfelanzahl","")
    Dim $arkoordX[99],$arkoordY[99],$arkoordZ[99],$arwuerfelwidth[99],$arwuerfelheight[99],$arwuerfeldepth[99]
    For $i = 1 To $wuerfelanzahl
    $arkoordX[$i] = IniRead($inioeffnen,"Variablen","$arkoordX[" & $i & "]","")
    $arkoordY[$i] = IniRead($inioeffnen,"Variablen","$arkoordY[" & $i & "]","")
    $arkoordZ[$i] = IniRead($inioeffnen,"Variablen","$arkoordZ[" & $i & "]","")
    $arwuerfelwidth[$i] = IniRead($inioeffnen,"Variablen","$arwuerfelwidth[" & $i & "]","")
    $arwuerfelheight[$i] = IniRead($inioeffnen,"Variablen","$arwuerfelheight[" & $i & "]","")
    $arwuerfeldepth[$i] = IniRead($inioeffnen,"Variablen","$arwuerfeldepth[" & $i & "]","")
    Next
    EndFunc
    Func _speichern()
    $inispeichern = FileSaveDialog("Speichern",@ScriptDir,"Ini-Dateien (*.ini)",16,".ini",$hWnd)
    IniWrite($inispeichern,"Variablen","$wuerfelanzahl",$wuerfelanzahl)
    For $i = 1 To $wuerfelanzahl
    IniWrite($inispeichern,"Variablen","$arkoordX[" & $i & "]",$arkoordX[$i])
    IniWrite($inispeichern,"Variablen","$arkoordY[" & $i & "]",$arkoordY[$i])
    IniWrite($inispeichern,"Variablen","$arkoordZ[" & $i & "]",$arkoordZ[$i])
    IniWrite($inispeichern,"Variablen","$arwuerfelwidth[" & $i & "]",$arwuerfelwidth[$i])
    IniWrite($inispeichern,"Variablen","$arwuerfelheight[" & $i & "]",$arwuerfelheight[$i])
    IniWrite($inispeichern,"Variablen","$arwuerfeldepth[" & $i & "]",$arwuerfeldepth[$i])
    Next
    EndFunc
    Func _hilfe()
    GUICreate("Hilfe",$iWidthhilfe,$iHeighthilfe,-1,-1,-1,-1,$hWnd)
    $tab = GUICtrlCreateTab(0,0,$iWidthhilfe,$iHeighthilfe)
    GUICtrlCreateTabItem("Steuerung")
    GUICtrlCreateLabel("LINKS" & @CRLF & "RECHTS" & @CRLF & "HOCH" & @CRLF & "RUNTER" & @CRLF & @CRLF & "I" & @CRLF & "U" & @CRLF & @CRLF & "Strg + Linke Maustaste" & @CRLF & @CRLF & "J" & @CRLF & "K" & @CRLF & @CRLF & "E",10,30,110,190)
    GUICtrlCreateLabel("- Linksdrehen" & @CRLF & "- Rechtsdrehen" & @CRLF & "- Kippen -> Draufsicht" & @CRLF & "- Kippen -> Seitenansicht" & @CRLF & @CRLF & "- Heranzoomen" & @CRLF & "- Zurückzoomen" & @CRLF & @CRLF & "- Bewegen des Koordinatensystems" & @CRLF & @CRLF & "- Koordinatenachsen aus" & @CRLF & "- Koordinatenachsen ein" & @CRLF & @CRLF & "- Körpererstellen-Menü",130,30,170,190)
    GUICtrlCreateTabItem("Körper erstellen")
    GUICtrlCreateLabel("Zum erstellen eines neuen Körpers im Menü unter Einfügen->Körper das Menü zum Erstellen eines neuen Körpers aufrufen." & @CRLF & @CRLF & "Würfel:" & @CRLF & "Die x-,y-,und z-Koordinaten geben den Punkt vorne links oben des Würfels an. Von dort erfolgt die Rechnung mit Breite, Höhe und Tiefe." & @CRLF & "Um den Körper in das Koordinatensystem einzufügen bei den gewünschten Körpern die Checkbox markieren und auf 'Hinzufügen' klicken.",10,30,$iWidthhilfe - 20,110)
    GUISetState(@SW_SHOW)
    GUISetOnEvent(-3,"_hide")
    EndFunc
    Func _exit()
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_PenDispose($hPenrot)
    _GDIPlus_PenDispose($hPengruen)
    _GDIPlus_PenDispose($hPenblau)
    _GDIPlus_BrushDispose($hBrushgruen)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von mazZ (4. August 2010 um 19:25)

  • Hallo.
    Dein 3D programm ist wirklich gut gelungen, und es funktioniert einwandfrei.
    Ich habe aber ein paar Verbesserungsvorschläge:
    1. Wenn man die Linke Maustaste gedrückt hält und die Maus bewegt soll man die ansicht verändern können.
    2. Mehrere Meshes die man einfügen kann.
    3. Die Objekte veränderbar machen (mit sogenannten Vertexen)
    4. Für das drehen der Sicht keine Begrenzungen.

    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • zu 2.:kommt noch

    zu 4.: Wenn die sicht nur begrenzt kippbar ist, ist der rechenweg um einiges einfacher.

    Aber ich werde das natürlich verbessern :)

    Einmal editiert, zuletzt von mazZ (3. August 2010 um 23:15)

  • PrideRage: Man kann doch mehrere Objekte erstellen. (99 Objekte)
    Du musst nur wenn du ein weiteres Objekt erstellen möchtest,
    die neuen Werte eingeben und nochmal auf den "Hinzufügen"-Button drücken.

  • So, für das Programm gibt es jetzt Version 2.0 :D
    (siehe oben)


    Die Steuerung des Koordinatenkreuzes ist nun auch mit der Maus möglich.

    Auch können Körper im nachhinein verändert werden, indem man sie markiert(Maus auf eine der Körperlinien und Linke-Maus-Klick) und dann im Körper Menü die Werte verändert.

    An zusätzlichen Körpern bin ich dran, jedoch ist man durch die Rechengeschwindigkeit von Autoit etwas eingeschränkt :S

    Trotzdem hoffe ich, dass das Ergebnis funktioniert und vorzeigbar ist.

    Einmal editiert, zuletzt von mazZ (4. August 2010 um 20:42)

  • Echt Klasse gemacht.

    Vielleicht kannst du ja mal ne 3D-Engine in AutoIT scheiben.
    Wäre mir neu das es so was gibt.

  • Sehr Nice muss ich zugeben :D

    Ich habe aber deine 100´000

    [autoit]

    Global

    [/autoit]


    Gesehen und wen ich eins von Oscar Gelehrnt habe, dan ist es das, dass man nicht für jedes ding ein Global machen muss wie due es gemacht hast

    Spoiler anzeigen
    [autoit]


    Global $iWidth = @DesktopWidth
    Global $iHeight = @DesktopHeight
    Global $iWidthmenu = 300
    Global $iHeightmenu = 300
    Global $iWidthhilfe = 500
    Global $iHeighthilfe = 300
    Global $alpha = 0.5
    Global $nullpunktx = $iWidth/2
    Global $nullpunkty = $iHeight/2
    Global $feldlaengex = 200
    Global $feldlaengey = 200
    Global $feldlaengez = 200
    Global $zoom = 1
    Global $ansicht = 0.5
    Global $gitter = 1
    Global $wuerfelanzahl = 1
    Global $wuerfelkante1X1[99] = [0]
    Global $wuerfelkante1Y1[99] = [0]
    Global $wuerfelkante1X2[99] = [0]
    Global $wuerfelkante1Y2[99] = [0]
    Global $wuerfelkante2X1[99] = [0]
    Global $wuerfelkante2Y1[99] = [0]
    Global $wuerfelkante2X2[99] = [0]
    Global $wuerfelkante2Y2[99] = [0]
    Global $wuerfelkante3X1[99] = [0]
    Global $wuerfelkante3Y1[99] = [0]
    Global $wuerfelkante3X2[99] = [0]
    Global $wuerfelkante3Y2[99] = [0]
    Global $wuerfelkante4X1[99] = [0]
    Global $wuerfelkante4Y1[99] = [0]
    Global $wuerfelkante4X2[99] = [0]
    Global $wuerfelkante4Y2[99] = [0]
    Global $arkoordX[99] = [0]
    Global $arkoordY[99] = [0]
    Global $arkoordZ[99] = [0]
    Global $arwuerfelwidth[99] = [0]
    Global $arwuerfelheight[99] = [0]
    Global $arwuerfeldepth[99] = [0]
    Global $zahl1 = 0

    [/autoit]


    Das was du gemacht hast hat in meinen augen nur den "Übersichtsvorteil" :D
    Man kann das ganze auch ein bischen komprimieren.

    Spoiler anzeigen
    [autoit]

    Global $iWidth = @DesktopWidth,$iHeight = @DesktopHeight,$iWidthmenu = 300,$iHeightmenu = 300,$iWidthhilfe = 500,$iHeighthilfe = 300,$alpha = 0.5,$nullpunktx = $iWidth/2,$nullpunkty = $iHeight/2
    Global $feldlaengex = 200,$feldlaengey = 200,$feldlaengez = 200,$zoom = 1,$ansicht = 0.5,$gitter = 1,$wuerfelanzahl = 1,$wuerfelkante1X1[99] = [0],$wuerfelkante1Y1[99] = [0],$wuerfelkante1X2[99] = [0]
    Global $wuerfelkante1Y2[99] = [0],$wuerfelkante2X1[99] = [0],$wuerfelkante2Y1[99] = [0],$wuerfelkante2X2[99] = [0],$wuerfelkante2Y2[99] = [0],$wuerfelkante3X1[99] = [0],$wuerfelkante3Y1[99] = [0]
    Global $wuerfelkante3X2[99] = [0],$wuerfelkante3Y2[99] = [0],$wuerfelkante4X1[99] = [0],$wuerfelkante4Y1[99] = [0],$wuerfelkante4X2[99] = [0],$wuerfelkante4Y2[99] = [0],$arkoordX[99] = [0]
    Global $arkoordX[99] = [0],$arkoordY[99] = [0],$arkoordZ[99] = [0],$arwuerfelwidth[99] = [0],$arwuerfelheight[99] = [0],$arwuerfeldepth[99] = [0],$zahl1 = 0

    [/autoit]


    Ich habs mal auf 4zeilen Komprimiert (Extra dass sich das Bild nicht erweitert) und es funkt genauso gut :D

    Aber ich muss wirklich sagen..Top :D

    Mfg Skilkor

    *Edit::
    Hier,zusammengerückt bis Zeile 27 (Von zeile1 bis 27 was halt Global ist :D)

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode",1)
    Opt("MouseCoordMode",2)
    Global $iWidth = @DesktopWidth,$iHeight = @DesktopHeight, $iWidthmenu = 300, $iHeightmenu = 300, $iWidthhilfe = 500, $iHeighthilfe = 300, $alpha = 0.5, $nullpunktx = $iWidth/2, $nullpunkty = $iHeight/2
    Global $feldlaengex = 200, $feldlaengey = 200, $feldlaengez = 200, $zoom = 1, $ansicht = 0.5, $gitter = 1, $wuerfelanzahl = 1, $wuerfelkante1X1[99] = [0], $wuerfelkante1Y1[99] = [0], $wuerfelkante1X2[99] = [0]
    Global $wuerfelkante1Y2[99] = [0], $wuerfelkante2X1[99] = [0], $wuerfelkante2Y1[99] = [0], $wuerfelkante2X2[99] = [0], $wuerfelkante2Y2[99] = [0], $wuerfelkante3X1[99] = [0], $wuerfelkante3Y1[99] = [0]
    Global $wuerfelkante3X2[99] = [0], $wuerfelkante3Y2[99] = [0], $wuerfelkante4X1[99] = [0], $wuerfelkante4Y1[99] = [0], $wuerfelkante4X2[99] = [0], $wuerfelkante4Y2[99] = [0], $arkoordX[99] = [0]
    Global $arkoordX[99] = [0], $arkoordY[99] = [0], $arkoordZ[99] = [0], $arwuerfelwidth[99] = [0], $arwuerfelheight[99] = [0], $arwuerfeldepth[99] = [0], $zahl1 = 0
    ;~ ==================================================================================================================================================================
    Global $hWnd = GUICreate("3D",$iWidth,$iHeight,0,-1,$WS_POPUPWINDOW) , $contextmenu = GUICtrlCreateContextMenu() , $datei = GUICtrlCreateMenu("Datei",$contextmenu)
    Global $neu = GUICtrlCreateMenuItem("Neu",$datei,$contextmenu) , $oeffnen = GUICtrlCreateMenuItem("Öffnen",$datei) , $speichern = GUICtrlCreateMenuItem("Speichern",$datei)
    Global $beenden = GUICtrlCreateMenuItem("Beenden",$datei) , $bearbeiten = GUICtrlCreateMenu("Bearbeiten",$contextmenu) , $rueckgaengig = GUICtrlCreateMenuItem("---",$bearbeiten)
    Global $einfuegen = GUICtrlCreateMenu("Einfügen",$contextmenu) , $koerper = GUICtrlCreateMenuItem("Körper",$einfuegen)
    ;~ ==================================================================================================================================================================
    Global $hilfemenu = GUICtrlCreateMenu("?",$contextmenu) , $hilfe = GUICtrlCreateMenuItem("Hilfe",$hilfemenu)
    GUISetState(@SW_SHOW)
    GUISetOnEvent(-3,"_exit")
    GUICtrlSetOnEvent($beenden,"_exit")
    GUICtrlSetOnEvent($neu,"_neu")
    GUICtrlSetOnEvent($oeffnen,"_oeffnen")
    GUICtrlSetOnEvent($speichern,"_speichern")
    GUICtrlSetOnEvent($koerper,"_einfuegen")
    GUICtrlSetOnEvent($hilfe,"_hilfe")

    [/autoit] [autoit][/autoit] [autoit]

    Global $hWndmenu = GUICreate("Körper einfügen",$iWidthmenu,$iHeightmenu,0,-1,-1,-1,$hWnd) , $tabkoerper = GUICtrlCreateTab(0,0,$iWidthmenu,$iHeightmenu - 40)

    [/autoit]

    Einmal editiert, zuletzt von Skilkor (5. August 2010 um 03:39)

  • siehe Wikipedia


    Ich bin dabei eine UDF zu schreiben mit der man das wichtigste 3D-Dateiformat (*.3ds) lesen kann. Die könntest du darin verwenden.


    Ich würde ja behaupten das .obj das wichtigste ist, da am weitesten Verbreitet und unterstützt. Aber ist auch OT :p

  • Ich denke das .obj ist so weit verbreitet, da es so simpel aufgebaut ist. Ich hab heute Mittag in C++ eine Funktion geschrieben, um das .obj Format zu lesen und in OpenGL zu verwenden, allerdings ist sie noch nicht ganz fertig. Diese Funktion könnte ich in eine dll schreiben, und man könnte sie so eben auch in AutoIt nutzen. ;)

  • Da ist ein Fehler!
    Ich hab mich aus Zeitgründen jetzt nicht den Quellcode angesehen, jedoch ist mir bei deinem Programm aufgefallen dass das "hervorne" und das "hinten" wahrscheinlich hast du einfach eine rot linie gemacht eine grüne und eine Blaue.. was grundsetzlich richtig ist.. jedoch wenn du jetzt eine linie vor der anderen ist tauchen fehler auf.. Teste es einfach selbst: du musst zum Aufriss gehen und dann es im Kreis drehen.. da gibt es einige Stellen da müsste man eigentlich rechts die Blaue Linie sehen und links die grüne..

    Ansonsten supa gemacht!

    MFG Schnacko