Makro z formularzem rysujące 2 walce stykające się plaszczyznami, środek jednego walca wskazywany na ekranie , środek drugiego obliczony przez program.
W ThisDocument zapisuje krótkie makro wywołujące formularz :
Klikam ppm na oknie formularza w VBA i wybieram View Code, wpisuje następujący kod :
Private Sub Rysuj_Click()
Dim Promien1 As Double
Dim Wysokosc1 As Double
Dim Promien2 As Double
Dim Wysokosc2 As Double
Promien1 = Val(UserForm1.Promien1_txt.Text)
Wysokosc1 = Val(UserForm1.Wysokosc1_txt.Text)
Promien2 = Val(UserForm1.Promien2_txt.Text)
Wysokosc2 = Val(UserForm1.Wysokosc2_txt.Text)
If Promien1 > 0 And Wysokosc1 > 0 Then
UserForm1.hide
Dim Center As Variant
Dim Center2 As Variant
Center = ThisDocument.Utility.GetPoint(, "Wskaż środek walca1")
Dim Centrum(0 To 2) As Double
Centrum(0) = Center(0)
Centrum(1) = Center(1)
Centrum(2) = Center(2) + (Wysokosc1 / 2#) + (Wysokosc2 / 2#)
Dim walec1 As Zwcad3DSolid
Set walec1 = ThisDocument.ModelSpace.AddCylinder(Center, Promien1, Wysokosc1)
Dim walec2 As Zwcad3DSolid
Set walec2 = ThisDocument.ModelSpace.AddCylinder(Centrum, Promien2, Wysokosc2)
ThisDocument.Regen
UserForm1.Show
Else
MsgBox "Promień i wysokość muszą być większe od 0"
End If
ThisDocument.SetVariable "isolines", 24
ThisDocument.Regen
End Sub
Private Sub UserForm1_Click()
End Sub
Private Sub zamknij_Click()
UserForm1.hide
End Sub
Private Sub UserForm_Click()
End Sub
Wywoluje z powrotem formularz , klikam ppm na polu TextBox i zmieniam mu nazwę na taką jaka występuje w kodzie w odwołaniu do tego pola.
fragment kodu z odwołaniem do pola w formularzu :
To samo robię z polem Wysokosc1, Promien2, Wysokosc2, polem przycisku Rysuj i Zamknij.
Napis na przycisku jest teraz taki sam jak nazwa pola przycisku.
Na ekranie ZWCAD wywoluje okno Dostosuj (menu Widok / Paski ikonek).
Klikam na ikonce na pasku ppm , klikam na Modify i przypisuje ikonce makro uruchamiajace formularz :
Zamykam okno Dostosuj , w oknie VBA klikam na menu File / Save ,Close and Return.
Klikam na ikonce na pasku na ekranie ZWCAD i uruchamiam makro , pokazuje się formularz , wpisuje w nim promienie i wysokości 2 walcow , klikam przycisk Rysuj , wskazuje punkt na ekranie który ma być środkiem jednego walca .
Oba walce zostają narysowane, zmieniam widok na Izometryczny SW by były lepiej widoczne .
Klikam na przycisk Zamknij i zamykam formularz.
W przypadku gdybym wpisał w formularzu ujemną wysokość lub promień walca , na ekranie pojawi się komunikat.