home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / GFX / Raytracing / Raytracer / LW5VT09.LHA / Toaster / Arexx_examples / PlugIns / QuickSelect.lwm < prev    next >
Encoding:
Text File  |  1996-06-10  |  7.6 KB  |  207 lines

  1. /* CMD: ½QuickSelect                                                    */
  2. /* By Brett Evan Hester      13032 Copenhill Rd. Dallas, Tx. 75240-5302 */
  3.     MacrosName = "QuickSelect"
  4. /* Macro Type:                                                          */
  5. /* MODIFIES    * OBJECTS   * BKG NEEDED   * SELECTED     * REMEMBERS    */
  6. /* Description:                                                         */
  7.  
  8. Info1A = "!Quick Select ©                Information 1 of 2"
  9. Info1B = ""
  10. Info1C = "@This macro selects or deselects points or       "
  11. Info1D = "@polygons on the current layer.  The background  "
  12. Info1E = "@layer is used as a reference layer.             "
  13. Info1F = ""
  14. Info1G = "þ SELECT - selects     þ DESELECT - deselects   "
  15. Info1H = "þ POINTS - selects or deselects points          "
  16. Info1I = "þ POLYGONS - selects or deselects polygons      "
  17. Info1J = "¤ Polygon options include whether to select/de.."
  18. Info1K = "  COMPLETE or PARTIAL polygons within the volume"
  19. Info1L = ""
  20. Info1M = "@- The background layer's borders determine the -"
  21. Info1N = "@- area to use for selection and deselection.   -"
  22.  
  23. Info2A = "!Quick Select ©                Information 2 of 2"
  24. Info2B = "@               Plug-Ins and Go! ©               "
  25. Info2C = "                           Hester and associates"
  26. Info2D = "                           13032 Copenhill Road "
  27. Info2E = "                           Dallas, Texas 75240  "
  28. Info2F = "@Special Thanks to:                              "
  29. Info2G = "Arnie Cachelin  Henry Ribron    Mark J. Holland "
  30. Info2H = "J. Phil Kelso   Terry Wester    Steven K. Simms "
  31. Info2I = "Kevin DeRita    Greg Glaser     William S. Hawes"
  32. Info2J = "NewTek ©        Commodore ©     INOVAtronics ©  "
  33. Info2K = ""
  34. Info2L = "@This macro represents a lot of time & hard work."
  35. Info2M = "@Encourage people to create new ones and not kill"
  36. Info2N = "@that possibility by stealing those that are out."
  37.  
  38. /* -------------------------------------------------------------------- */
  39.                                      /* Start Error Detection (See End) */
  40. SIGNAL ON ERROR
  41. SIGNAL ON SYNTAX
  42.                                                    /* Address LightWave */
  43. VT3DLib = ADDLIB("LWModelerARexx.port",0)
  44. ADDRESS "LWModelerARexx.port"
  45.  
  46. /* -------------------------------------------------------------------- */
  47.                                            /* Calculating Area Selected */
  48. CALL Sel_Mode(USER)
  49.  
  50. BL = CurBLayer()
  51. PARSE value BoundingBox(BL) with BN BX1 BX2 BY1 BY2 BZ1 BZ2
  52.  
  53. /* -------------------------------------------------------------------- */
  54.                                                     /* BKG Layer Needed */
  55. IF BN = 0 THEN DO
  56.     CALL Notify(1,"!Sorry!","@A Reference Object must be in a background layer.")
  57.     CALL Exiting
  58. END
  59.  
  60. /* -------------------------------------------------------------------- */
  61.                                     /* Reading Global Macro Preferences */
  62. BEHDefaultFilePath = "Sys:"
  63. BEHSettingsSavedTo = "T:"
  64. BEHSpeechAndSound = "1"
  65.  
  66. IF (EXISTS("S:PlugInPrefs")) THEN DO
  67.     IF (~OPEN(PlugInPrefs, "S:PlugInPrefs", 'R')) THEN BREAK
  68.     IF (READLN(PlugInPrefs) ~= "PlugInPrefs") THEN BREAK
  69.     BEHDefaultFilePath = READLN(PlugInPrefs)
  70.     BEHSettingsSavedTo = READLN(PlugInPrefs)
  71.     BEHSpeechAndSound = READLN(PlugInPrefs)
  72.     CALL CLOSE(PlugInPrefs)
  73. END
  74.  
  75. /* -------------------------------------------------------------------- */
  76.                                             /* Recalling Macro Settings */
  77. ReqMode = "1" ; ReqSelect = "2" ; ReqBorder = "1"
  78.  
  79. PrefsFileName = BEHSettingsSavedTo||MacrosName||".PLUG"
  80.  
  81. IF (EXISTS(PrefsFileName)) THEN DO
  82.     IF (~OPEN(PrefsFile, PrefsFileName, 'R')) THEN BREAK
  83.     IF (READLN(PrefsFile) ~= MacrosName) THEN BREAK
  84.  
  85.     PARSE value READLN(PrefsFile) with ReqMode ReqSelect ReqBorder
  86.  
  87.     CALL CLOSE(PrefsFile)
  88. END
  89.  
  90. /* -------------------------------------------------------------------- */
  91.                                               /* For Information Window */
  92. BEHInfo = 1
  93.                       /* For Coming Back to Main Menu after Info Window */
  94. DO WHILE BEHInfo
  95.  
  96. /* -------------------------------------------------------------------- */
  97.                                                       /* User Interface */
  98.     CALL Req_Begin("Quick Select ©      ")
  99.  
  100.     CALL Req_AddControl("",'T',"      by Brett Hester ")
  101.     CALL Req_AddControl("",'T',"")
  102.     ReqA = Req_AddControl("",'CH'," Select  Deselect")
  103.     ReqB = Req_AddControl("",'CH'," Points  Polygons")
  104.     CALL Req_AddControl("",'T',"")
  105.     CALL Req_AddControl("",'T',"Select polygons ...")
  106.     ReqC = Req_AddControl("",'CH',"Complete Partial ")
  107.     CALL Req_AddControl("",'T',"... within the volume.")
  108.     CALL Req_AddControl("",'T',"")
  109.     ReqD = Req_AddControl("",'CH',"Information")
  110.  
  111.     CALL Req_SetVal(ReqA, ReqMode)
  112.     CALL Req_SetVal(ReqB, ReqSelect)
  113.     CALL Req_SetVal(ReqC, ReqBorder)
  114.     CALL Req_SetVal(ReqD, 0)
  115.  
  116.     OKorCancel = Req_Post() ; IF OKorCancel = 0 THEN CALL Exiting
  117.  
  118.     ReqMode = Req_GetVal(ReqA)
  119.     ReqSelect = Req_GetVal(ReqB)
  120.     ReqBorder = Req_GetVal(ReqC)
  121.     BEHInfo = Req_GetVal(ReqD)
  122.  
  123.     CALL Req_End()
  124.  
  125.     IF BEHInfo = 1 THEN CALL InformationWindows
  126.  
  127. END
  128.  
  129. /* -------------------------------------------------------------------- */
  130.                                                    /* Main Body Of Code */
  131.  
  132. IF ReqMode = 1 THEN Mode = "SET" ; IF ReqMode = 2 THEN Mode = "CLEAR"
  133.  
  134. IF ReqSelect = 1 THEN CALL Sel_Point(Mode, VOLUME, BX1 BY1 BZ1, BX2 BY2 BZ2)
  135. IF ReqSelect = 2 THEN DO
  136.     IF ReqBorder = 1 THEN CALL Sel_Polygon(Mode, VOLEXCL, BX1 BY1 BZ1, BX2 BY2 BZ2)
  137.     IF ReqBorder = 2 THEN CALL Sel_Polygon(Mode, VOLINCL, BX1 BY1 BZ1, BX2 BY2 BZ2)
  138. END
  139.  
  140. /* -------------------------------------------------------------------- */
  141.                                                      /* Saving Settings */
  142. IF (OPEN(PrefsFile, PrefsFileName, 'W')) THEN DO
  143.     CALL WRITELN(PrefsFile, MacrosName)
  144.  
  145.     CALL WRITELN(PrefsFile, ReqMode ReqSelect ReqBorder)
  146.  
  147.     CALL CLOSE(PrefsFile)
  148. END
  149.  
  150. CALL Exiting
  151.  
  152. /* -------------------------------------------------------------------- */
  153.                                                               /* Ending */
  154. Exiting:
  155.  
  156.     IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
  157.     EXIT
  158.  
  159. RETURN
  160.  
  161. /* -------------------------------------------------------------------- */
  162.                                                  /* Information Windows */
  163. InformationWindows:
  164.  
  165.     OKorCancel = Notify(2, Info1A, Info1B, Info1C, Info1D, Info1E, Info1F, Info1G, Info1H, Info1I, Info1J, Info1K, Info1L, Info1M, Info1N)
  166.     IF OKorCancel = 1 THEN CALL Notify(1, Info2A, Info2B, Info2C, Info2D, Info2E, Info2F, Info2G, Info2H, Info2I, Info2J, Info2K, Info2L, Info2M, Info2N)
  167.  
  168. RETURN
  169.  
  170. /* -------------------------------------------------------------------- */
  171.                                                       /* Error Handling */
  172. SYNTAX:
  173. ERROR:
  174.  
  175.     ErrCode = RC
  176.     ErrLine = SIGL
  177.     ErrInfo = ERRORTEXT(ErrCode)
  178.  
  179.     Err1 = "!Sorry!"
  180.     Err2 = "An Error has been detected"
  181.     Err3 = "@þ Macro -            "
  182.     Err4 = "@þ Line Number -      "
  183.     Err5 = "@þ Error Code -       "
  184.     Err6 = "@þ Error Description -"
  185.     Err7 = "@¤ Please Inform -    "
  186.     Err8 = '  "Error Notice"     '
  187.     Err9 = "  13032 Copenhill Rd."
  188.     Err10 = "  Dallas, TX. 75240  "
  189.  
  190.     Call Notify(1,Err1,Err2,Err3,MacrosName,Err4,ErrLine,Err5,ErrCode,Err6,ErrInfo,Err7,Err8,Err9,Err10)
  191.  
  192. /* -------------------------------------------------------------------- */
  193.                                              /* Advanced Error Handling */
  194.     CALL SETCLIP("ErrorMacro",MacrosName)
  195.     CALL SETCLIP("ErrorLine",ErrLine)
  196.     CALL SETCLIP("ErrorCode",ErrCode)
  197.     CALL SETCLIP("ErrorDesc",ErrInfo)
  198.  
  199.     PARSE SOURCE TempA TempB ErrFile TempC TempD TempE
  200.  
  201.     CALL SETCLIP("ErrorFile",ErrFile)
  202.  
  203. /* -------------------------------------------------------------------- */
  204.  
  205.     IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
  206.     EXIT
  207.