Пример #1
0
    static void ExportSTL(bool isBinary)
    {
        // get selected meshes //
        Mesh[]      meshes;
        Matrix4x4[] matrices;
        STL.GetMeshesAndMatrixes(Selection.gameObjects, out meshes, out matrices);

        // display dialog if nothing no meshes are selected //
        if (meshes.Length == 0)
        {
            EditorUtility.DisplayDialog("Nothing to export", "Select one or more GameObjects with MeshFilter or SkinnedMeshRenderer components attached.", "Close");
            return;
        }

        // display dialog to get save path //
        string filePath = EditorUtility.SaveFilePanel("Save STL file", DefaultDirectory(), DeafultFileName(), "stl");

        // export //
        if (isBinary)
        {
            STL.ExportBinary(meshes, matrices, filePath);
        }
        else
        {
            STL.ExportText(meshes, matrices, filePath);
        }

        // display feedback //
        string meshesPlural = meshes.Length == 1 ? "mesh" : "meshes";

        EditorUtility.DisplayDialog("STL export complete", "Exported " + meshes.Length + " Unity " + meshesPlural + " combined in a STL file.", "Close");
    }
Пример #2
0
        public void ExportToBinarySTL()
        {
            string filePath = DefaultDirectory() + "/stl_example_binary.stl";

            STL.ExportBinary(objects, filePath);
            Debug.Log("Exported " + objectCount + " objects to binary STL file." + System.Environment.NewLine + filePath);
        }
Пример #3
0
    public static void ExportBinarySTL()
    {
        // get selected meshes //
        GameObject[]      objects    = Selection.gameObjects;
        List <MeshFilter> filterList = new List <MeshFilter>();

        for (int g = 0; g < objects.Length; g++)
        {
            MeshFilter[] filters = objects[g].GetComponentsInChildren <MeshFilter>();
            for (int f = 0; f < filters.Length; f++)
            {
                if (filters[f] != null)
                {
                    filterList.Add(filters[f]);
                }
            }
        }

        // display dialog if nothing no meshes are selected //
        if (filterList.Count == 0)
        {
            EditorUtility.DisplayDialog("Nothing to export", "Select one or more GameObjects with MeshFilter components attached.", "Close");
            return;
        }

        // get default directory //
        string defaultDirectory = "";

        if (Application.platform == RuntimePlatform.OSXEditor)
        {
            defaultDirectory = System.Environment.GetEnvironmentVariable("HOME") + "/Desktop";
        }
        else
        {
            defaultDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);
        }

        // get default file name //
        string defaultName = DateTimeCode();

        if (Application.loadedLevelName != "")
        {
            defaultName = Application.loadedLevelName + " " + defaultName;
        }

        // display dialog to get save path //
        string filePath = EditorUtility.SaveFilePanel("Save binary STL file", defaultDirectory, defaultName, "stl");

        // export //
        STL.ExportBinary(filterList.ToArray(), filePath);

        // display feedback //
        string meshesPlural = filterList.Count == 1 ? "mesh" : "meshes";

        EditorUtility.DisplayDialog("STL export complete", "Exported " + filterList.Count + " Unity " + meshesPlural + " combined in a binary STL file.", "Close");
    }
Пример #4
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey("up"))
        {
            Debug.Log("Pressed up. Saving Placement.");

            //find the frameMarkers
            GameObject[] frameMarkers = GameObject.FindGameObjectsWithTag("primitive2d");
            foreach (GameObject frameMarker in frameMarkers)
            {
                GameObject shape    = frameMarker.transform.GetChild(0).gameObject;              //get the shape in each frameMarker
                Renderer   renderer = shape.transform.GetComponentInChildren <Renderer>();       //get the renderer,
                if (renderer.enabled == true)                                                    //check to see if the frameMarker is in the playing field
                {
                    GameObject planeFrame = new GameObject("planeFrame");                        //create new plane which isn't being tracked


                    GameObject globalFrame = GameObject.Find("globalFrameTest");
                    GameObject clone       = Instantiate(shape) as GameObject;
                    clone.transform.parent = planeFrame.transform;

                    RaycastHit hitInfo;
                    LayerMask  layerMask = 1 << 8;                     // only want the plane
                    if (Physics.Raycast(Camera.main.transform.position, (shape.transform.position - Camera.main.transform.position), out hitInfo, 5000, layerMask))
                    {
                        planeFrame.transform.position = hitInfo.point;
                    }
                    else
                    {
                        planeFrame.transform.localPosition = frameMarker.transform.position;
                    }                           //copy position, rotation, and scale
                    planeFrame.transform.rotation   = frameMarker.transform.rotation;
                    planeFrame.transform.localScale = frameMarker.transform.localScale;

                    planeFrame.transform.parent = globalFrame.transform;

                    //
//					ray = Camera.main.ScreenPointToRay(frameMarker.transform.position);
                }
            }
        }


        if (Input.GetKey("down"))
        {
            //		MeshFilter[] filters = GameObject.Find ("Block01")
            MeshFilter[] filters = GetComponentsInChildren <MeshFilter> ();
            Debug.Log("Pressed down.");

            STL.ExportBinary(filters);
        }
        DrawRayHit();
    }
Пример #5
0
    void RightClickToSaveSTL()
    {
        if (Input.GetMouseButtonDown(1))
        {
            Debug.Log("Pressed right click.");
            spawns = GameObject.FindGameObjectsWithTag("Spawncube");
            MeshFilter[] filters = new MeshFilter[spawns.Length];
            for (int i = 0; i < spawns.Length; i++)
            {
                filters[i] = spawns[i].GetComponent <MeshFilter>();
            }

            //		MeshFilter[] filters = gameObject.GetComponentsInChildren<MeshFilter>();
            STL.ExportBinary(filters);
        }
    }
Пример #6
0
    private void HandHoverUpdate(Hand hand)
    {
        if (hand.GetStandardInteractionButtonDown() || ((hand.controller != null) && hand.controller.GetPressDown(Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger)))
        {
            if (oilTarget && oilTarget.exportTarget != null)
            {
                System.DateTime timeNow  = System.DateTime.Now;
                string          dtString = timeNow.Day + "-" + timeNow.Month + "-" + timeNow.Year + "_"
                                           + timeNow.Hour + "-" + timeNow.Minute + "-" + timeNow.Second;

                STL.ExportBinary(oilTarget.exportTarget.GetComponent <MeshFilter>(), Application.dataPath + "/Exports/", "object_" + dtString);
                Destroy(oilTarget.exportTarget);
                Debug.Log("Object Exported");
                //SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex, LoadSceneMode.Single);
            }
        }
    }