![]() |
visual basic trap programmeren
Hey!
Voor school moet ik een trap programmeren in visual basic. Eentje die aanpasbaar is en die zo in mijn ontwerp in autocad en alle mogelijke volgende ontwerpen kan passen. Ik heb al een begin: een 2D platte grond en een 3D-lijntekening van tredes en zelfs al een dialoogbokske waar een gebruiker zelf breedte enz... kan ingeven. Maar dat is niet genoeg. Die trap zou ook oppervlak moeten krijgen en een zekere dikte van treden. Enfin, het moet een 3D-trap worden met volume. (De opdracht gaat verder: wenteltrappen en leuningen enz... zorgen voor bonuspunten, maar dat is niet direct mijn eerste doel.) Kan iemand mij verder helpen met de code? Dit is wat ik al heb: Public Sub Trap() ' roep de dialoogbox op UserForm1.Show End Sub 'Voor de dialoogbox: die staat verder uitgewerkt bij de Userform 'die ik heb ingevoerd (helemaal achteraan verder uitgewerkt) Sub TrapFunctie( _ aantalTreden As Integer, _ trapbreedte As Double, _ aantrede As Double, _ optrede As Double) '-------------------------- ' Variabelen en instellingen '--------------------------- ' Trapbreedte, reëel getal (standaard 900 mm) 'Dim trapbreedte As Double 'trapbreedte = 0.9 ' Optrede, reëel getal (standaard 180 mm) 'Dim optrede As Double 'optrede = 0.18 ' Aantrede, reëel getal (standaard 240 mm) 'Dim aantrede As Double 'aantrede = 0.24 ' Aantaltreden, geheel getal (standaard 15) 'Dim aantalTreden As Integer 'aantalTreden = 15 '-------------------------- ' Definieer Layers '--------------------------- Dim myLayer As AcadLayer Set myLayer = ThisDrawing.Layers.Add("2D") myLayer.color = acBlue Set myLayer = ThisDrawing.Layers.Add("3D") myLayer.color = acCyan 'voor alle treden Dim trede As Integer For trede = 0 To aantalTreden - 1 'teken trede Call tekenTrede(0, trede * aantrede, trede * optrede, trapbreedte, optrede, aantrede, trede + 1) 'ga naar de volgende trede Next trede 'afwerking Dim startPt(2) As Double Dim endPt(2) As Double Dim centerPt(2) As Double startPt(0) = 0 startPt(1) = 0 endPt(0) = 0 endPt(1) = aantalTreden * aantrede centerPt(0) = trapbreedte / 2 centerPt(1) = 0 ' teken trapbomen Dim myLine As AcadLine Set myLine = ThisDrawing.ModelSpace.AddLine(startPt, endPt) myLine.Layer = "2D" startPt(0) = trapbreedte startPt(1) = 0 endPt(0) = trapbreedte endPt(1) = aantalTreden * aantrede Set myLine = ThisDrawing.ModelSpace.AddLine(startPt, endPt) myLine.Layer = "2D" ' teken looplijn (begincirkel en looprichting) startPt(0) = trapbreedte / 2 startPt(1) = 0 endPt(0) = trapbreedte / 2 endPt(1) = aantalTreden * aantrede Set myLine = ThisDrawing.ModelSpace.AddLine(startPt, endPt) myLine.Layer = "2D" 'teken pijl startPt(0) = endPt(0) - 100 startPt(1) = endPt(1) - 100 Set myLine = ThisDrawing.ModelSpace.AddLine(startPt, endPt) myLine.Layer = "2D" startPt(0) = endPt(0) + 100 startPt(1) = endPt(1) - 100 Set myLine = ThisDrawing.ModelSpace.AddLine(startPt, endPt) myLine.Layer = "2D" 'teken cirkel Dim myCircle As AcadCircle Set myCircle = ThisDrawing.ModelSpace.AddCircle(centerPt, 80) myCircle.Layer = "2D" ' beëindig tekening ThisDrawing.Regen (True) End Sub Private Sub tekenTrede( _ X, Y, Z As Double, _ trapbreedte, optrede, aantrede As Double, _ tredeNummer As Integer) 'variabelen declareren ' optrede, aantrede, breedte 'tredenummer ' p1,p2,p3,p4 Dim p1(2) As Double Dim p2(2) As Double Dim p3(2) As Double Dim p4(2) As Double 'bereken de vier punten 'p1 = X,Y p1(0) = X p1(1) = Y p2(0) = X + trapbreedte p2(1) = Y p3(0) = X + trapbreedte p3(1) = Y + aantrede p4(0) = X p4(1) = Y + aantrede 'p2 = X + trapbreedte, Y 'p3 = X + trapbreedte, Y+ aantrede 'p4 = X, Y + aantrede ' teken een lijn om de trede voor te stellen in 2D Dim myLine As AcadLine Set myLine = ThisDrawing.ModelSpace.AddLine(p1, p2) myLine.Layer = "2D" ' teken een vlak in 3D Dim myFace As Acad3DFace p1(2) = Z + optrede p2(2) = Z + optrede p3(2) = Z + optrede p4(2) = Z + optrede Set myFace = ThisDrawing.ModelSpace.Add3DFace(p1, p2, p3, p4) myFace.Layer = "3D" ' schrijf tredenummer op trede Dim myText As AcadText Dim insertionPt(2) As Double insertionPt(0) = X + 0.05 insertionPt(1) = Y + 0.05 Set myText = ThisDrawing.ModelSpace.AddText(tredeNummer, insertionPt, 100) myText.Layer = "2D" End Sub '--------------------------- 'Dan de dialoog box! '--------------------------- 'Daarvoor heb ik een Userform gemaakt waarbij ge het ' 'aantalTreden, de trapbreedte, de aantrede en de optrede ' kunt invullen (aantalTreden als integer, de rest als double ' en in millimeter) 'Bij dat userform komt deze code: Private Sub BT_maakTrap_Click() ' sluit het venster UserForm1.Hide ' roep de trapfunctie, met de waarden uit de dialoogbox ' maar voer eerst een controle uit! If (UserForm1.TB_aantalTreden <> "") And _ (UserForm1.TB_trapbreedte <> "") And _ (UserForm1.TB_aantrede <> "") And _ (UserForm1.TB_optrede <> "") Then Call TrapFunctie.TrapFunctie( _ UserForm1.TB_aantalTreden.Value, _ UserForm1.TB_trapbreedte.Value, _ UserForm1.TB_aantrede.Value, _ UserForm1.TB_optrede.Value) End If End Sub Private Sub BT_cancel_Click() UserForm1.Hide End End Sub 'Dat was het, maar hoe moet het nu verder met volumes en opp? |
volume is de 3e dimensie, dus dat word gewoon een Xtra dimensie toevoegen, echter gaan we je huiswerk niet zitten maken, maar als je specifieke vragen/knelpunten hebt willen we wellicht helpen
|
Alle tijden zijn GMT +1. Het is nu 19:45. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.