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

  1. /* CMD: ½QuickFix                                                       */
  2. /* By Brett Evan Hester      13032 Copenhill Rd. Dallas, Tx. 75240-5302 */
  3.     MacrosName = "QuickFix"
  4. /* Macro Type:                                                          */
  5. /* MODIFIES    * OBJECTS   * LAYER        * WARNING!     * REMEMBERS    */
  6. /* Description:                                                         */
  7.  
  8. Info1A = "!Quick Fix ©                   Information 1 of 2"
  9. Info1B = ""
  10. Info1C = "@This macro may be useful in solving basic object"
  11. Info1D = "@contruction; however, it may be unnecessary or  "
  12. Info1E = "@harmful to certain objs. in the way they render."
  13. Info1F = ""
  14. Info1G = "þ The reason for MERGE PNT. listed twice is the "
  15. Info1H = "  fact if two sided is chosen, mult.pnts. exist."
  16. Info1I = "þ The suggested default is every option on.     "
  17. Info1J = ""
  18. Info1K = "þ This macro affects the entire layer.          "
  19. Info1L = ""
  20. Info1M = "þ Due to the multiple actions made by this macro"
  21. Info1N = '  "UNDO" will not work properly.                '
  22.  
  23. Info2A = "!Quick Fix ©                   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.                                     /* Reading Global Macro Preferences */
  48. BEHDefaultFilePath = "Sys:"
  49. BEHSettingsSavedTo = "T:"
  50. BEHSpeechAndSound = "1"
  51.  
  52. IF (EXISTS("S:PlugInPrefs")) THEN DO
  53.     IF (~OPEN(PlugInPrefs, "S:PlugInPrefs", 'R')) THEN BREAK
  54.     IF (READLN(PlugInPrefs) ~= "PlugInPrefs") THEN BREAK
  55.     BEHDefaultFilePath = READLN(PlugInPrefs)
  56.     BEHSettingsSavedTo = READLN(PlugInPrefs)
  57.     BEHSpeechAndSound = READLN(PlugInPrefs)
  58.     CALL CLOSE(PlugInPrefs)
  59. END
  60.  
  61. /* -------------------------------------------------------------------- */
  62.                                             /* Recalling Macro Settings */
  63. ReqMergeA = 1
  64. ReqAlign = 1
  65. ReqUnify = 1
  66. ReqDouble = 1
  67. ReqMergeB = 1
  68. ReqTriple = 1
  69.  
  70. PrefsFileName = BEHSettingsSavedTo||MacrosName||".PLUG"
  71.  
  72. IF (EXISTS(PrefsFileName)) THEN DO
  73.     IF (~OPEN(PrefsFile, PrefsFileName, 'R')) THEN BREAK
  74.     IF (READLN(PrefsFile) ~= MacrosName) THEN BREAK
  75.  
  76.     ReqMergeA = READLN(PrefsFile)
  77.     ReqAlign = READLN(PrefsFile)
  78.     ReqUnify = READLN(PrefsFile)
  79.     ReqDouble = READLN(PrefsFile)
  80.     ReqMergeB = READLN(PrefsFile)
  81.     ReqTriple = READLN(PrefsFile)
  82.  
  83.     CALL CLOSE(PrefsFile)
  84. END
  85.  
  86. /* -------------------------------------------------------------------- */
  87.                                               /* For Information Window */
  88. BEHInfo = 1
  89.                       /* For Coming Back to Main Menu after Info Window */
  90. DO WHILE BEHInfo = 1
  91.  
  92. /* -------------------------------------------------------------------- */
  93.                                                       /* User Interface */
  94.     CALL Req_Begin("Quick Fix ©                         by Brett Hester")
  95.  
  96.     CALL Req_AddControl("_ _ _ _ _ _ _ _ _ _ _ _ _",'T',"_ _ _ _ _ _ _ _ _ _")
  97.     CALL Req_AddControl('þ CAUTION: "UNDO" will not','T',"work on this macro!")
  98.     CALL Req_AddControl("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯",'T',"¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯")
  99.     ReqA = Req_AddControl("Remove duplicate points    ½",'CH',"  Merge Points   X")
  100.     ReqB = Req_AddControl("Flip the same direction    ½",'CH'," Align Polygons  X")
  101.     ReqC = Req_AddControl("Remove duplicate polygons  ½",'CH'," Unify Polygons  X")
  102.     ReqD = Req_AddControl("Double-Side polygons       ½",'CH'," Copy,Flip,Paste X")
  103.     ReqE = Req_AddControl("Remove duplicate points    ½",'CH',"  Merge Points   X")
  104.     ReqF = Req_AddControl("Triple non-planer polygons ½",'CH',"Flatten Polygons X")
  105.     CALL Req_AddControl("",'T',"")
  106.     BEHInfo = Req_AddControl("",'CH',"Information")
  107.                                                  /* Settings Requesters */
  108.     CALL Req_SetVal(ReqA, ReqMergeA)
  109.     CALL Req_SetVal(ReqB, ReqAlign)
  110.     CALL Req_SetVal(ReqC, ReqUnify)
  111.     CALL Req_SetVal(ReqD, ReqDouble)
  112.     CALL Req_SetVal(ReqE, ReqMergeB)
  113.     CALL Req_SetVal(ReqF, ReqTriple)
  114.     CALL Req_SetVal(BEHInfo, 0)
  115.                                                        /* OK or Cancel? */
  116.     OKorCancel = Req_Post() ; IF OKorCancel = 0 THEN CALL Exiting
  117.                                              /* Retrieving User's Input */
  118.     ReqMergeA = Req_GetVal(ReqA)
  119.     ReqAlign = Req_GetVal(ReqB)
  120.     ReqUnify = Req_GetVal(ReqC)
  121.     ReqDouble = Req_GetVal(ReqD)
  122.     ReqMergeB = Req_GetVal(ReqE)
  123.     ReqTriple = Req_GetVal(ReqF)
  124.     BEHInfo = Req_GetVal(BEHInfo)
  125.  
  126.     CALL Req_End()
  127.  
  128.     IF BEHInfo = 1 THEN CALL InformationWindows
  129.  
  130. END
  131.  
  132. /* -------------------------------------------------------------------- */
  133.                                                    /* Main Body of Code */
  134. IF ReqMergeA = 1 THEN CALL MergePoints()
  135. IF ReqAlign = 1 THEN CALL AlignPols()
  136. IF ReqUnify = 1 THEN CALL UnifyPols()
  137. IF ReqDouble = 1 THEN DO
  138.     CALL Copy()
  139.     CALL Flip()
  140.     CALL Paste()
  141. END
  142. IF ReqMergeB = 1 THEN CALL MergePoints()
  143. IF ReqTriple = 1 THEN DO
  144.     CALL Sel_Mode(USER)
  145.     CALL Sel_Polygon(SET, NONPLANAR)
  146.     CALL Triple()
  147. END
  148.  
  149. /* -------------------------------------------------------------------- */
  150.                                             /* Recording Macro Settings */
  151. IF (OPEN(PrefsFile, PrefsFileName, 'W')) THEN DO
  152.     CALL WRITELN(PrefsFile, MacrosName)
  153.  
  154.     CALL WRITELN(PrefsFile, ReqMergeA)
  155.     CALL WRITELN(PrefsFile, ReqAlign)
  156.     CALL WRITELN(PrefsFile, ReqUnify)
  157.     CALL WRITELN(PrefsFile, ReqDouble)
  158.     CALL WRITELN(PrefsFile, ReqMergeB)
  159.     CALL WRITELN(PrefsFile, ReqTriple)
  160.  
  161.     CALL CLOSE(PrefsFile)
  162. END
  163.  
  164. CALL Exiting
  165.  
  166. /* -------------------------------------------------------------------- */
  167.                                                               /* Ending */
  168. Exiting:
  169.  
  170.     IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
  171.     EXIT
  172.  
  173. RETURN
  174.  
  175. /* -------------------------------------------------------------------- */
  176.                                                  /* Information Windows */
  177. InformationWindows:
  178.  
  179.     OKorCancel = Notify(2, Info1A, Info1B, Info1C, Info1D, Info1E, Info1F, Info1G, Info1H, Info1I, Info1J, Info1K, Info1L, Info1M, Info1N)
  180.     IF OKorCancel = 1 THEN CALL Notify(1, Info2A, Info2B, Info2C, Info2D, Info2E, Info2F, Info2G, Info2H, Info2I, Info2J, Info2K, Info2L, Info2M, Info2N)
  181.  
  182. RETURN
  183.  
  184. /* -------------------------------------------------------------------- */
  185.                                                       /* Error Handling */
  186. SYNTAX:
  187. ERROR:
  188.  
  189.     ErrCode = RC
  190.     ErrLine = SIGL
  191.     ErrInfo = ERRORTEXT(ErrCode)
  192.  
  193.     Err1 = "!Sorry!"
  194.     Err2 = "An Error has been detected"
  195.     Err3 = "@þ Macro -            "
  196.     Err4 = "@þ Line Number -      "
  197.     Err5 = "@þ Error Code -       "
  198.     Err6 = "@þ Error Description -"
  199.     Err7 = "@¤ Please Inform -    "
  200.     Err8 = '  "Error Notice"     '
  201.     Err9 = "  13032 Copenhill Rd."
  202.     Err10 = "  Dallas, TX. 75240  "
  203.  
  204.     Call Notify(1,Err1,Err2,Err3,MacrosName,Err4,ErrLine,Err5,ErrCode,Err6,ErrInfo,Err7,Err8,Err9,Err10)
  205.  
  206. /* -------------------------------------------------------------------- */
  207.                                              /* Advanced Error Handling */
  208.     CALL SETCLIP("ErrorMacro",MacrosName)
  209.     CALL SETCLIP("ErrorLine",ErrLine)
  210.     CALL SETCLIP("ErrorCode",ErrCode)
  211.     CALL SETCLIP("ErrorDesc",ErrInfo)
  212.  
  213.     PARSE SOURCE TempA TempB ErrFile TempC TempD TempE
  214.  
  215.     CALL SETCLIP("ErrorFile",ErrFile)
  216.  
  217. /* -------------------------------------------------------------------- */
  218.  
  219.     IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
  220.     EXIT
  221.