Ejemplo n.º 1
0
    public SliceFeature(Mesh input)
    {
        MeshCheck meshCheck = new MeshCheck();

        meshCheck.setMesh(input);
        DMesh3 mesh = meshCheck.ToUnityWatertightMesh().ToDMesh3();

        if (!mesh.IsClosed())
        {
            return;
        }
        // center mesh above origin
        AxisAlignedBox3d bounds       = mesh.CachedBounds;
        Vector3d         baseCenterPt = bounds.Center - bounds.Extents.z * Vector3d.AxisZ;

        MeshTransforms.Translate(mesh, -baseCenterPt);

        // create print mesh set
        meshes = new PrintMeshAssembly();
        meshes.AddMesh(mesh, PrintMeshOptions.Default());

        // create settings
        //MakerbotSettings settings = new MakerbotSettings(Makerbot.Models.Replicator2);
        //PrintrbotSettings settings = new PrintrbotSettings(Printrbot.Models.Plus);
        //MonopriceSettings settings = new MonopriceSettings(Monoprice.Models.MP_Select_Mini_V2);
        settings = new RepRapSettings(RepRap.Models.Unknown);
    }
Ejemplo n.º 2
0
    protected override void OnReadMeshFeature(XmlNode xml)
    {
        basis.FromString(xml.Attributes["basis"].Value);
        if (xml.Attributes["useThreshold"] != null)
        {
            useThreshold = Convert.ToBoolean(xml.Attributes["useThreshold"].Value);
        }
        var strVerts = xml.Attributes["mesh"].Value.Split(' ');
        var verts    = new Vector3[strVerts.Length / 3];

        for (int i = 0; i < strVerts.Length / 3; i++)
        {
            verts[i].x = strVerts[i * 3 + 0].ToFloat();
            verts[i].y = strVerts[i * 3 + 1].ToFloat();
            verts[i].z = strVerts[i * 3 + 2].ToFloat();
        }
        var indices = new int[verts.Length];

        for (int i = 0; i < indices.Length; i++)
        {
            indices[i] = i;
        }
        mesh.Clear();
        mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;
        mesh.vertices    = verts;
        mesh.SetIndices(indices, MeshTopology.Triangles, 0);
        mesh.RecalculateBounds();
        mesh.RecalculateNormals();
        mesh.RecalculateTangents();
        meshCheck.setMesh(mesh);
        hitMesh = new DMeshAABBTree3(mesh.ToDMesh3(), true);
    }
Ejemplo n.º 3
0
    public MeshImportFeature(byte[] data)
    {
        MemoryStream ms = new MemoryStream(data);

        mesh = Parabox.STL.pb_Stl_Importer.Import(ms)[0];
        meshCheck.setMesh(mesh);
        //mesh = meshCheck.ToUnityWatertightMesh();
        basis = new ExpBasis();
    }