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

  1. /* CMD: ½ModifyOrient                                                   */
  2. /* By Brett Evan Hester      13032 Copenhill Rd. Dallas, Tx. 75240-5302 */
  3.     MacrosName = "ModifyOrient"
  4. /* Macro Type:                                                          */
  5. /* MODIFIES    * OBJECTS   * LAYER        * REMEMBERS                   */
  6. /* Description:                                                         */
  7.  
  8. Info1A = "!Modify Orientation ©          Information 1 of 2"
  9. Info1B = ""
  10. Info1C = "@This macro rotates selected layers in accordance"
  11. Info1D = '@with the "Fill in the Blank" questions.  All    '
  12. Info1E = "@rotation is based around the objs. center point."
  13. Info1F = ""
  14. Info1G = 'þ "WHAT I CONSIDER THE ..." is the personal     '
  15. Info1H = "  opinion of what side is what, regardless of   "
  16. Info1I = "  what is being displayed as what.              "
  17. Info1J = ""
  18. Info1K = "þ "'"IS BEING DISPLAYED AS ..."'" is LightWave's    "
  19. Info1L = "  opinion of what side is what.                 "
  20. Info1M = "@EXAMPLE: The cow object that comes with the VT  "
  21. Info1N = "@is backwards. Some conversion program turned it."
  22.  
  23. Info2A = "!Modify Orientation ©          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. ReqGoal = "1"
  64. ReqOrig = "2"
  65.  
  66. PrefsFileName = BEHSettingsSavedTo||MacrosName||".PLUG"
  67.  
  68. IF (EXISTS(PrefsFileName)) THEN DO
  69.     IF (~OPEN(PrefsFile, PrefsFileName, 'R')) THEN BREAK
  70.     IF (READLN(PrefsFile) ~= MacrosName) THEN BREAK
  71.  
  72.     ReqGoal = READLN(PrefsFile)
  73.     ReqOrig = READLN(PrefsFile)
  74.  
  75.     CALL CLOSE PrefsFile
  76. END
  77.  
  78. /* -------------------------------------------------------------------- */
  79.                                    /* Calculating Object's Center Point */
  80. Box = BoundingBox()
  81. PARSE var Box N X1 X2 Y1 Y2 Z1 Z2
  82.  
  83. CX = (X1 / 2) + (X2 / 2)
  84. CY = (Y1 / 2) + (Y2 / 2)
  85. CZ = (Z1 / 2) + (Z2 / 2)
  86.  
  87. /* ******************************************************************** */
  88.                                                    /* Main Body Of Code */
  89. CALL MenuRequester
  90. CALL SaveSettings
  91. IF ReqGoal = ReqOrig THEN CALL InputError
  92. CALL RotateObject
  93. CALL Exiting
  94.  
  95. /* ******************************************************************** */
  96.                                                       /* User Interface */
  97. MenuRequester:
  98.  
  99.     CALL Req_Begin("Modify Orientation ©               by Brett Hester")
  100.  
  101.     CALL Req_AddControl("",'T', "Fill in the blanks:")
  102.     CALL Req_AddControl("",'T', "")
  103.     CALL Req_AddControl("",'T', "What I consider the ...")
  104.     ReqA = Req_AddControl("",'CH',"Front   Back   Top   Bottom  Left  Right ")
  105.     CALL Req_AddControl("",'T', "is being displayed as the ...")
  106.     ReqB = Req_AddControl("",'CH',"Front   Back   Top   Bottom  Left  Right ")
  107.     CALL Req_AddControl("",'T',"(  -Z      +Z   |   +Y      -Y   |   -X      +X  )")
  108.     CALL Req_AddControl("",'T', "")
  109.     ReqC = Req_AddControl("",'CH',"Information")
  110.  
  111.     CALL Req_SetVal(ReqA, ReqGoal)
  112.     CALL Req_SetVal(ReqB, ReqOrig)
  113.     CALL Req_SetVal(ReqC, 0)
  114.  
  115.     OKorCancel = Req_Post() ; IF OKorCancel = 0 THEN CALL Exiting
  116.  
  117.     ReqGoal = Req_GetVal(ReqA)
  118.     ReqOrig = Req_GetVal(ReqB)
  119.     BEHInfo = Req_GetVal(ReqC)
  120.  
  121.     CALL Req_End()
  122.  
  123.     IF BEHInfo = 1 THEN CALL InformationWindows
  124.  
  125. RETURN
  126.  
  127. /* -------------------------------------------------------------------- */
  128.                                                    /* Main Body Of Code */
  129. RotateObject:
  130.  
  131.     IF ReqOrig = 1 THEN DO                   /* Front  */
  132.         IF ReqGoal = 1 THEN CALL Rotate(0, 'Y', CX CY CZ)   /* Front  */
  133.         IF ReqGoal = 2 THEN CALL Rotate(180, 'Y', CX CY CZ) /* Back   */
  134.  
  135.         IF ReqGoal = 3 THEN CALL Rotate(-90, 'X', CX CY CZ) /* Top    */
  136.         IF ReqGoal = 4 THEN CALL Rotate(90, 'X', CX CY CZ)  /* Bottom */
  137.  
  138.         IF ReqGoal = 5 THEN CALL Rotate(-90, 'Y', CX CY CZ) /* Left   */
  139.         IF ReqGoal = 6 THEN CALL Rotate(90, 'Y', CX CY CZ)  /* Right  */
  140.     END
  141.  
  142.     IF ReqOrig = 2 THEN DO                   /* Back   */
  143.         IF ReqGoal = 1 THEN CALL Rotate(180, 'Y', CX CY CZ) /* Front  */
  144.         IF ReqGoal = 2 THEN CALL Rotate(0, 'Y', CX CY CZ)   /* Back   */
  145.  
  146.         IF ReqGoal = 3 THEN CALL Rotate(90, 'X', CX CY CZ)  /* Top    */
  147.         IF ReqGoal = 4 THEN CALL Rotate(-90, 'X', CX CY CZ) /* Bottom */
  148.  
  149.         IF ReqGoal = 5 THEN CALL Rotate(90, 'Y', CX CY CZ)  /* Left   */
  150.         IF ReqGoal = 6 THEN CALL Rotate(-90, 'Y', CX CY CZ) /* Right  */
  151.     END
  152.  
  153.     IF ReqOrig = 3 THEN DO                   /* Top    */
  154.         IF ReqGoal = 1 THEN CALL Rotate(90, 'X', CX CY CZ)  /* Front  */
  155.         IF ReqGoal = 2 THEN CALL Rotate(-90, 'X', CX CY CZ) /* Back   */
  156.  
  157.         IF ReqGoal = 3 THEN CALL Rotate(0, 'X', CX CY CZ)   /* Top    */
  158.         IF ReqGoal = 4 THEN CALL Rotate(180, 'X', CX CY CZ) /* Bottom */
  159.  
  160.         IF ReqGoal = 5 THEN CALL Rotate(-90, 'Z', CX CY CZ) /* Left   */
  161.         IF ReqGoal = 6 THEN CALL Rotate(90, 'Z', CX CY CZ)  /* Right  */
  162.     END
  163.  
  164.     IF ReqOrig = 4 THEN DO                   /* Bottom */
  165.         IF ReqGoal = 1 THEN CALL Rotate(-90, 'X', CX CY CZ) /* Front  */
  166.         IF ReqGoal = 2 THEN CALL Rotate(90, 'X', CX CY CZ)  /* Back   */
  167.  
  168.         IF ReqGoal = 3 THEN CALL Rotate(180, 'X', CX CY CZ) /* Top    */
  169.         IF ReqGoal = 4 THEN CALL Rotate(0, 'X', CX CY CZ)   /* Bottom */
  170.  
  171.         IF ReqGoal = 5 THEN CALL Rotate(90, 'Z', CX CY CZ)  /* Left   */
  172.         IF ReqGoal = 6 THEN CALL Rotate(-90, 'Z', CX CY CZ) /* Right  */
  173.     END
  174.  
  175.     IF ReqOrig = 5 THEN DO                   /* Left   */
  176.         IF ReqGoal = 1 THEN CALL Rotate(90, 'Y', CX CY CZ)  /* Front  */
  177.         IF ReqGoal = 2 THEN CALL Rotate(-90, 'Y', CX CY CZ) /* Back   */
  178.  
  179.         IF ReqGoal = 3 THEN CALL Rotate(90, 'Z', CX CY CZ)  /* Top    */
  180.         IF ReqGoal = 4 THEN CALL Rotate(-90, 'Z', CX CY CZ) /* Bottom */
  181.  
  182.         IF ReqGoal = 5 THEN CALL Rotate(0, 'Y', CX CY CZ)   /* Left   */
  183.         IF ReqGoal = 6 THEN CALL Rotate(180, 'Y', CX CY CZ) /* Right  */
  184.     END
  185.  
  186.     IF ReqOrig = 6 THEN DO                   /* Right  */
  187.         IF ReqGoal = 1 THEN CALL Rotate(-90, 'Y', CX CY CZ) /* Front  */
  188.         IF ReqGoal = 2 THEN CALL Rotate(90, 'Y', CX CY CZ)  /* Back   */
  189.  
  190.         IF ReqGoal = 3 THEN CALL Rotate(-90, 'Z', CX CY CZ) /* Top    */
  191.         IF ReqGoal = 4 THEN CALL Rotate(90, 'Z', CX CY CZ)  /* Bottom */
  192.  
  193.         IF ReqGoal = 5 THEN CALL Rotate(180, 'Y', CX CY CZ) /* Left   */
  194.         IF ReqGoal = 6 THEN CALL Rotate(0, 'Y', CX CY CZ)   /* Right  */
  195.     END
  196.  
  197. RETURN
  198.  
  199. /* -------------------------------------------------------------------- */
  200.                                                      /* Saving Settings */
  201. SaveSettings:
  202.  
  203.     IF (OPEN(PrefsFile, PrefsFileName, 'W')) THEN DO
  204.         CALL WRITELN(PrefsFile, MacrosName)
  205.  
  206.         CALL WRITELN(PrefsFile, ReqGoal)
  207.         CALL WRITELN(PrefsFile, ReqOrig)
  208.  
  209.         CALL CLOSE PrefsFile
  210.     END
  211.  
  212. RETURN
  213.  
  214. /* -------------------------------------------------------------------- */
  215.  
  216. InputError:
  217.  
  218.     CALL Notify(1,"!Sorry!","Selected was already displayed as requested.","@No modification or rotation was done.")
  219.     CALL Exiting
  220.  
  221. RETURN
  222.  
  223. /* -------------------------------------------------------------------- */
  224.                                                               /* Ending */
  225. Exiting:
  226.  
  227.     IF VT3DLib THEN CALL REMLIB("LWModelerARexx.port")
  228.     EXIT
  229.  
  230. RETURN
  231.  
  232. /* -------------------------------------------------------------------- */
  233.                                                  /* Information Windows */
  234. InformationWindows:
  235.  
  236.     OKorCancel = Notify(2, Info1A, Info1B, Info1C, Info1D, Info1E, Info1F, Info1G, Info1H, Info1I, Info1J, Info1K, Info1L, Info1M, Info1N)
  237.     IF OKorCancel = 1 THEN CALL Notify(1, Info2A, Info2B, Info2C, Info2D, Info2E, Info2F, Info2G, Info2H, Info2I, Info2J, Info2K, Info2L, Info2M, Info2N)
  238.     CALL MenuRequester
  239.  
  240. RETURN
  241.  
  242. /* -------------------------------------------------------------------- */
  243.                                                       /* Error Handling */
  244. SYNTAX:
  245. ERROR:
  246.  
  247.     ErrCode = RC
  248.     ErrLine = SIGL
  249.     ErrInfo = ERRORTEXT(ErrCode)
  250.  
  251.     Err1 = "!Sorry!"
  252.     Err2 = "An Error has been detected"
  253.     Err3 = "@þ Macro -            "
  254.     Err4 = "@þ Line Number -      "
  255.     Err5 = "@þ Error Code -       "
  256.     Err6 = "@þ Error Description -"
  257.     Err7 = "@¤ Please Inform -    "
  258.     Err8 = '  "Error Notice"     '
  259.     Err9 = "  13032 Copenhill Rd."
  260.     Err10 = "  Dallas, TX. 75240  "
  261.  
  262.     Call Notify(1,Err1,Err2,Err3,MacrosName,Err4,ErrLine,Err5,ErrCode,Err6,ErrInfo,Err7,Err8,Err9,Err10)
  263.  
  264. /* -------------------------------------------------------------------- */
  265.                                              /* Advanced Error Handling */
  266.     CALL SETCLIP("ErrorMacro",MacrosName)
  267.     CALL SETCLIP("ErrorLine",ErrLine)
  268.     CALL SETCLIP("ErrorCode",ErrCode)
  269.     CALL SETCLIP("ErrorDesc",ErrInfo)
  270.  
  271.     PARSE SOURCE TempA TempB ErrFile TempC TempD TempE
  272.  
  273.     CALL SETCLIP("ErrorFile",ErrFile)
  274.  
  275. /* -------------------------------------------------------------------- */
  276.  
  277.     IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
  278.     EXIT
  279.