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

  1. 'Sample that shows how to do a linear copy of selected graphics.
  2.  
  3. ' Author    : Tamara Cartwright, Natalia Karaseva (updated to version 4.0 interface)
  4. ' Date        : 01/26/97, 09/30/97
  5.  
  6.  
  7.  
  8. dim v1 as long
  9. dim v2 as long
  10. dim copies as long
  11. dim hActive as long
  12. dim sCount As Long
  13. dim Ls  As Long
  14. sub Main
  15.  
  16.     'Get drawing handle
  17.     hActive = TCWDrawingActive()
  18.  
  19.     if (hActive = 0) then
  20.         MsgBox "Need active drawing."
  21.         'Terminate Program
  22.         Stop
  23.     end if
  24.  
  25.     'Get selection count to see that we have something selected
  26.     sCount = TCWSelectionCount
  27.  
  28.     if (sCount = 0) then
  29.         MsgBox  "Program requires at least one graphic to be selected."
  30.         'Terminate the program
  31.         Stop
  32.     end if
  33.  
  34.     'Get number of copies from the user
  35.     copies = Val(InputBox$("Input number of copies to make","TurboCAD"))
  36.  
  37.     If copies = 0 Then
  38.         MsgBox "No copies desired, finished!"        
  39.         Stop
  40.     end if
  41.  
  42.     'create a vertex
  43.     v1 = TCWVertexCreate(0.0, 0.0, 0.0)
  44.  
  45.     if (v1 = 0) then
  46.         MsgBox "Cannot create vertex"
  47.         Stop
  48.     end if
  49.  
  50.     v2 = TCWVertexCreate(0.0, 0.0, 0.0)
  51.     if (V2 = 0) then
  52.         MsgBox "Cannot create vertex"
  53.         Stop
  54.     end if
  55.  
  56.     'click on screen to get points
  57.     result = TCWGetPoint(v1,"Get first point", 0, 0, 0, 1)
  58.                 if result<0 then
  59.                 Msgbox "Script was cancelled."
  60.                 Stop
  61.                  End If
  62.                  Ls= TCWSelectByQuery("")
  63.     result = TCWGetPoint(v2,"Get second point", 0, 0, 0, 1)
  64.                 if result<0 then
  65.                 Msgbox "Script was cancelled."
  66.                 Stop
  67.                  End If
  68.                 Ls= TCWSelectByQuery("")
  69.  
  70.  
  71.     'Go and copy away
  72.     DoCopy
  73.  
  74.     'Need to delete the two vertex objects that we created above
  75.     TCWVertexDispose v1
  76.     TCWVertexDispose v2
  77.  
  78. End Sub
  79.  
  80. Sub DoCopy ()
  81.     Dim gCount As Long
  82.     Dim ga As Long
  83.     dim g as Long
  84.     dim i as integer
  85.     dim k as integer
  86.     dim m as integer
  87.     dim n as integer
  88.     dim result as long
  89.                  dim NUL as Long
  90.     dim dx as double
  91.     dim dy as double
  92.     dim dz as double
  93.  
  94.  
  95.     
  96.     'Calculate the delta between the points for the copy
  97.     dx = (TCWGetX(v2) - TCWGetX(v1))
  98.     dy = (TCWGetY(v2) - TCWGetY(v1))
  99.     dz = (TCWGetZ(v2) - TCWGetZ(v1))
  100.  
  101.     for i = 1 to copies
  102.         'Get total graphics in drawing
  103.         gCount = TCWGraphicCount(hActive)
  104.                        'loop through selected graphics making copies
  105.  
  106.         for k = 0 to sCount-1
  107.             ga = TCWSelectionAt(k)
  108.         if (ga = 0) then
  109.             MsgBox "Lost Selection?"
  110.                 Stop
  111.         end if
  112.  
  113.             'make copy of selected graphic
  114.             g = TCWGraphicCopy(ga)
  115.  
  116.             'add copy to the drawing
  117.             result = TCWGraphicAppend(NUL, g)
  118.         next k
  119.  
  120.         'Deselect the original graphics
  121.          TCWDeSelectAll
  122.         
  123.         'Select the newly added graphics that we just copied
  124.         'they will be at gCount+1...
  125.                                  n=0
  126.         for n = 0 to sCount-1
  127.             ga = TCWGraphicAt(hActive, gCount+n)
  128.  
  129.             if (ga = 0) then
  130.                 MsgBox "Cannot find new copied graphic"
  131.                 stop
  132.             end if
  133.  
  134.             'select the graphic
  135.             result = TCWGraphicPropertySet(ga, "Selected", 1)
  136.         next n
  137.  
  138.         'move the selection on the vector
  139.         TCWSelectionMove dx, dy, dz
  140.  
  141.         'Select the newly added graphics that we just copied again,
  142.         'TCWSelectionMove loses the selection state
  143.         m=0
  144.                                                 for m = 0 to sCount-1
  145.             ga = TCWGraphicAt(hActive, gCount+m)
  146.             if (ga = 0) then
  147.                 MsgBox "Lost selection"
  148.                 stop
  149.             end if
  150.  
  151.             'set selected
  152.             result = TCWGraphicPropertySet(ga, "Selected", 1)
  153.         next m
  154.  
  155.     next i
  156.          TCWDeSelectAll
  157.  
  158. End Sub
  159.  
  160.