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"); }
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); }
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"); }
// 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(); }
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); } }
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); } } }