DIRECTORY AtomButtonsTypes, CoordSys, CSG, CSGGraphics, Feedback, SVScene, JaMSolidviews, Menus, Rope, SVInterfaceTypes, SVModelTypes, SVRayTypes, SVSceneTypes, SVSlices, SVViewersOnScene, SVTransforms, ViewerClasses; JaMSolidviewsImpl: CEDAR PROGRAM IMPORTS CoordSys, Feedback, SVScene, SVViewersOnScene, SVTransforms EXPORTS JaMSolidviews = BEGIN Assembly: TYPE = SVSceneTypes.Assembly; Camera: TYPE = SVModelTypes.Camera; CoordSysList: TYPE = SVModelTypes.CoordSysList; CoordSystem: TYPE = SVModelTypes.CoordSystem; CSGTree: TYPE = SVRayTypes.CSGTree; EditToolData: TYPE = SVInterfaceTypes.EditToolData; FeedbackData: TYPE = AtomButtonsTypes.FeedbackData; FrameBox: TYPE = REF FrameBoxObj; FrameBoxObj: TYPE = SVModelTypes.FrameBoxObj; Scene: TYPE = SVSceneTypes.Scene; ScratchpadData: TYPE = SVInterfaceTypes.ScratchpadData; ScratchViewerData: TYPE = SVInterfaceTypes.ScratchViewerData; Slice: TYPE = SVSlices.Slice; Viewer: TYPE = ViewerClasses.Viewer; ViewerToolData: TYPE = SVInterfaceTypes.ViewerToolData; editToolData: EditToolData; RegisterThisEditTool: PUBLIC PROC [etd: EditToolData] ~ { editToolData _ etd; }; Init: PROC [] ~ { }; GetCoordSys: PRIVATE PROC [csRope: Rope.ROPE, scene: Scene] RETURNS [cs: CoordSystem, success: BOOL] ~ TRUSTED { csList: CoordSysList; success _ TRUE; csList _ CoordSys.MakeListFromTree[scene.coordSysRoot]; cs _ CoordSys.FindCoordSysInList[csRope, csList ! CoordSys.CoordSysNotFound => {success _ FALSE; CONTINUE}]; IF NOT success THEN { Feedback.PutFRaw[$Solidviews, oneLiner, "Assembly %g not found", [rope[csRope]]]; Feedback.BlinkRaw[$Solidviews]; }; }; GetAssembly: PRIVATE PROC [asRope: Rope.ROPE, scene: Scene] RETURNS [as: Assembly, success: BOOL] = TRUSTED { success _ TRUE; [as, ----] _ SVScene.FindAssemblyFromName[asRope, scene !SVScene.AssemblyNotFound => { Feedback.PutFRaw[$Solidviews, oneLiner, "Assembly %g not found", [rope[asRope]]]; Feedback.BlinkRaw[$Solidviews]; success _ FALSE; CONTINUE}] }; RotX: PROC [asRope: Rope.ROPE, csRope: Rope.ROPE, degrees: REAL] ~ TRUSTED { scene: Scene _ editToolData.sceneSection.currentScene; wrt: CoordSystem; assembly: Assembly; found: BOOL; [wrt, found] _ GetCoordSys[csRope, scene]; IF NOT found THEN RETURN; [assembly, found] _ GetAssembly[asRope, scene]; IF NOT found THEN RETURN; SVTransforms.XRotate[assembly.coordSys, wrt, degrees]; SVViewersOnScene.SceneNewVersion[editToolData.currentViewerToolData]; SVViewersOnScene.PaintSceneAllViewers[$PaintEntireScene, editToolData, scene]; }; EvenScaleChildren: PROC [asRope: Rope.ROPE, scalar: REAL] ~ TRUSTED { scene: Scene _ editToolData.sceneSection.currentScene; assembly: Assembly; found: BOOL; [assembly, found] _ GetAssembly[asRope, scene]; IF NOT found THEN RETURN; SVTransforms.ScaleEvenChildren[assembly, NIL, scalar]; SVViewersOnScene.SceneNewVersion[editToolData.currentViewerToolData]; SVViewersOnScene.PaintSceneAllViewers[$PaintEntireScene, editToolData, scene]; }; SetBoundBox: PROC [boundBoxes: BOOL] ~ TRUSTED { camera: Camera; currentScene: Scene _ editToolData.sceneSection.currentScene; currentViewerToolData: ViewerToolData _ NARROW[editToolData.currentViewerToolData]; camera _ currentViewerToolData.camera; camera.useBoundBoxes _ boundBoxes; }; Init[]; END. "File: JaMSolidviewsImpl.mesa Last edited by: Bier on March 1, 1987 8:20:41 pm PST Copyright c 1984 by Xerox Corporation. All rights reserved. Contents: Someday this may be a way to call Solidviews procedures from a JaM typescript. For now, it is a set of procedures to be called from the Cedar Language Interpreter. State: TYPE = JaM.State; JaM.RegisterInit[name: "Solidviews", init: JamSolidviewsInit]; JamSolidviewsInit: PROC[state: State] ~ { state.Register["RotX", RotX]; state.Register["EvenScaleChildren", EvenScaleChildren]; }; ΚΖ˜Ihead™J™4Jšœ Οmœ1™™>J˜—š œžœ™)Jšœ™Jšœ7™7J™—š  œžœžœžœžœžœžœ˜pJ˜Jšœ žœ˜Jšœ7˜7Jšœ/˜/Jšœ*žœžœ˜<šžœžœ žœ˜JšœQ˜QJšœ˜Jšœ˜—J˜—š  œžœžœžœžœžœžœ˜mJšœ žœ˜šœΟcœ.˜7Jšœ˜JšœQ˜QJšœ˜Jšœ žœ˜Jšžœ˜ —Jšœ˜—š  œžœžœžœ žœžœ˜LJšœ6˜6Jšœ˜Jšœ˜Jšœžœ˜ J˜Jšœ*˜*Jšžœžœžœžœ˜Jšœ/˜/Jšžœžœžœžœ˜Jšœ6˜6JšœE˜ELšœN˜NJ˜—š  œžœžœ žœžœ˜EJšœ6˜6Jšœ˜Jšœžœ˜ J˜Jšœ/˜/Jšžœžœžœžœ˜Jšœ)žœ ˜6JšœE˜ELšœN˜NJ˜J˜—š  œžœžœžœ˜0J˜Jšœ=˜=Jšœ(žœ%˜SJšœ&˜&Jšœ"˜"J˜J˜—J˜Jšžœ˜—…— ²š