コード例 #1
0
 public virtual ParameterObjectData GetParameterObjectData(string colStr, params string[] paramValues)
 {
     if (Children == null || Children.Count == 0)
     {
         return(new ParameterObjectData(ReplaceNames(xExpr, ParamNames, paramValues),
                                        ReplaceNames(yExpr, ParamNames, paramValues),
                                        ReplaceNames(zExpr, ParamNames, paramValues),
                                        (new ExpressionParser(ReplaceNames(SminExpr, ParamNames, paramValues), null)).runnable(null),
                                        (new ExpressionParser(ReplaceNames(SmaxExpr, ParamNames, paramValues), null)).runnable(null),
                                        (new ExpressionParser(ReplaceNames(TminExpr, ParamNames, paramValues), null)).runnable(null),
                                        (new ExpressionParser(ReplaceNames(TmaxExpr, ParamNames, paramValues), null)).runnable(null),
                                        (int)(new ExpressionParser(ReplaceNames(nsExpr, ParamNames, paramValues), null)).runnable(null),
                                        (int)(new ExpressionParser(ReplaceNames(ntExpr, ParamNames, paramValues), null)).runnable(null),
                                        WrapS, WrapT, colStr));
     }
     else
     {
         ParameterObjectData pObjData = new ParameterObjectData();
         for (int i = 0; i < Children.Count; i++)
         {
             pObjData.Children.Add(Children[i].GetParameterObjectData(colStr, paramValues));
         }
         return(pObjData);
     }
 }
コード例 #2
0
 public AddImageDialog(ParameterObjectData pOD, GeometryModel3D gm3D)
 {
     pObjData  = pOD;
     geomMod3D = gm3D;
     Ns        = pOD.NumFacetS + 1;
     Nt        = pOD.NumFacetT + 1;
     InitializeComponent();
 }
コード例 #3
0
        public void AddImageToGeometryModel3D(GeometryModel3D geomMod3D)
        {
            MeshGeometry3D meshGeom      = (MeshGeometry3D)geomMod3D.Geometry;
            MaterialGroup  materialGroup = (MaterialGroup)geomMod3D.Material;
            int            iBegin        = imageIndices[0];
            int            jBegin        = imageIndices[1];
            int            iEnd          = imageIndices[2];
            int            jEnd          = imageIndices[3];
            int            Ns            = NumFacetS + 1;
            int            Nt            = NumFacetT + 1;

            if (iBegin >= iEnd || jBegin >= jEnd)
            {
                throw (new Exception("Invalid Index Range"));
            }
            meshGeom.TextureCoordinates.Clear();
            for (int n = 0; n < meshGeom.Positions.Count; n++)
            {
                meshGeom.TextureCoordinates.Add(new Point(-1, -1));
            }
            ImageBrush imgBrush = new ImageBrush(imageSource);

            imgBrush.ViewportUnits = BrushMappingMode.Absolute;
            imgBrush.Transform     = new MatrixTransform(imageTransformMatrix);
            if (imageTiled)
            {
                imgBrush.TileMode = TileMode.Tile;
            }
            else
            {
                imgBrush.TileMode = TileMode.None;
            }
            for (int i = 0; i < Ns; i++)
            {
                for (int j = 0; j < Nt; j++)
                {
                    meshGeom.TextureCoordinates[ParameterObjectData.GetPositionIndex(i, j, Ns, Nt)] =
                        new Point((double)(i - iBegin) / (double)(iEnd - iBegin), (double)(j - jBegin) / (double)(jEnd - jBegin));
                }
            }
            materialGroup.Children[1] = new DiffuseMaterial(imgBrush);
        }
コード例 #4
0
        private void okButton_Click(object sender, RoutedEventArgs e)
        {
            double dim1 = 0, dim2 = 0, dim3 = 0;
            ParameterObjectData pobj = null;
            string xf, yf, zf;

            string colStr = (string)comboBoxColor.SelectedItem;

            try
            {
                dim1 = double.Parse(tbxDimension1.Text);
                if (dim1 <= 0)
                {
                    throw new Exception("Invalid dimension 1");
                }
                if (tbxDimension2.IsVisible)
                {
                    dim2 = double.Parse(tbxDimension2.Text);
                    if (dim2 <= 0)
                    {
                        throw new Exception("Invalid dimension 2");
                    }
                }
                if (tbxDimension3.IsVisible)
                {
                    dim3 = double.Parse(tbxDimension3.Text);
                    if (dim3 <= 0)
                    {
                        throw new Exception("Invalid dimension 3");
                    }
                }
            }
            catch (Exception except)
            {
                MessageBox.Show("Error parsing shape input: " + except.Message);
                Tag          = null;
                DialogResult = false;
                return;
            }

            if (shapeName == "Sphere")
            {
                xf   = dim1.ToString() + "*Cos(s)*Cos(t)";
                yf   = dim1.ToString() + "*Sin(s)*Cos(t)";
                zf   = dim1.ToString() + "*Sin(t)";
                pobj = new ParameterObjectData(xf, yf, zf, 0, 6.28, -1.57, 1.57, 20, 10, true, false, colStr);
            }
            else if (shapeName == "Cylinder")
            {
                pobj = new ParameterObjectData();
                xf   = dim1.ToString() + "*Cos(s)";
                yf   = dim1.ToString() + "*Sin(s)";
                zf   = dim2.ToString() + "*t";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, 0, 6.28, -0.5, 0.5, 20, 10, true, false, colStr));
                xf = dim1.ToString() + "*t*Cos(s)";
                yf = dim1.ToString() + "*t*Sin(s)";
                zf = dim2.ToString() + "*0.5";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, 0, 6.28, 1, 0, 20, 5, true, false, colStr));
                zf = "-" + dim2.ToString() + "*0.5";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, 0, 6.28, 0, 1, 20, 5, true, false, colStr));
            }
            else if (shapeName == "Block")
            {
                pobj = new ParameterObjectData();
                xf   = dim1.ToString() + "*s";
                yf   = dim2.ToString() + "*t";
                zf   = dim3.ToString() + "*0.5";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, -0.5, 0.5, 10, 10, false, false, colStr));
                zf = "-" + dim3.ToString() + "*0.5";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, 0.5, -0.5, 10, 10, false, false, colStr));
                xf = dim1.ToString() + "*0.5";
                yf = dim2.ToString() + "*s";
                zf = dim3.ToString() + "*t";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, -0.5, 0.5, 10, 10, false, false, colStr));
                xf = "-" + dim1.ToString() + "*0.5";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, 0.5, -0.5, 10, 10, false, false, colStr));
                xf = dim1.ToString() + "*t";
                yf = dim2.ToString() + "*0.5";
                zf = dim3.ToString() + "*s";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, -0.5, 0.5, 10, 10, false, false, colStr));
                yf = "-" + dim2.ToString() + "*0.5";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, 0.5, -0.5, 10, 10, false, false, colStr));
            }
            else if (shapeName == "Donut")
            {
                xf   = "Cos(s) * (" + dim1.ToString() + "+" + dim2.ToString() + "*Cos(t))";
                yf   = "Sin(s) * (" + dim1.ToString() + "+" + dim2.ToString() + "*Cos(t))";
                zf   = dim2.ToString() + "*Sin(t)";
                pobj = new ParameterObjectData(xf, yf, zf, 0, 6.28, 0, 6.28, 20, 10, true, true, colStr);
            }
            else if (shapeName == "Cone")
            {
                pobj = new ParameterObjectData();
                xf   = dim1.ToString() + "* Cos(s) * (0.5 - t)";
                yf   = dim1.ToString() + "* Sin(s) * (0.5 - t)";
                zf   = dim2.ToString() + "* t";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, 0, 6.28, -0.5, 0.5, 20, 10, true, false, colStr));
                xf = dim1.ToString() + "*t*Cos(s)";
                yf = dim1.ToString() + "*t*Sin(s)";
                zf = "-" + dim2.ToString() + "*0.5";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, 0, 6.28, 0, 1, 20, 5, true, false, colStr));
            }
            else if (shapeName == "Pyramid")
            {
                pobj = new ParameterObjectData();
                xf   = dim1.ToString() + "*s";
                yf   = dim2.ToString() + "*t";
                zf   = "-" + dim3.ToString() + "*0.5";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, 0.5, -0.5, 10, 10, false, false, colStr));
                xf = dim1.ToString() + "* s * (0.5 - t)";
                yf = "0.5 * " + dim2.ToString() + " * (t-0.5)";
                zf = dim3.ToString() + "* t";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, -0.5, 0.5, 5, 5, false, false, colStr));
                yf = "-0.5 * " + dim2.ToString() + " * (t-0.5)";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, 0.5, -0.5, 5, 5, false, false, colStr));
                xf = "0.5 * " + dim1.ToString() + " * (t - 0.5)";
                yf = dim2.ToString() + "* s * (0.5 - t)";
                zf = dim3.ToString() + " * t";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, 0.5, -0.5, 5, 5, false, false, colStr));
                xf = "-0.5 * " + dim1.ToString() + " * (t - 0.5)";
                pobj.Children.Add(new ParameterObjectData(xf, yf, zf, -0.5, 0.5, -0.5, 0.5, 5, 5, false, false, colStr));
            }
            else
            {
                Tag          = null;
                DialogResult = false;
                return;
            }

            Tag          = pobj;
            DialogResult = true;
        }