home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2002 March / PCWMAR02.iso / software / turbocad / V4 / tcw.z / Smiley.bas < prev    next >
BASIC Source File  |  1997-10-28  |  5KB  |  172 lines

  1. ' This sample program is to illustrate how to create simple scripts for TurboCAD
  2. '
  3. ' Author    : Mike Cartwright, Tamara Cartwright updated script for 4.0
  4. ' Date        : 11/27/95    01/23/97
  5. '
  6. ' Global Const BrushSolid = 1
  7. Global Const PI            = 3.141
  8.  
  9. ' Result is a global variable returned by each page to tell the
  10. ' state machine which button was pressed :
  11. Global Const CancelID = 1
  12. Global Const CreateID = 2
  13. Global Const Happy = 0
  14. Global Const Sad = 1
  15. Dim Result As Long
  16. Dim Mood As Long
  17.  
  18. Sub Main ()
  19.     Dim dActive As Long
  20.     ' Active drawing
  21.      dActive = TCWDrawingActive ()
  22.     ' Check for valid drawing
  23.      If dActive = 0 Then
  24.         MsgBox "Program requires active drawing. Open any drawing and try again."
  25.  
  26.         ' Terminate the program       
  27.          Stop    
  28.      End If
  29.  
  30.     Mood = Happy      ' Default is Happy    
  31.  
  32.     MoodDlg    
  33.     if Result = CreateID Then
  34.     CreateSmiley    
  35.     End If
  36. End Sub
  37.  
  38. Sub MoodDlg ()
  39.     Begin Dialog MoodDialog 31, 32, 185, 96, "Create a Smiley!"        
  40.           PushButton 15,  79, 35, 14, "Cancel"       ' CancelID = 0        
  41.           PushButton 135, 79, 35, 14, "&Finish"    ' CreateID = 1         
  42.  
  43. '          GroupBox 1, 75, 183, 1, ""        
  44.           GroupBox 100, 12, 72, 48, "Mood"        
  45.           OptionGroup .grp            
  46.              OptionButton 108, 24, 55, 9, "&Happy" ' Option 0            
  47.              OptionButton 108, 40, 55, 9, "&Sad"      ' Option 1        
  48.           GroupBox 10, 12, 82, 48, ""        
  49.           Text      14, 18, 74, 40, "If you are in a great mood choose happy, obviously."    
  50.     End Dialog        
  51.  
  52.     Dim Dlg As MoodDialog    
  53.     Dlg.grp = Mood    
  54.  
  55.     ' Run the dialog ..    
  56.     Result = Dialog(Dlg)    
  57.     Mood = Dlg.grp
  58.  
  59. End Sub
  60.  
  61. ' Called on "Create" to actually create the graphics and add them
  62. ' to the drawing. 
  63.  
  64. Sub CreateSmiley ()     
  65.     Dim dActive As Long    
  66.     Dim Result As Long        
  67.     Dim xc As Double    
  68.     Dim yc As Double    
  69.     Dim errorstr As String    
  70.     Dim g As Long    
  71.     Dim faceg As Long    
  72.     Dim faceg1 As Long    
  73.     Dim eyeg1 As Long    
  74.     Dim eyeg2 As Long    
  75.     Dim mouthg As Long    
  76.     Dim i As Long    
  77.     Dim x As Double    
  78.     Dim rad As Double    
  79.  
  80.     dActive = TCWDrawingActive ()        
  81.  
  82.     xc = (TCWViewExtentsGetX1() + TCWViewExtentsGetX2())/2
  83.     yc = (TCWViewExtentsGetY1() + TCWViewExtentsGetY2())/2    
  84.     rad=yc*2/3
  85.     ' Create the empty circle graphic    
  86.     faceg = TCWCircleCenterAndPoint(xc, yc, 0.0, xc, yc+rad,0.0)    
  87.  
  88.     If (faceg = 0) Then        
  89.        Result = TCWLastErrorGet(errorstr)        
  90.        MsgBox "Error creating circle : " & errorstr
  91.        Stop
  92.     End If    
  93.  
  94.     ' Color is set as 0x00bbggrr    
  95.     Result = TCWGraphicPropertySet( faceg, "PenColor", &H0000FFFF)    
  96.  
  97.     ' Fill Pattern is a style. We know that style 1 is always solid    
  98.     Result = TCWGraphicPropertySet( faceg, "BrushStyle", "Solid")    
  99.  
  100.     'Select the graphic so we can move it to the back
  101.     Result = TCWGraphicPropertySet( faceg, "Selected", 1)    
  102.     TCWSendToBack    
  103.     Result = TCWGraphicPropertySet( faceg, "Selected", 0)    
  104.  
  105.     ' Create the empty circle graphic    
  106.     faceg1 = TCWCircleCenterAndPoint(xc, yc, 0.0, xc, yc+rad,0.0)    
  107.  
  108.     If (faceg1 = 0) Then        
  109.        Result = TCWLastErrorGet(errorstr)        
  110.        MsgBox "Error creating circle : " & errorstr
  111.        Stop    
  112.     End If    
  113.  
  114.     ' Color is set as 0x00bbggrr     
  115.     Result = TCWGraphicPropertySet( faceg1, "PenColor", &H000000FF)    
  116.  
  117.     ' Do eyes    
  118.     For i = 0 to 2        
  119.        if i <> 1 Then            
  120.           x = xc - rad/2 * (i-1)            
  121.  
  122.           ' Create the empty circle graphic            
  123.           g = TCWCircleCenterAndPoint(x, yc+rad/3,0.0, x+rad*0.1, yc+rad/3,0.0)            
  124.           If (g = 0) Then                
  125.               Result = TCWLastErrorGet(errorstr)                
  126.               MsgBox "Error creating circle for eyes : " & errorstr            
  127.               Stop
  128.           End If            
  129.  
  130.           ' Color is set as 0x00bbggrr            
  131.           Result = TCWGraphicPropertySet (g, "PenColor", &H000000FF)
  132.  
  133.           ' Fill Pattern is a style. We know that style 1 is always solid            
  134.           Result = TCWGraphicPropertySet (g, "BrushStyle", "Solid")        
  135.        End If    
  136. if eyeg1=0 then
  137. eyeg1=g
  138. else
  139. eyeg2=g
  140. end if
  141.     Next i    
  142.  
  143.     ' Do Mouth    
  144.  
  145.     ' Create the empty arc graphic            
  146.     ' Set the parameters of the background arc    
  147.     if Mood = Sad Then        
  148.         mouthg = TCWArcCenterAndPoint(xc, yc-rad, 0.0, xc+rad/3, yc-rad, 0.0, Pi/4, Pi*3/4)    
  149.     Else        
  150.         mouthg = TCWArcCenterAndPoint(xc, yc, 0.0, xc+rad/3, yc+rad/3, 0.0, Pi*5/4, Pi*7/4)    
  151.     End If    
  152.  
  153.     If (mouthg = 0) Then        
  154.         Result = TCWLastErrorGet(errorstr)        
  155.         MsgBox "Error creating arc for mouth : " & errorstr    
  156.         Stop
  157.     End If    
  158.  
  159.     ' Color is set as 0x00bbggrr    
  160.      Result = TCWGraphicPropertySet( mouthg, "PenColor", &H000000FF)    
  161.  
  162.     ' Make all the graphics into a group    
  163.     Result = TCWGraphicPropertySet( faceg, "Selected", 1)    
  164.     Result = TCWGraphicPropertySet( faceg1, "Selected", 1)    
  165.     Result = TCWGraphicPropertySet( eyeg1, "Selected", 1)    
  166.     Result = TCWGraphicPropertySet( eyeg2, "Selected", 1)    
  167.     Result = TCWGraphicPropertySet( mouthg, "Selected", 1)    
  168.     TCWGroupCreate("smiley")    
  169.     TCWDeselectAll
  170.  
  171. End Sub
  172.