home *** CD-ROM | disk | FTP | other *** search
- Attribute VB_Name = "modGear"
- '******************************************************************'
- '* *'
- '* TurboCAD for Windows *'
- '* Copyright (c) 1993 - 2001 *'
- '* International Microcomputer Software, Inc. *'
- '* (IMSI) *'
- '* All rights reserved. *'
- '* *'
- '******************************************************************'
-
-
- ' This sample creates 3D-drawing of gear
- Public Sub CreateGear()
-
- Dim App As Application
- Dim ActDr As Drawing
- Dim Grs As Graphics
- Dim grfThis As Graphic
- Dim Vers As Vertices
- Dim Ver As Vertex
- Dim grChild As Graphic
- Set App = IMSIGX.Application
- Set ActDr = App.ActiveDrawing
- Dim Space%
- Space = ActDr.Properties("TileMode")
- If Space <> 1 Then
- MsgBox ("This macros works only in Modal Space")
- Exit Sub
- End If
- Set Grs = ActDr.Graphics
- Set grfThis = Grs.Add(7)
- Dim Pi#
- Pi = 3.14159265
- Dim X0#, Y0#, Z0#
- X0 = 5#
- Y0 = 5#
- Z0 = 0#
- frmGear.Show
-
- Dim TeethNum# 'Count of Teeth
- TeethNum = CDbl(frmGear.TextBox1.Text)
-
- Dim D0#, D1# 'External diameter
- D0 = CDbl(frmGear.TextBox2.Text)
- D1 = CDbl(frmGear.TextBox3.Text)
- Dim n As Long
- n = TeethNum
- Dim Rext#, Rint#, r1#, r2#, r3#
- Dim fi#, dfi#, alp#, bet#, gam#
- Dim xc#, yc#, zc#
- Dim h#, H0#, H2#, H3#, H4#, H1#
- H0 = CDbl(frmGear.TextBox6.Text)
- Dim i As Long, j As Long
- Rext = D0 / 2
- Dim m#
- m = D0 / (n + 2)
- h = 2.25 * m
- Rint = Rext - h
- r1 = D1 / 2
- xc = X0
- yc = Y0
- zc = Z0 - H0
- dfi = 2 * Pi / n
- alp = Pi / 3 / n
- bet = Pi / 3 / n
- gam = Pi / 3 / n
- Dim xi#, yi#, zi#
- zi = zc
- j = 0
- Set grChild = grfThis.Graphics.Add(11)
- Set Vers = grChild.Vertices
- For i = 0 To n - 1
- fi = i * dfi
- If i = 0 Then
- xi = xc + Rint * Cos(fi - (alp + bet))
- yi = yc + Rint * Sin(fi - (alp + bet))
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- j = j + 1
- xi = xc + Rext * Cos(fi - alp)
- yi = yc + Rext * Sin(fi - alp)
- Set Ver = Vers.Add(xi, yi, zi, True)
- xi = xc + Rext * Cos(fi + alp)
- yi = yc + Rext * Sin(fi + alp)
- Set Ver = Vers.Add(xi, yi, zi, True)
- xi = xc + Rint * Cos(fi + (alp + bet))
- yi = yc + Rint * Sin(fi + (alp + bet))
- Set Ver = Vers.Add(xi, yi, zi, True)
- xi = xc + Rint * Cos(fi + (alp + bet + 2 * gam))
- yi = yc + Rint * Sin(fi + (alp + bet + 2 * gam))
- Set Ver = Vers.Add(xi, yi, zi, True)
- Next i
- Dim xCon#, yCon#, zCon#
- xCon = xi
- yCon = yi
- zCon = zi
-
- dfi = 2 * Pi / 30
- For i = 0 To 30
- fi = -i * dfi
- xi = xc + r1 * Cos(fi)
- yi = yc + r1 * Sin(fi)
- zi = zc
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- Set Ver = Vers.Add(xCon, yCon, zCon, False)
-
- grChild.Closed = True
- grChild.Properties("PenColor") = QBColor(8)
- grChild.Properties("Thickness") = 2 * H0
- grChild.Properties("Solid") = 0
-
-
- ' ----------------------------------------------------------------------
- Dim D2#
- D2 = CDbl(frmGear.TextBox4.Text)
- H1 = CDbl(frmGear.TextBox7.Text)
- r1 = D1 / 2
- r2 = D2 / 2
- xc = X0
- yc = Y0
- zc = Z0 - H1
- zi = zc
- dfi = 2 * Pi / 30
- Set grChild = grfThis.Graphics.Add(11)
- Set Vers = grChild.Vertices
-
- For i = 0 To 30
- fi = i * dfi
- xi = xc + r1 * Cos(fi)
- yi = yc + r1 * Sin(fi)
- zi = zc
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- xCon = xi
- yCon = yi
- zCon = zi
-
- For i = 0 To 30
- fi = -i * dfi
- xi = xc + r2 * Cos(fi)
- yi = yc + r2 * Sin(fi)
- zi = zc
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- Set Ver = Vers.Add(xCon, yCon, zCon, False)
- grChild.Closed = True
- grChild.Properties("PenColor") = QBColor(8)
- grChild.Properties("Thickness") = 2 * H1
- grChild.Properties("Solid") = 0
-
- ' ----------------------------------------------------------------------
- Dim Di#, ri#
- Di = CDbl(frmGear.TextBox5.Text)
- H2 = CDbl(frmGear.TextBox8.Text)
- r2 = D2 / 2
- ri = Di / 2
- xc = X0
- yc = Y0
- zc = Z0 - H2
- zi = zc
- dfi = 2 * Pi / 30
- Set grChild = grfThis.Graphics.Add(11)
- Set Vers = grChild.Vertices
- For i = 0 To 30
- fi = i * dfi
- xi = xc + r2 * Cos(fi)
- yi = yc + r2 * Sin(fi)
- zi = zc
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- xCon = xi
- yCon = yi
- zCon = zi
-
- For i = 0 To 30
- fi = -i * dfi
- xi = xc + ri * Cos(fi)
- yi = yc + ri * Sin(fi)
- zi = zc
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- Set Ver = Vers.Add(xCon, yCon, zCon, False)
- grChild.Closed = True
- grChild.Properties("PenColor") = QBColor(8)
- grChild.Properties("Thickness") = 2 * H2
- grChild.Properties("Solid") = 0
- ' ----------------------------------------------------------------------
- H3 = CDbl(frmGear.TextBox9.Text)
- xc = X0
- yc = Y0
- H4 = H1 * 3
- zc = Z0 - H3
- zi = zc
- dfi = 2 * Pi / 30
- Set grChild = grfThis.Graphics.Add(11)
- Set Vers = grChild.Vertices
- For i = 0 To 30
- fi = i * dfi
- xi = xc + ri * Cos(fi)
- yi = yc + ri * Sin(fi)
- zi = zc
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- grChild.Closed = True
- grChild.Properties("PenColor") = QBColor(8)
- grChild.Properties("Thickness") = 2 * H3
- grChild.Properties("Solid") = 0
-
- ' End gear
- ' --------------------------------------------------------------------------
- ' --------------------------------------------------------------------------
- ' --------------------------------------------------------------------------
- ' Begin Bearings - 1
- H4 = CDbl(frmGear.TextBox10.Text)
- Dim rb1#, rb2#, rb3#, rb4#
- Dim hb#
- Dim rr#
- Dim zb#
- rr = 0.2 * ri
- hb = 2 * rr
- zb = H4
-
- ' First ring
- rb1 = ri
- rb2 = rb1 + hb / 4
- xc = X0
- yc = Y0
- zi = zb
- dfi = 2 * Pi / 30
- Set grChild = grfThis.Graphics.Add(11)
- Set Vers = grChild.Vertices
- For i = 0 To 30
- fi = i * dfi
- xi = xc + rb2 * Cos(fi)
- yi = yc + rb2 * Sin(fi)
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- xCon = xi
- yCon = yi
- zCon = zi
-
- For i = 0 To 30
- fi = -i * dfi
- xi = xc + rb1 * Cos(fi)
- yi = yc + rb1 * Sin(fi)
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- Set Ver = Vers.Add(xCon, yCon, zCon, False)
- grChild.Closed = True
- grChild.Properties("PenColor") = RGB(0, 0, 255)
- grChild.Properties("Thickness") = hb
- grChild.Properties("Solid") = 0
- ' --------------------------------------------------------------------
-
- ' Second ring
- rb3 = rb2 + 2 * rr
- rb4 = rb3 + hb / 4
- xc = X0
- yc = Y0
- zi = zb
- dfi = 2 * Pi / 30
- Set grChild = grfThis.Graphics.Add(11)
- Set Vers = grChild.Vertices
- For i = 0 To 30
- fi = i * dfi
- xi = xc + rb4 * Cos(fi)
- yi = yc + rb4 * Sin(fi)
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- xCon = xi
- yCon = yi
- zCon = zi
-
- For i = 0 To 30
- fi = -i * dfi
- xi = xc + rb3 * Cos(fi)
- yi = yc + rb3 * Sin(fi)
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- Set Ver = Vers.Add(xCon, yCon, zCon, False)
- grChild.Closed = True
- grChild.Properties("PenColor") = RGB(0, 0, 255)
- grChild.Properties("Thickness") = hb
- grChild.Properties("Solid") = 0
- ' --------------------------------------------------------------------
- ' Draw Bolls as spheres
- zi = zb + hb / 2
- dfi = 2 * Pi / 16
- For i = 0 To 16
- fi = i * dfi
- xi = xc + (rb2 + rr) * Cos(fi)
- yi = yc + (rb2 + rr) * Sin(fi)
- Set grChild = grfThis.Graphics.Add(, "TCW40SPHERE")
- Set Vers = grChild.Vertices
- Set Ver = grChild.Vertices.Add(xi, yi, zi, False)
- Set Ver = grChild.Vertices.Add(xi, yi, zi + rr, False)
- grChild.Properties("PenColor") = QBColor(4)
- grChild.Properties("Solid") = 0
- Next i
-
- ' --------------------------------------------------------------------------
- ' --------------------------------------------------------------------------
- ' --------------------------------------------------------------------------
- ' Begin Bearings - 2
- rr = 0.2 * ri
- hb = 2 * rr
- zb = -H4 - hb
-
- ' First ring
- rb1 = ri
- rb2 = rb1 + hb / 4
- xc = X0
- yc = Y0
- zi = zb
- dfi = 2 * Pi / 30
- Set grChild = grfThis.Graphics.Add(11)
- Set Vers = grChild.Vertices
- For i = 0 To 30
- fi = i * dfi
- xi = xc + rb2 * Cos(fi)
- yi = yc + rb2 * Sin(fi)
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- xCon = xi
- yCon = yi
- zCon = zi
-
- For i = 0 To 30
- fi = -i * dfi
- xi = xc + rb1 * Cos(fi)
- yi = yc + rb1 * Sin(fi)
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- Set Ver = Vers.Add(xCon, yCon, zCon, False)
- grChild.Closed = True
- grChild.Properties("PenColor") = RGB(0, 0, 255)
- grChild.Properties("Thickness") = hb
- grChild.Properties("Solid") = 0
- ' --------------------------------------------------------------------
-
- ' Second ring
- rb3 = rb2 + 2 * rr
- rb4 = rb3 + hb / 4
- xc = X0
- yc = Y0
- zi = zb
- dfi = 2 * Pi / 30
- Set grChild = grfThis.Graphics.Add(11)
- Set Vers = grChild.Vertices
- For i = 0 To 30
- fi = i * dfi
- xi = xc + rb4 * Cos(fi)
- yi = yc + rb4 * Sin(fi)
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- xCon = xi
- yCon = yi
- zCon = zi
-
- For i = 0 To 30
- fi = -i * dfi
- xi = xc + rb3 * Cos(fi)
- yi = yc + rb3 * Sin(fi)
- If i = 0 Then
- Set Ver = Vers.Add(xi, yi, zi, False)
- Else
- Set Ver = Vers.Add(xi, yi, zi, True)
- End If
- Next i
- Set Ver = Vers.Add(xCon, yCon, zCon, False)
- grChild.Closed = True
- grChild.Properties("PenColor") = RGB(0, 0, 255)
- grChild.Properties("Thickness") = hb
- grChild.Properties("Solid") = 0
- ' --------------------------------------------------------------------
- ' Draw Bolls as spheres
- zi = zb + hb / 2
- dfi = 2 * Pi / 16
- For i = 0 To 16
- fi = i * dfi
- xi = xc + (rb2 + rr) * Cos(fi)
- yi = yc + (rb2 + rr) * Sin(fi)
- Set grChild = grfThis.Graphics.Add(, "TCW40SPHERE")
- Set Vers = grChild.Vertices
- Set Ver = grChild.Vertices.Add(xi, yi, zi, False)
- Set Ver = grChild.Vertices.Add(xi, yi, zi + rr, False)
- grChild.Properties("PenColor") = QBColor(4)
- grChild.Properties("Solid") = 0
- Next i
- End Sub
-
-