home *** CD-ROM | disk | FTP | other *** search
- /* CMD: ½MotionToCurve */
- /* By Brett Evan Hester 13032 Copenhill Rd. Dallas, Tx. 75240-5302 */
- MacrosName = "MotionToCurve"
- /* Macro Type: */
- /* CREATES * MOTIONS * OBJECTS * REMEMBERS */
- /* Description: */
-
- /* "Motion To Curve © " */
- /* "This macro loads a motion file and makes a curve" */
- /* "in modeler. " */
-
- /* "Special Thanks to: " */
- /* "Arnie Cachelin Henry Ribron Mark J. Holland " */
- /* "J. Phil Kelso Terry Wester Steven K. Simms " */
- /* "Kevin DeRita Greg Glaser William S. Hawes" */
- /* "NewTek © Commodore © INOVAtronics © " */
-
- /* "This macro represents a lot of time & hard work." */
- /* "Encourage people to create new ones and not kill" */
- /* "that possibility by stealing those that are out." */
-
- /* -------------------------------------------------------------------- */
- /* Start Error Detection (See End) */
- SIGNAL ON ERROR
- SIGNAL ON SYNTAX
- /* Address LightWave */
- VT3DLib = ADDLIB("LWModelerARexx.port",0)
- ADDRESS "LWModelerARexx.port"
-
- /* -------------------------------------------------------------------- */
- /* Reading Global Macro Preferences */
- BEHDefaultFilePath = "Sys:"
- BEHSettingsSavedTo = "T:"
- BEHSpeechAndSound = "1"
-
- IF (EXISTS("S:PlugInPrefs")) THEN DO
- IF (~OPEN(PlugInPrefs, "S:PlugInPrefs", 'R')) THEN BREAK
- IF (READLN(PlugInPrefs) ~= "PlugInPrefs") THEN BREAK
- BEHDefaultFilePath = READLN(PlugInPrefs)
- BEHSettingsSavedTo = READLN(PlugInPrefs)
- BEHSpeechAndSound = READLN(PlugInPrefs)
- CALL CLOSE PlugInPrefs
- END
-
- /* -------------------------------------------------------------------- */
- /* Recalling Macro Settings */
- FilePath = "Motions"
- FileName = ""
-
- PrefsFileName = BEHSettingsSavedTo||MacrosName||".PLUG"
-
- IF (EXISTS(PrefsFileName)) THEN DO
- IF (~OPEN(PrefsFile, PrefsFileName, 'R')) THEN BREAK
- IF (READLN(PrefsFile) ~= MacrosName) THEN BREAK
-
- FilePath = READLN(PrefsFile)
- FileName = READLN(PrefsFile)
-
- CALL CLOSE PrefsFile
- END
-
- /* ******************************************************************** */
- /* Main Body Of Code */
- CALL FileRequester
- CALL SaveSettings
- CALL ReadMotion
- CALL CreateCurve
- CALL Exiting
-
- /* ******************************************************************** */
- /* File Requester */
- FileRequester:
-
- FileReq = GetFileName("-- Load Motion --", FilePath, FileName)
- IF FileReq = "(none)" THEN CALL Exiting
-
- CALL ExtractName
- CALL VerifyFile
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Extract Name and Path */
- ExtractName:
-
- FileReqLength = LENGTH(FileReq)
- FileDivider = LASTPOS("/",FileReq)
- IF FileDivider = 0 THEN FileDivider = LASTPOS(":",FileReq)
- FileNameLength = FileReqLength - FileDivider
-
- FilePath = STRIP(LEFT(FileReq, FileDivider),"T","/")
- FileName = RIGHT(FileReq, FileNameLength)
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Verify File */
- VerifyFile:
-
- IF (~OPEN(ReadMeFile, FileReq, 'R')) THEN DO
- CALL Notify(1,"!Sorry!",'@Unable to load "'||FileReq||'"')
- CALL FileRequester
- END
-
- IF UPPER(READLN(ReadMeFile)) ~= "LWMO" THEN DO
- CALL Notify(1,"!Sorry!",'@File "'||FileReq||'"',"not recognized as being a motion file.")
- CALL CLOSE(ReadMeFile)
- CALL FileRequester
- END
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Reading Motion File */
- ReadMotion:
-
- CALL READLN(ReadMeFile) /* Magic # */
- CALL READLN(ReadMeFile) /* Channels */
- NumOfKeys = READLN(ReadMeFile) /* # Keys */
-
- DO i=1 TO NumOfKeys
- Key.i = READLN(ReadMeFile) /* XYZ HPB WHD */
- CALL READLN(ReadMeFile) /* Key, Spline */
- END
-
- CALL CLOSE(ReadMeFile)
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Creating Curve */
- CreateCurve:
-
- CALL Add_Begin()
- PointList = ""
-
- DO i=1 TO NumOfKeys
- PARSE var Key.i PX PY PZ .
- CALL Add_Point(PX PY PZ)
- PointList = PointList i
- END
-
- CALL Add_Curve(PointList)
- CALL Add_End()
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Saving Macro Settings */
- SaveSettings:
-
- IF (OPEN(PrefsFile, PrefsFileName, 'W')) THEN DO
- CALL WRITELN(PrefsFile, MacrosName)
-
- CALL WRITELN(PrefsFile, FilePath)
- CALL WRITELN(PrefsFile, FileName)
-
- CALL CLOSE PrefsFile
- END
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Ending */
- Exiting:
-
- IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
- EXIT
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Error Handling */
- SYNTAX:
- ERROR:
-
- ErrCode = RC
- ErrLine = SIGL
- ErrInfo = ERRORTEXT(ErrCode)
-
- Err1 = "!Sorry!"
- Err2 = "An Error has been detected"
- Err3 = "@þ Macro - "
- Err4 = "@þ Line Number - "
- Err5 = "@þ Error Code - "
- Err6 = "@þ Error Description -"
- Err7 = "@¤ Please Inform - "
- Err8 = ' "Error Notice" '
- Err9 = " 13032 Copenhill Rd."
- Err10 = " Dallas, TX. 75240 "
-
- Call Notify(1,Err1,Err2,Err3,MacrosName,Err4,ErrLine,Err5,ErrCode,Err6,ErrInfo,Err7,Err8,Err9,Err10)
-
- /* -------------------------------------------------------------------- */
- /* Advanced Error Handling */
- CALL SETCLIP("ErrorMacro",MacrosName)
- CALL SETCLIP("ErrorLine",ErrLine)
- CALL SETCLIP("ErrorCode",ErrCode)
- CALL SETCLIP("ErrorDesc",ErrInfo)
-
- PARSE SOURCE TempA TempB ErrFile TempC TempD TempE
-
- CALL SETCLIP("ErrorFile",ErrFile)
-
- /* -------------------------------------------------------------------- */
-
- IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
- EXIT
-