Esempio n. 1
0
        public void CreateDoorEl(string groupel, string ingroupel, string iningroupel, string objgr, double AxisX, double AxisY, double AxisZ, double LenX, double LenY, double LenZ, double thickness, ModelUIElement3D thisobject1, ModelUIElement3D thisobject2, ModelUIElement3D thisobject3, ModelUIElement3D thisobject4, int napr, int naprv, ArrayList conttemp, string text = "-1", int id = -1)
        {
            if (text == "-1")
            {
                text = win.soureseDefault;
            }
            if (id == -1)
            {
                id = win.iddefault;
            }
            MeshGeometry3D meshgeometry = new MeshGeometry3D();

            meshgeometry.TriangleIndices = win.trianglerectangleobject;
            meshgeometry.Positions       = win.rectangleobject;
            GeometryModel3D modelgeometry = new GeometryModel3D();

            modelgeometry.Geometry = meshgeometry;

            meshgeometry.TextureCoordinates = new PointCollection(win.textures);
            ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(@"Images//Венге.jpg", UriKind.Relative)));

            modelgeometry.Material = new DiffuseMaterial(texture);
            ModelUIElement3D modelUI = new ModelUIElement3D();

            modelUI.MouseUp += win.ClickOnModel;
            modelUI.Model    = modelgeometry;
            ElementCabinet tempmodel = new ElementCabinet(modelUI, 0, 0, 0, 0, 0, 0);

            tempmodel.groupel     = groupel;
            tempmodel.ingroupel   = ingroupel;
            tempmodel.iningroupel = iningroupel;
            tempmodel.thickness   = thickness;
            tempmodel.hashtable   = win.CreatedElements;
            tempmodel.objgr       = objgr;
            ElementCabinet[] tempel = new ElementCabinet[4];
            tempel[2] = win.CreatedElements[thisobject1.GetHashCode()] as ElementCabinet;
            tempel[3] = win.CreatedElements[thisobject2.GetHashCode()] as ElementCabinet;
            tempel[0] = win.CreatedElements[thisobject3.GetHashCode()] as ElementCabinet;
            tempel[1] = win.CreatedElements[thisobject4.GetHashCode()] as ElementCabinet;

            tempmodel.select      = tempel[2];
            tempmodel.twoselect   = tempel[3];
            tempmodel.threeselect = tempel[0];
            tempmodel.fourselect  = tempel[1];

            tempmodel.naprv = naprv;
            tempmodel.napr  = napr;


            tempmodel.changeObject(LenX, LenY, LenZ, AxisX, AxisY, AxisZ);
            win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
            win.container.Children.Add(modelUI);
            conttemp.Add(modelUI);

            tempmodel.changeTexture(text, id);
        }
Esempio n. 2
0
        public void CreateShaft(string gr, string type, MouseButtonEventArgs e, double centerz)
        {
            MeshGeometry3D meshgeometry = new MeshGeometry3D();

            meshgeometry.TriangleIndices = win.trianglerectangleobject;
            meshgeometry.Positions       = win.rectangleobject;
            GeometryModel3D modelgeometry = new GeometryModel3D();

            modelgeometry.Geometry = meshgeometry;
            modelgeometry.Material = new DiffuseMaterial(
                new SolidColorBrush(Colors.Green));
            meshgeometry.TextureCoordinates = new PointCollection(win.textures);
            ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(@"Images//Венге.jpg", UriKind.Relative)));

            modelgeometry.Material = new DiffuseMaterial(texture);
            ModelUIElement3D modelUI = new ModelUIElement3D();

            modelUI.MouseUp += win.ClickOnModel;
            modelUI.Model    = modelgeometry;
            ElementCabinet tempmodel = new ElementCabinet(modelUI, 0, 0, 0, 0, 0, 0);

            tempmodel.groupel   = gr;
            tempmodel.ingroupel = "ShelfC";
            tempmodel.objgr     = "S";
            tempmodel.thickness = 0.015;
            tempmodel.select    = win.CreatedElements[win.selectedobject.GetHashCode()] as ElementCabinet;
            if (win.twoselectedobject != null)
            {
                tempmodel.twoselect = win.CreatedElements[win.twoselectedobject.GetHashCode()] as ElementCabinet;
            }
            if (type == "L")
            {
                tempmodel.napr = 1;
            }
            if (type == "R")
            {
                tempmodel.napr = -1;
            }
            tempmodel.hashtable = win.CreatedElements;
            tempmodel.center    = centerz - tempmodel.select.AxisZ;
            tempmodel.changeTexture(win.soureseDefault, win.iddefault);
            _3DObject        tempmodel1 = win.CreatedElements[win.selectedobject.GetHashCode()] as _3DObject;
            Transform3DGroup group3d    = tempmodel1.thismodel.Transform as Transform3DGroup;
            ScaleTransform3D tln        = group3d.Children.OfType <ScaleTransform3D>().FirstOrDefault();

            tempmodel.changeObject(0, tln.ScaleY, 0, 0, 0, 0);
            win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
            win.container.Children.Add(modelUI);
            win.ClickOnCamera(modelUI, e as MouseButtonEventArgs);
            win.ClickOnModel(modelUI, e);
        }
Esempio n. 3
0
        public void CreateRack(string gr, string type, MouseButtonEventArgs e, double centerz, double centery)
        {
            PipeVisual3D pipe = new PipeVisual3D();

            pipe.Diameter = 1;
            pipe.Point1   = new Point3D(0, 0, 0);
            pipe.Point2   = new Point3D(1, 0, 0);
            MeshElement3D tpipe = pipe as MeshElement3D;

            tpipe.Model.Material = Materials.White;
            ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(@"Images//Задняя стена белый.jpg", UriKind.Relative)));

            tpipe.Model.Material = new DiffuseMaterial(texture);
            ModelUIElement3D modelUI = new ModelUIElement3D();

            modelUI.MouseUp += win.ClickOnModel;
            modelUI.Model    = tpipe.Model;
            ElementCabinet tempmodel = new ElementCabinet(modelUI, 0, 0, 0, 0, 0, 0);

            tempmodel.groupel   = gr;
            tempmodel.ingroupel = "Rack";
            tempmodel.objgr     = "S";
            tempmodel.thickness = 0.015;
            tempmodel.select    = win.CreatedElements[win.selectedobject.GetHashCode()] as ElementCabinet;
            if (win.twoselectedobject != null)
            {
                tempmodel.twoselect = win.CreatedElements[win.twoselectedobject.GetHashCode()] as ElementCabinet;
            }
            if (type == "L")
            {
                tempmodel.napr = 1;
            }
            if (type == "R")
            {
                tempmodel.napr = -1;
            }
            tempmodel.hashtable = win.CreatedElements;
            tempmodel.center    = centerz - tempmodel.select.AxisZ;
            tempmodel.centery   = centery - tempmodel.select.AxisY;
            tempmodel.changeTexture(win.soureseDefault, win.iddefault);
            _3DObject        tempmodel1 = win.CreatedElements[win.selectedobject.GetHashCode()] as _3DObject;
            Transform3DGroup group3d    = tempmodel1.thismodel.Transform as Transform3DGroup;
            ScaleTransform3D tln        = group3d.Children.OfType <ScaleTransform3D>().FirstOrDefault();

            tempmodel.changeObject(0, tln.ScaleY, 0, 0, 0, 0);
            win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
            win.container.Children.Add(modelUI);
            win.ClickOnCamera(modelUI, e as MouseButtonEventArgs);
            win.ClickOnModel(modelUI, e);
        }
Esempio n. 4
0
        public void CreateShelfWall(string groupel, string ingroupel, string objgr, double AxisX, double AxisY, double AxisZ, double LenX, double LenY, double LenZ, double thickness, ModelUIElement3D thisobject1, ModelUIElement3D thisobject2, int napr, double center, bool basewallstatus, double descreaselen, ArrayList conttemp, double otDR, double otUL, string text = "-1", int id = -1)
        {
            if (text == "-1")
            {
                text = win.soureseDefault;
            }
            if (id == -1)
            {
                id = win.iddefault;
            }
            MeshGeometry3D meshgeometry = new MeshGeometry3D();

            meshgeometry.TriangleIndices = win.trianglerectangleobject;
            meshgeometry.Positions       = win.rectangleobject;
            GeometryModel3D modelgeometry = new GeometryModel3D();

            modelgeometry.Geometry = meshgeometry;
            modelgeometry.Material = new DiffuseMaterial(
                new SolidColorBrush(Colors.Green));
            meshgeometry.TextureCoordinates = new PointCollection(win.textures);
            ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(text, UriKind.Relative)));

            modelgeometry.Material = new DiffuseMaterial(texture);
            ModelUIElement3D modelUI = new ModelUIElement3D();

            modelUI.MouseUp += win.ClickOnModel;
            modelUI.Model    = modelgeometry;
            ElementCabinet tempmodel = new ElementCabinet(modelUI, 0, 0, 0, 0, 0, 0);

            tempmodel.groupel        = groupel;
            tempmodel.ingroupel      = ingroupel;
            tempmodel.objgr          = objgr;
            tempmodel.thickness      = thickness;
            tempmodel.select         = win.CreatedElements[thisobject1.GetHashCode()] as ElementCabinet;
            tempmodel.twoselect      = win.CreatedElements[thisobject2.GetHashCode()] as ElementCabinet;
            tempmodel.napr           = napr;
            tempmodel.basewallstatus = basewallstatus;
            tempmodel.descreaselen   = descreaselen;
            tempmodel.hashtable      = win.CreatedElements;
            tempmodel.center         = center;
            tempmodel.otUL           = otUL;
            tempmodel.otDR           = otDR;
            tempmodel.changeObject(LenX, LenY, LenZ, AxisX, AxisY, AxisZ);
            win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
            win.container.Children.Add(modelUI);
            conttemp.Add(modelUI);
            tempmodel.changeTexture(text, id);
        }
Esempio n. 5
0
        public void CreateRackEl(string groupel, string ingroupel, string objgr, double AxisX, double AxisY, double AxisZ, double LenX, double LenY, double LenZ, double thickness, ModelUIElement3D thisobject1, ModelUIElement3D thisobject2, int napr, double center, double centery, ArrayList conttemp, string text = "-1", int id = -1)
        {
            if (text == "-1")
            {
                text = win.soureseDefault;
            }
            if (id == -1)
            {
                id = win.iddefault;
            }
            PipeVisual3D pipe = new PipeVisual3D();

            pipe.Diameter = 1;
            pipe.Point1   = new Point3D(0, 0, 0);
            pipe.Point2   = new Point3D(1, 0, 0);
            MeshElement3D tpipe = pipe as MeshElement3D;

            tpipe.Model.Material = Materials.White;
            ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(text, UriKind.Relative)));

            tpipe.Model.Material = new DiffuseMaterial(texture);
            ModelUIElement3D modelUI = new ModelUIElement3D();

            modelUI.MouseUp += win.ClickOnModel;
            modelUI.Model    = tpipe.Model;
            ElementCabinet tempmodel = new ElementCabinet(modelUI, 0, 0, 0, 0, 0, 0);

            tempmodel.groupel   = groupel;
            tempmodel.ingroupel = ingroupel;
            tempmodel.objgr     = objgr;
            tempmodel.thickness = thickness;
            tempmodel.select    = win.CreatedElements[thisobject1.GetHashCode()] as ElementCabinet;
            tempmodel.twoselect = win.CreatedElements[thisobject2.GetHashCode()] as ElementCabinet;
            tempmodel.napr      = -1;
            tempmodel.hashtable = win.CreatedElements;
            tempmodel.center    = center;
            tempmodel.centery   = centery;
            tempmodel.changeObject(LenX, LenY, LenZ, AxisX, AxisY, AxisZ);
            win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
            win.container.Children.Add(modelUI);
            conttemp.Add(modelUI);
            tempmodel.changeTexture(text, id);
        }
Esempio n. 6
0
        public string takePositionV(_3DObject t1)
        {
            ElementCabinet       tmp1     = this as ElementCabinet;
            ElementCabinet       tmp3     = t1 as ElementCabinet;
            Transform3DGroup     group3d  = tmp1.thismodel.Transform as Transform3DGroup;
            TranslateTransform3D tt1      = group3d.Children.OfType <TranslateTransform3D>().FirstOrDefault();
            Transform3DGroup     group3d2 = tmp3.thismodel.Transform as Transform3DGroup;
            TranslateTransform3D tt3      = group3d2.Children.OfType <TranslateTransform3D>().FirstOrDefault();

            ScaleTransform3D t1ln = group3d.Children.OfType <ScaleTransform3D>().FirstOrDefault();
            ScaleTransform3D t3ln = group3d2.Children.OfType <ScaleTransform3D>().FirstOrDefault();
            double           raz  = tt3.OffsetZ - tt1.OffsetZ;

            if (raz < 0)
            {
                return("D");
            }
            else
            {
                return("U");
            }
        }
Esempio n. 7
0
        public void CreateFoundationEl(string groupel, string ingroupel, string objgr, double AxisX, double AxisY, double AxisZ, double LenX, double LenY, double LenZ, double thickness, ArrayList cont, string text = "-1", int id = -1)
        {
            if (text == "-1")
            {
                text = win.soureseDefault;
            }
            if (id == -1)
            {
                id = win.iddefault;
            }
            MeshGeometry3D meshgeometry = new MeshGeometry3D();

            meshgeometry.TriangleIndices = win.trianglerectangleobject;
            meshgeometry.Positions       = win.rectangleobject;
            GeometryModel3D modelgeometry = new GeometryModel3D();

            modelgeometry.Geometry          = meshgeometry;
            meshgeometry.TextureCoordinates = new PointCollection(win.textures);
            ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(text, UriKind.Relative)));

            modelgeometry.Material = new DiffuseMaterial(texture);
            ModelUIElement3D modelUI = new ModelUIElement3D();

            modelUI.MouseUp += win.ClickOnModel;
            modelUI.Model    = modelgeometry;
            ElementCabinet tempmodel = new ElementCabinet(modelUI, 1, 1, 2, 0, 0, 0);

            tempmodel.groupel   = groupel;
            tempmodel.ingroupel = ingroupel;
            tempmodel.objgr     = objgr;
            tempmodel.thickness = thickness;
            tempmodel.hashtable = win.CreatedElements;
            tempmodel.changeObject(LenX, LenY, LenZ, AxisX, AxisY, AxisZ);
            win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
            win.container.Children.Add(modelUI);
            cont.Add(modelUI);
            tempmodel.changeTexture(text, id);
        }
Esempio n. 8
0
        public void CreateElement(string groupel, string ingroupel, string iningroupel, double getPosX, double getPosY, double getPosZ, double getLenX, double getLenY, double getLenZ, int getAngleX, int getAngleY, int getAngleZ, int idmaterial, ModelUIElement3D thisobject1, double otx, double oty, double otz, string text = "-1", int id = -1)
        {
            if (text == "-1")
            {
                text = win.soureseDefault;
            }
            if (id == -1)
            {
                id = win.iddefaultB;
            }
            ModelImporter importer  = new ModelImporter();
            Material      material1 = new DiffuseMaterial(win.defcolor);

            importer.DefaultMaterial = material1;
            string           request          = "select sourse from elements where id=" + idmaterial;
            NpgsqlConnection npgSqlConnection = new NpgsqlConnection(win.connectionString);

            npgSqlConnection.Open();
            NpgsqlCommand    npgSqlCommand = new NpgsqlCommand(request, npgSqlConnection);
            NpgsqlDataReader reader        = npgSqlCommand.ExecuteReader();
            string           str           = "";

            while (reader.Read())
            {
                str = reader.GetString(0);
            }
            Model3DGroup model = new Model3DGroup();

            model = importer.Load(str);
            double maxx = 0;
            int    idd  = win.rand.Next(0, 100000);
            double xx   = 9999;
            double yy   = 9999;
            double zz   = 9999;

            for (int i = 0; i < model.Children.Count; i++)
            {
                GeometryModel3D   gmodel = model.Children[i] as GeometryModel3D;
                MeshGeometry3D    mmodel = (MeshGeometry3D)gmodel.Geometry;
                Point3DCollection p3dc   = mmodel.Positions;
                if (gmodel.Bounds.SizeX > maxx)
                {
                    maxx = gmodel.Bounds.SizeX;
                }
                if (gmodel.Bounds.SizeY > maxx)
                {
                    maxx = gmodel.Bounds.SizeY;
                }
                if (gmodel.Bounds.SizeZ > maxx)
                {
                    maxx = gmodel.Bounds.SizeZ;
                }
                if (gmodel.Bounds.X < xx)
                {
                    xx = gmodel.Bounds.X;
                }
                if (gmodel.Bounds.Y < yy)
                {
                    yy = gmodel.Bounds.Y;
                }
                if (gmodel.Bounds.Z < zz)
                {
                    zz = gmodel.Bounds.Z;
                }
            }
            for (int i = 0; i < model.Children.Count; i++)
            {
                GeometryModel3D   gmodel = model.Children[i] as GeometryModel3D;
                MeshGeometry3D    mmodel = (MeshGeometry3D)gmodel.Geometry;
                Point3DCollection p3dc   = mmodel.Positions;
                gmodel.Material = new DiffuseMaterial(win.defcolor);
                for (int ii = 0; ii < p3dc.Count; ii++)
                {
                    Point3D tp = p3dc[ii];
                    tp.X     = tp.X / maxx;
                    tp.Y     = tp.Y / maxx;
                    tp.Z     = tp.Z / maxx;
                    p3dc[ii] = tp;
                }
                for (int ii = 0; ii < p3dc.Count; ii++)
                {
                    Point3D tp = p3dc[ii];
                    tp.X     = tp.X - xx / maxx;
                    tp.Y     = tp.Y - yy / maxx;
                    tp.Z     = tp.Z - zz / maxx;
                    p3dc[ii] = tp;
                }
                ModelUIElement3D modelUI = new ModelUIElement3D();
                modelUI.Model = gmodel;
                ElementCabinet tempmodel = new ElementCabinet(modelUI, 1, 1, 1, 0, 0, 0);
                tempmodel.idtexture   = id;
                tempmodel.groupel     = groupel;
                tempmodel.ingroupel   = ingroupel;
                tempmodel.iningroupel = iningroupel;
                tempmodel.hashtable   = win.CreatedElements;
                win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
                win.container.Children.Add(modelUI);
                modelUI.MouseUp += win.ClickOnModel;
                tempmodel.LenZ   = 2;
                tempmodel.changeObjectLen(getLenX, getLenY, getLenZ);
                tempmodel.changeObjectPos(getPosX, getPosY, getPosZ);
                tempmodel.ChangeAngleX(getAngleX);
                tempmodel.ChangeAngleY(getAngleY);
                tempmodel.ChangeAngleZ(getAngleZ);
                tempmodel.idelement          = idmaterial;
                tempmodel.select             = win.CreatedElements[thisobject1.GetHashCode()] as ElementCabinet;
                tempmodel.otsx               = otx;
                tempmodel.otsy               = oty;
                tempmodel.otsz               = otz;
                tempmodel.thismodel.Material = new DiffuseMaterial(new SolidColorBrush(win.defcolor.Color));
            }
        }
Esempio n. 9
0
        public void AddElement(string smodel, string simg, int simgid, int id, ModelUIElement3D mod)
        {
            if (simg == "")
            {
                simg = win.soureseDefaultB;
            }
            if (id == 0)
            {
                id = win.iddefaultB;
            }
            if (smodel == "")
            {
                return;
            }
            ModelImporter importer  = new ModelImporter();
            Material      material1 = new DiffuseMaterial(win.defcolor);

            importer.DefaultMaterial = material1;
            double maxx = 0;

            ModelUIElement3D[] masel = new ModelUIElement3D[4];
            masel[0] = win.selectedobject;
            masel[1] = win.twoselectedobject;
            masel[2] = win.threeselectedobject;
            masel[3] = win.fourselectedobject;
            int countmasel = 0;

            for (int i = 0; i < 4; i++)
            {
                if (masel[i] != null)
                {
                    countmasel++;
                }
            }
            for (int j = 0; j < countmasel; j++)
            {
                Model3DGroup model = importer.Load(smodel);
                int          idd   = win.rand.Next(0, 100000);
                for (int i = 0; i < model.Children.Count; i++)
                {
                    GeometryModel3D   gmodel = model.Children[i] as GeometryModel3D;
                    MeshGeometry3D    mmodel = (MeshGeometry3D)gmodel.Geometry;
                    Point3DCollection p3dc   = mmodel.Positions;
                }
                double xx = 9999;
                double yy = 9999;
                double zz = 9999;
                for (int i = 0; i < model.Children.Count; i++)
                {
                    GeometryModel3D   gmodel = model.Children[i] as GeometryModel3D;
                    MeshGeometry3D    mmodel = (MeshGeometry3D)gmodel.Geometry;
                    Point3DCollection p3dc   = mmodel.Positions;
                    if (gmodel.Bounds.SizeX > maxx)
                    {
                        maxx = gmodel.Bounds.SizeX;
                    }
                    if (gmodel.Bounds.SizeY > maxx)
                    {
                        maxx = gmodel.Bounds.SizeY;
                    }
                    if (gmodel.Bounds.SizeZ > maxx)
                    {
                        maxx = gmodel.Bounds.SizeZ;
                    }
                    if (gmodel.Bounds.X < xx)
                    {
                        xx = gmodel.Bounds.X;
                    }
                    if (gmodel.Bounds.Y < yy)
                    {
                        yy = gmodel.Bounds.Y;
                    }
                    if (gmodel.Bounds.Z < zz)
                    {
                        zz = gmodel.Bounds.Z;
                    }
                }
                for (int i = 0; i < model.Children.Count; i++)
                {
                    GeometryModel3D gmodel = new GeometryModel3D();
                    gmodel = model.Children[i] as GeometryModel3D;
                    MeshGeometry3D mmodel = (MeshGeometry3D)gmodel.Geometry;
                    gmodel.Material = new DiffuseMaterial(win.defcolor);
                    Point3DCollection p3dc = mmodel.Positions;
                    for (int ii = 0; ii < p3dc.Count; ii++)
                    {
                        Point3D tp = p3dc[ii];
                        tp.X     = tp.X / maxx;
                        tp.Y     = tp.Y / maxx;
                        tp.Z     = tp.Z / maxx;
                        p3dc[ii] = tp;
                    }
                    for (int ii = 0; ii < p3dc.Count; ii++)
                    {
                        Point3D tp = p3dc[ii];
                        tp.X     = tp.X - xx / maxx;
                        tp.Y     = tp.Y - yy / maxx;
                        tp.Z     = tp.Z - zz / maxx;
                        p3dc[ii] = tp;
                    }
                    ModelUIElement3D modelUI = new ModelUIElement3D();
                    modelUI.Model = gmodel;
                    _3DObject      tempmodel1 = win.CreatedElements[mod.GetHashCode()] as _3DObject;
                    ElementCabinet tempmodel  = new ElementCabinet(modelUI, 1, 1, 1, 0, 0, 0);
                    tempmodel.idtexture   = simgid;
                    tempmodel.groupel     = tempmodel1.groupel;
                    tempmodel.ingroupel   = "Element-" + idd;
                    tempmodel.iningroupel = "El";
                    tempmodel.hashtable   = win.CreatedElements;
                    win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
                    win.container.Children.Add(modelUI);
                    modelUI.MouseUp    += win.ClickOnModel;
                    tempmodel.LenZ      = 2;
                    tempmodel.idelement = id;
                    ElementCabinet tmp = win.CreatedElements[masel[j].GetHashCode()] as ElementCabinet;
                    tempmodel.select = tmp;
                    tempmodel.changeObjectLen(0.1, 0.1, 0.1);
                    tempmodel.changeObjectPos(tmp.getPosX() + tmp.getLenX() / 2, tmp.getPosY() + tmp.getLenY() / 2, tmp.getPosZ() + tmp.getLenZ() / 2);
                    tempmodel.otsx = tmp.getLenX() / 2;
                    tempmodel.otsy = tmp.getLenY() / 2;
                    tempmodel.otsz = tmp.getLenZ() / 2;
                    tempmodel.thismodel.Material = new DiffuseMaterial(new SolidColorBrush(win.defcolor.Color));
                }
            }
        }
Esempio n. 10
0
        public void CreateCountB(string gr, string type, string type2, MouseButtonEventArgs e, string port)
        {
            ElementCabinet[] tempel = new ElementCabinet[4];
            tempel[port.IndexOf('0')] = win.CreatedElements[win.selectedobject.GetHashCode()] as ElementCabinet;
            tempel[port.IndexOf('1')] = win.CreatedElements[win.twoselectedobject.GetHashCode()] as ElementCabinet;
            tempel[port.IndexOf('2')] = win.CreatedElements[win.threeselectedobject.GetHashCode()] as ElementCabinet;
            tempel[port.IndexOf('3')] = win.CreatedElements[win.fourselectedobject.GetHashCode()] as ElementCabinet;
            int                  countW   = Convert.ToInt32(win.CountB.Text);
            ElementCabinet       tm1      = tempel[0];
            Transform3DGroup     group3d1 = tm1.thismodel.Transform as Transform3DGroup;
            TranslateTransform3D tln1     = group3d1.Children.OfType <TranslateTransform3D>().FirstOrDefault();
            ElementCabinet       tm2      = tempel[1];
            Transform3DGroup     group3d2 = tm2.thismodel.Transform as Transform3DGroup;
            TranslateTransform3D tln2     = group3d2.Children.OfType <TranslateTransform3D>().FirstOrDefault();
            double               otstup   = 0;
            double               nach     = 0;

            if (tln1.OffsetZ - tln2.OffsetZ >= 0)
            {
                otstup  = tln1.OffsetZ - tln2.OffsetZ;
                otstup /= countW;
                otstup -= 0.005;
                nach    = tln2.OffsetZ;
            }
            if (tln2.OffsetZ - tln1.OffsetZ >= 0)
            {
                otstup  = tln2.OffsetZ - tln1.OffsetZ;
                otstup /= countW;
                otstup -= 0.005;
                nach    = tln1.OffsetZ;
            }
            for (int i = 0; i < countW; i++)
            {
                int idd = win.rand.Next(0, 100000);
                for (int h = 0; h < 6; h++)
                {
                    MeshGeometry3D meshgeometry = new MeshGeometry3D();
                    meshgeometry.TriangleIndices = win.trianglerectangleobject;
                    meshgeometry.Positions       = win.rectangleobject;
                    GeometryModel3D modelgeometry = new GeometryModel3D();
                    modelgeometry.Geometry = meshgeometry;
                    modelgeometry.Material = new DiffuseMaterial(
                        new SolidColorBrush(Colors.Green));
                    meshgeometry.TextureCoordinates = new PointCollection(win.textures);
                    ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(@"Images//Венге.jpg", UriKind.Relative)));
                    modelgeometry.Material = new DiffuseMaterial(texture);
                    ModelUIElement3D modelUI = new ModelUIElement3D();
                    modelUI.MouseUp += win.ClickOnModel;
                    modelUI.Model    = modelgeometry;
                    ElementCabinet tempmodel = new ElementCabinet(modelUI, 0, 0, 0, 0, 0, 0);
                    tempmodel.groupel   = gr;
                    tempmodel.ingroupel = "Box-" + idd;
                    if (h == 0)
                    {
                        tempmodel.iningroupel = "WF";
                    }
                    if (h == 1)
                    {
                        tempmodel.iningroupel = "WB";
                    }
                    if (h == 2)
                    {
                        tempmodel.iningroupel = "WR";
                    }
                    if (h == 3)
                    {
                        tempmodel.iningroupel = "WL";
                    }
                    if (h == 4)
                    {
                        tempmodel.iningroupel = "WFF";
                    }
                    if (h == 5)
                    {
                        tempmodel.iningroupel = "WD";
                    }
                    if (h == 5)
                    {
                        tempmodel.thickness = 0.003;
                    }
                    else
                    {
                        tempmodel.thickness = 0.015;
                    }
                    tempmodel.otsx      = 0.02;
                    tempmodel.otsy      = 0.02;
                    tempmodel.otsz      = 0.02;
                    tempmodel.lenbox    = otstup;
                    tempmodel.select    = tempel[3];
                    tempmodel.twoselect = tempel[2];
                    if (type2 == "L")
                    {
                        tempmodel.napr = 1;
                    }
                    if (type2 == "R")
                    {
                        tempmodel.napr = -1;
                    }
                    tempmodel.hashtable = win.CreatedElements;
                    tempmodel.center    = nach;
                    tempmodel.changeObject(0, 0, 0, 0, 0, 0);
                    win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
                    win.container.Children.Add(modelUI);
                    if (h == 5)
                    {
                        tempmodel.changeTexture(win.soureseDefaultB, win.iddefaultB);
                    }
                    else
                    {
                        tempmodel.changeTexture(win.soureseDefault, win.iddefault);
                    }
                }
                nach += otstup + 0.005;
            }
        }
Esempio n. 11
0
        public void CreateCountS(string gr, string type, string type2, MouseButtonEventArgs e, string port)
        {
            ElementCabinet[] tempel = new ElementCabinet[4];
            tempel[port.IndexOf('0')] = win.CreatedElements[win.selectedobject.GetHashCode()] as ElementCabinet;
            tempel[port.IndexOf('1')] = win.CreatedElements[win.twoselectedobject.GetHashCode()] as ElementCabinet;
            tempel[port.IndexOf('2')] = win.CreatedElements[win.threeselectedobject.GetHashCode()] as ElementCabinet;
            tempel[port.IndexOf('3')] = win.CreatedElements[win.fourselectedobject.GetHashCode()] as ElementCabinet;
            int                  countW   = Convert.ToInt32(win.CountB.Text);
            ElementCabinet       tm1      = tempel[0];
            Transform3DGroup     group3d1 = tm1.thismodel.Transform as Transform3DGroup;
            TranslateTransform3D tln1     = group3d1.Children.OfType <TranslateTransform3D>().FirstOrDefault();
            ElementCabinet       tm2      = tempel[1];
            Transform3DGroup     group3d2 = tm2.thismodel.Transform as Transform3DGroup;
            TranslateTransform3D tln2     = group3d2.Children.OfType <TranslateTransform3D>().FirstOrDefault();
            double               otstup   = 0;
            double               nach     = 0;

            if (tln1.OffsetZ - tln2.OffsetZ >= 0)
            {
                otstup  = tln1.OffsetZ - tln2.OffsetZ;
                otstup -= tm2.thickness;
                otstup /= countW + 1;
                nach    = tln2.OffsetZ;
            }
            if (tln2.OffsetZ - tln1.OffsetZ >= 0)
            {
                otstup  = tln2.OffsetZ - tln1.OffsetZ;
                otstup -= tm1.thickness;
                otstup /= countW + 1;
                nach    = tln1.OffsetZ;
            }
            nach += otstup;
            for (int i = 0; i < countW; i++)
            {
                MeshGeometry3D meshgeometry = new MeshGeometry3D();
                meshgeometry.TriangleIndices = win.trianglerectangleobject;
                meshgeometry.Positions       = win.rectangleobject;
                GeometryModel3D modelgeometry = new GeometryModel3D();
                modelgeometry.Geometry          = meshgeometry;
                meshgeometry.TextureCoordinates = new PointCollection(win.textures);
                ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(@"Images//Венге.jpg", UriKind.Relative)));
                modelgeometry.Material = new DiffuseMaterial(texture);
                ModelUIElement3D modelUI = new ModelUIElement3D();
                modelUI.MouseUp += win.ClickOnModel;
                modelUI.Model    = modelgeometry;
                ElementCabinet tempmodel = new ElementCabinet(modelUI, 0, 0, 0, 0, 0, 0);
                tempmodel.groupel   = gr;
                tempmodel.ingroupel = "ShelfC";
                tempmodel.objgr     = "S";
                tempmodel.thickness = 0.015;
                tempmodel.hashtable = win.CreatedElements;
                tempmodel.select    = tempel[2];
                tempmodel.twoselect = tempel[3];
                if (type2 == "L")
                {
                    tempmodel.napr = 1;
                }
                if (type2 == "R")
                {
                    tempmodel.napr = -1;
                }
                tempmodel.center = nach;
                _3DObject        tempmodel1 = win.CreatedElements[win.selectedobject.GetHashCode()] as _3DObject;
                Transform3DGroup group3d    = tempmodel1.thismodel.Transform as Transform3DGroup;
                ScaleTransform3D tln        = group3d.Children.OfType <ScaleTransform3D>().FirstOrDefault();
                tempmodel.changeObject(0, tln.ScaleY, 0, 0, 0, 0);
                win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
                win.container.Children.Add(modelUI);
                tempmodel.changeTexture(win.soureseDefault, win.iddefault);
                nach += otstup;
            }
        }
Esempio n. 12
0
        public void CreateDoorTwo(string gr, string type, string type2, MouseButtonEventArgs e, string port)
        {
            int idd = win.rand.Next(0, 100000);
            ModelUIElement3D tmpmod = null;

            for (int i = 0; i < 2; i++)
            {
                MeshGeometry3D meshgeometry = new MeshGeometry3D();
                meshgeometry.TriangleIndices = win.trianglerectangleobject;
                meshgeometry.Positions       = win.rectangleobject;
                GeometryModel3D modelgeometry = new GeometryModel3D();
                modelgeometry.Geometry          = meshgeometry;
                meshgeometry.TextureCoordinates = new PointCollection(win.textures);
                ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(@"Images//Венге.jpg", UriKind.Relative)));
                modelgeometry.Material = new DiffuseMaterial(texture);
                ModelUIElement3D modelUI = new ModelUIElement3D();
                modelUI.MouseUp += win.ClickOnModel;
                modelUI.Model    = modelgeometry;
                ElementCabinet tempmodel = new ElementCabinet(modelUI, 0, 0, 0, 0, 0, 0);
                tempmodel.groupel   = gr;
                tempmodel.ingroupel = "Door-" + idd;
                if (i == 0)
                {
                    tempmodel.iningroupel = "DoorL";
                }
                if (i == 1)
                {
                    tempmodel.iningroupel = "DoorR";
                }
                tempmodel.thickness = 0.015;
                tempmodel.hashtable = win.CreatedElements;
                tempmodel.objgr     = "WBF";
                string[]         tmp1   = port.Split('|');
                ElementCabinet[] tempel = new ElementCabinet[4];
                tempel[port.IndexOf('0')] = win.CreatedElements[win.selectedobject.GetHashCode()] as ElementCabinet;
                tempel[port.IndexOf('1')] = win.CreatedElements[win.twoselectedobject.GetHashCode()] as ElementCabinet;
                tempel[port.IndexOf('2')] = win.CreatedElements[win.threeselectedobject.GetHashCode()] as ElementCabinet;
                tempel[port.IndexOf('3')] = win.CreatedElements[win.fourselectedobject.GetHashCode()] as ElementCabinet;
                tempmodel.select          = tempel[2];
                tempmodel.twoselect       = tempel[3];
                tempmodel.threeselect     = tempel[0];
                tempmodel.fourselect      = tempel[1];
                if (type == "D")
                {
                    tempmodel.naprv = 1;
                }
                if (type == "U")
                {
                    tempmodel.naprv = -1;
                }
                if (type2 == "L")
                {
                    tempmodel.napr = 1;
                }
                if (type2 == "R")
                {
                    tempmodel.napr = -1;
                }
                tempmodel.center = win.xclickonView;
                _3DObject        tempmodel1 = win.CreatedElements[win.selectedobject.GetHashCode()] as _3DObject;
                Transform3DGroup group3d    = tempmodel1.thismodel.Transform as Transform3DGroup;
                ScaleTransform3D tln        = group3d.Children.OfType <ScaleTransform3D>().FirstOrDefault();
                tempmodel.changeObject(0, tln.ScaleY, 0, 0, 0, 0);
                tempmodel.changeObject(0, tln.ScaleY, 0, 0, 0, 0);
                win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
                win.container.Children.Add(modelUI);
                tempmodel.changeTexture(win.soureseDefault, win.iddefault);
                tmpmod = modelUI;
            }
            win.ClickOnCamera(tmpmod, e as MouseButtonEventArgs);
            win.ClickOnModel(tmpmod, e);
        }
Esempio n. 13
0
        public void CreateFoundation(string type)
        {
            if (win.iddefault == -1 || win.iddefaultB == -1)
            {
                MessageBox.Show("Выберите в настройках материалы по умолчанию"); return;
            }
            int idd = win.rand.Next(0, 100000);

            for (int i = 0; i < 6; i++)
            {
                MeshGeometry3D meshgeometry = new MeshGeometry3D();
                meshgeometry.TriangleIndices = win.trianglerectangleobject;
                meshgeometry.Positions       = win.rectangleobject;
                GeometryModel3D modelgeometry = new GeometryModel3D();
                modelgeometry.Geometry          = meshgeometry;
                meshgeometry.TextureCoordinates = new PointCollection(win.textures);
                ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(@"Images//Венге.jpg", UriKind.Relative)));
                modelgeometry.Material = new DiffuseMaterial(texture);
                ModelUIElement3D modelUI = new ModelUIElement3D();
                modelUI.MouseUp += win.ClickOnModel;
                modelUI.Model    = modelgeometry;
                ElementCabinet tempmodel = new ElementCabinet(modelUI, 1, 1, 2, 0, 0, 0);
                tempmodel.groupel = type + idd;
                if (i == 0)
                {
                    tempmodel.ingroupel = "WallR";
                    tempmodel.objgr     = "W";
                    tempmodel.thickness = 0.015;
                }
                if (i == 1)
                {
                    tempmodel.ingroupel = "WallL";
                    tempmodel.objgr     = "W";
                    tempmodel.thickness = 0.015;
                }
                if (i == 2)
                {
                    tempmodel.ingroupel = "Ceiling";
                    tempmodel.objgr     = "S";
                    tempmodel.thickness = 0.015;
                }
                if (i == 3)
                {
                    tempmodel.ingroupel = "WallB";
                    tempmodel.thickness = 0.003;
                    tempmodel.objgr     = "WBF";
                }
                if (i == 4)
                {
                    tempmodel.ingroupel = "Floor";
                    tempmodel.objgr     = "S";
                    tempmodel.thickness = 0.015;
                }
                if (i == 5)
                {
                    tempmodel.ingroupel = "WallF";
                    tempmodel.thickness = 0.015;
                    tempmodel.objgr     = "WBF";
                }
                tempmodel.hashtable = win.CreatedElements;
                tempmodel.changeObject(1, 1, 2, 0, 0, 0);
                win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
                win.container.Children.Add(modelUI);
                if (i == 3)
                {
                    tempmodel.changeTexture(win.soureseDefaultB, win.iddefaultB);
                }
                else
                {
                    tempmodel.changeTexture(win.soureseDefault, win.iddefault);
                }
            }
        }
Esempio n. 14
0
        public void CreateBox(string gr, string type, MouseButtonEventArgs e, double len, double centerz)
        {
            int idd = win.rand.Next(0, 100000);

            for (int i = 0; i < 6; i++)
            {
                MeshGeometry3D meshgeometry = new MeshGeometry3D();
                meshgeometry.TriangleIndices = win.trianglerectangleobject;
                meshgeometry.Positions       = win.rectangleobject;
                GeometryModel3D modelgeometry = new GeometryModel3D();
                modelgeometry.Geometry = meshgeometry;
                modelgeometry.Material = new DiffuseMaterial(
                    new SolidColorBrush(Colors.Green));

                meshgeometry.TextureCoordinates = new PointCollection(win.textures);
                ImageBrush texture = new ImageBrush(new BitmapImage(new Uri(@"Images//Венге.jpg", UriKind.Relative)));
                modelgeometry.Material = new DiffuseMaterial(texture);

                ModelUIElement3D modelUI = new ModelUIElement3D();
                modelUI.MouseUp += win.ClickOnModel;
                modelUI.Model    = modelgeometry;
                ElementCabinet tempmodel = new ElementCabinet(modelUI, 0, 0, 0, 0, 0, 0);
                tempmodel.groupel   = gr;
                tempmodel.ingroupel = "Box-" + idd;
                if (i == 0)
                {
                    tempmodel.iningroupel = "WF";
                }
                if (i == 1)
                {
                    tempmodel.iningroupel = "WB";
                }
                if (i == 2)
                {
                    tempmodel.iningroupel = "WR";
                }
                if (i == 3)
                {
                    tempmodel.iningroupel = "WL";
                }
                if (i == 4)
                {
                    tempmodel.iningroupel = "WFF";
                }
                if (i == 5)
                {
                    tempmodel.iningroupel = "WD";
                }
                if (i == 5)
                {
                    tempmodel.thickness = 0.003;
                }
                else
                {
                    tempmodel.thickness = 0.015;
                }
                tempmodel.otsx   = 0.02;
                tempmodel.otsy   = 0.02;
                tempmodel.otsz   = 0.02;
                tempmodel.lenbox = len;
                tempmodel.select = win.CreatedElements[win.selectedobject.GetHashCode()] as ElementCabinet;
                if (win.twoselectedobject != null)
                {
                    tempmodel.twoselect = win.CreatedElements[win.twoselectedobject.GetHashCode()] as ElementCabinet;
                }
                if (type == "L")
                {
                    tempmodel.napr = 1;
                }
                if (type == "R")
                {
                    tempmodel.napr = -1;
                }
                tempmodel.hashtable = win.CreatedElements;
                tempmodel.center    = centerz - tempmodel.select.AxisZ;
                _3DObject        tempmodel1 = win.CreatedElements[win.selectedobject.GetHashCode()] as _3DObject;
                Transform3DGroup group3d    = tempmodel1.thismodel.Transform as Transform3DGroup;
                ScaleTransform3D tln        = group3d.Children.OfType <ScaleTransform3D>().FirstOrDefault();
                tempmodel.changeObject(0, tln.ScaleY, 0, 0, 0, 0);
                win.CreatedElements.Add(modelUI.GetHashCode(), tempmodel);
                win.container.Children.Add(modelUI);
                if (i == 5)
                {
                    tempmodel.changeTexture(win.soureseDefaultB, win.iddefaultB);
                }
                else
                {
                    tempmodel.changeTexture(win.soureseDefault, win.iddefault);
                }
            }
        }
Esempio n. 15
0
        public void DefineCost()
        {
            CostArr     = new ArrayList[hash.Count];
            materialArr = new ArrayList[hash.Count];
            sizeArr     = new ArrayList[hash.Count];
            nameArr     = new ArrayList[hash.Count];
            for (int i = 0; i < CostArr.Length; i++)
            {
                CostArr[i]     = new ArrayList();
                materialArr[i] = new ArrayList();
                sizeArr[i]     = new ArrayList();
                nameArr[i]     = new ArrayList();
            }
            int ind = 0;

            foreach (var item in hash)
            {
                DictionaryEntry tmp1 = (DictionaryEntry)item;
                ArrayList       tmp2 = tmp1.Value as ArrayList;
                for (int i = 0; i < tmp2.Count; i++)
                {
                    ElementCabinet elcab  = tmp2[i] as ElementCabinet;
                    string[]       tmpstr = elcab.ingroupel.Split('-');
                    if (tmpstr[0] != "Element")
                    {
                        string           request          = "select sizes,price,name from materials where id=" + elcab.idtexture;
                        NpgsqlConnection npgSqlConnection = new NpgsqlConnection(connectionString);
                        npgSqlConnection.Open();
                        NpgsqlCommand    npgSqlCommand = new NpgsqlCommand(request, npgSqlConnection);
                        NpgsqlDataReader reader        = npgSqlCommand.ExecuteReader();
                        int[]            sizes         = null;
                        double           price         = 0;
                        while (reader.Read())
                        {
                            sizes = reader[0] as int[];
                            price = reader.GetDouble(1);
                            materialArr[ind].Add(reader.GetString(2));
                        }
                        long   valueEl    = sizes[0] * sizes[1] * sizes[2];
                        double price1Cube = price / valueEl;

                        if (elcab.ingroupel != "Rack")
                        {
                            CostArr[ind].Add(Math.Abs(Math.Round(elcab.getLenX() * 1000 * elcab.getLenY() * 1000 * elcab.getLenZ() * 1000 * price1Cube, 2)));
                        }
                        else
                        {
                            CostArr[ind].Add(Math.Abs(Math.Round(elcab.getLenX() * 1000 * Math.PI * ((elcab.getLenZ() * 1000 / 2) * (elcab.getLenZ() * 1000 / 2)) * price1Cube, 2)));
                        }
                        sizeArr[ind].Add(Math.Abs(Math.Round(elcab.getLenX(), 3)) * 1000 + " x " + Math.Abs(Math.Round(elcab.getLenY(), 3)) * 1000 + " x " + Math.Abs(Math.Round(elcab.getLenZ(), 3)) * 1000);
                    }
                    else
                    {
                        string           request          = "select price,name from elements where id=" + elcab.idelement;
                        NpgsqlConnection npgSqlConnection = new NpgsqlConnection(connectionString);
                        npgSqlConnection.Open();
                        NpgsqlCommand    npgSqlCommand = new NpgsqlCommand(request, npgSqlConnection);
                        NpgsqlDataReader reader        = npgSqlCommand.ExecuteReader();
                        double           price         = 0;
                        while (reader.Read())
                        {
                            price = reader.GetDouble(0);
                            materialArr[ind].Add(reader.GetString(1));
                        }
                        CostArr[ind].Add(Math.Round(price, 2));
                        sizeArr[ind].Add("-");
                    }
                    ElementCabinet element = tmp2[i] as ElementCabinet;
                    string         name    = "";
                    if (element.ingroupel == "WallL")
                    {
                        name = "Стена корпуса левая.";
                    }
                    if (element.ingroupel == "WallR")
                    {
                        name = "Стена корпуса правая.";
                    }
                    if (element.ingroupel == "WallB")
                    {
                        name = "Стена корпуса задняя.";
                    }
                    if (element.ingroupel == "WallF")
                    {
                        name = "Стена корпуса - цоколь.";
                    }
                    if (element.ingroupel == "Ceiling")
                    {
                        name = "Потолок корпуса.";
                    }
                    if (element.ingroupel == "Floor" || element.ingroupel == "FloorFoot")
                    {
                        name = "Пол корпуса.";
                    }
                    if (element.ingroupel == "Rack")
                    {
                        name = "Вешалка.";
                    }
                    if (element.ingroupel == "ShelfC")
                    {
                        name = "Полочка.";
                    }
                    if (element.ingroupel == "WallC")
                    {
                        name = "Стена.";
                    }
                    if (element.ingroupel == "Door")
                    {
                        name = "Двери.";
                    }
                    if (element.iningroupel == "WR")
                    {
                        name = "Стена ящика правая.";
                    }
                    if (element.iningroupel == "WL")
                    {
                        name = "Стена ящика левая.";
                    }
                    if (element.iningroupel == "WF")
                    {
                        name = "Стена ящика передняя.";
                    }
                    if (element.iningroupel == "WB")
                    {
                        name = "Стена ящика задняя.";
                    }
                    if (element.iningroupel == "WFF")
                    {
                        name = "Стена ящика лицевая.";
                    }
                    if (element.iningroupel == "WD")
                    {
                        name = "Пол ящика.";
                    }
                    if (element.iningroupel == "El")
                    {
                        name = "Елемент мебели.";
                    }
                    if (element.iningroupel == "DoorL")
                    {
                        name = "Левая дверь.";
                    }
                    if (element.iningroupel == "DoorR")
                    {
                        name = " Правая дверь.";
                    }
                    nameArr[ind].Add(name);
                }
                ind++;
            }
            all    = new ArrayList[hash.Count];
            counts = new ArrayList[hash.Count];
            for (int i = 0; i < all.Length; i++)
            {
                all[i]    = new ArrayList();
                counts[i] = new ArrayList();
            }
            for (int i = 0; i < all.Length; i++)
            {
                ArrayList tmp = nameArr[i] as ArrayList;
                for (int j = 0; j < tmp.Count; j++)
                {
                    Row tmprow = new Row {
                        name = nameArr[i][j].ToString(), material = materialArr[i][j].ToString(), size = sizeArr[i][j].ToString(), price = Convert.ToDouble(CostArr[i][j])
                    };
                    if (all[i].IndexOf(tmprow) == -1)
                    {
                        all[i].Add(tmprow); counts[i].Add(1);
                    }
                    else
                    {
                        int id       = all[i].IndexOf(tmprow);
                        int tmpcount = (int)counts[i][id];
                        tmpcount++;
                        counts[i][id] = tmpcount;
                    }
                }
            }
            ArrayList [] alldp    = new ArrayList[all.Length];
            ArrayList[]  countsdp = new ArrayList[all.Length];
            for (int i = 0; i < alldp.Length; i++)
            {
                alldp[i]    = new ArrayList();
                countsdp[i] = new ArrayList();
            }
            for (int i = 0; i < alldp.Length; i++)
            {
                ArrayList tmp1 = all[i] as ArrayList;
                ArrayList tmp2 = counts[i] as ArrayList;
                for (int j = 0; j < tmp1.Count; j++)
                {
                    Row tmprow    = (Row)tmp1[j];
                    int tmpcount  = (int)tmp2[j];
                    Row tmprow1   = (Row)tmp1[j];
                    int tmpcount1 = (int)tmp2[j];
                    if (tmprow.name.IndexOf("корпуса") != -1)
                    {
                        if (tmprow.name == "Стена корпуса задняя.")
                        {
                            string[] ss = tmprow.size.Split('x'); double dd = (2 * int.Parse(ss[0]) + 2 * int.Parse(ss[2])) / 100; tmpcount = (int)dd; tmprow.name = "Гвоздь обивочный"; tmprow.material = "Сталь"; tmprow.size = "1x0,1"; tmprow.price = 0.25;
                        }
                        else
                        {
                            tmprow.name = "Конфирмат"; tmprow.material = "Сталь"; tmprow.size = "5x0,5"; tmprow.price = 0.5; tmpcount = 2;
                        }
                        alldp[i].Add(tmprow); countsdp[i].Add(tmpcount);
                        string[] ss1 = tmprow1.size.Split('x');
                        int[]    arr = new int[] { int.Parse(ss1[0]), int.Parse(ss1[1]), int.Parse(ss1[2]) };
                        Array.Sort(arr);
                        double dd1 = (2 * arr[1] + 2 * arr[2]) / 1000.0; tmpcount = (int)Math.Ceiling(dd1); tmprow.name = "Раскрой"; tmprow.material = "-"; tmprow.size = "-"; tmprow.price = 7;
                        alldp[i].Add(tmprow); countsdp[i].Add(tmpcount);
                    }

                    if (tmprow.name.IndexOf("ящика") != -1)
                    {
                        if (tmprow.name == "Пол ящика.")
                        {
                            string[] ss = tmprow.size.Split('x'); double dd = (2 * int.Parse(ss[0]) + 2 * int.Parse(ss[1])) / 100; tmpcount = (int)dd; tmprow.name = "Гвоздь обивочный"; tmprow.material = "Сталь"; tmprow.size = "1x0,1"; tmprow.price = 0.25;
                        }
                        else
                        {
                            tmprow.name = "Конфирмат"; tmprow.material = "Сталь"; tmprow.size = "5x0,5"; tmprow.price = 0.5; tmpcount = 2;
                        }
                        alldp[i].Add(tmprow); countsdp[i].Add(tmpcount);
                        string[] ss1 = tmprow1.size.Split('x');
                        int[]    arr = new int[] { int.Parse(ss1[0]), int.Parse(ss1[1]), int.Parse(ss1[2]) };
                        Array.Sort(arr);
                        double dd1 = (2 * arr[1] + 2 * arr[2]) / 1000.0; tmpcount = (int)Math.Ceiling(dd1); tmprow.name = "Раскрой"; tmprow.material = "-"; tmprow.size = "-"; tmprow.price = 7;
                        alldp[i].Add(tmprow); countsdp[i].Add(tmpcount);
                    }
                    if (tmprow.name.IndexOf("вер") != -1)
                    {
                        tmprow.name = "Петля накладная"; tmprow.material = "Сталь"; tmprow.size = "-"; tmprow.price = 6.5; tmpcount = 2;
                        alldp[i].Add(tmprow); countsdp[i].Add(tmpcount);
                        string[] ss1 = tmprow1.size.Split('x');
                        int[]    arr = new int[] { int.Parse(ss1[0]), int.Parse(ss1[1]), int.Parse(ss1[2]) };
                        Array.Sort(arr);
                        double dd1 = (2 * arr[1] + 2 * arr[2]) / 1000.0; tmpcount = (int)Math.Ceiling(dd1); tmprow.name = "Раскрой"; tmprow.material = "-"; tmprow.size = "-"; tmprow.price = 7;
                        alldp[i].Add(tmprow); countsdp[i].Add(tmpcount);
                    }
                    if (tmprow.name == "Полочка." || tmprow.name == "Стена.")
                    {
                        tmprow.name = "Конфирмат"; tmprow.material = "Сталь"; tmprow.size = "5x0,5"; tmprow.price = 0.5; tmpcount = 4;
                        alldp[i].Add(tmprow); countsdp[i].Add(tmpcount);
                        string[] ss1 = tmprow1.size.Split('x');
                        int[]    arr = new int[] { int.Parse(ss1[0]), int.Parse(ss1[1]), int.Parse(ss1[2]) };
                        Array.Sort(arr);
                        double dd1 = (2 * arr[1] + 2 * arr[2]) / 1000.0; tmpcount = (int)Math.Ceiling(dd1); tmprow.name = "Раскрой"; tmprow.material = "-"; tmprow.size = "-"; tmprow.price = 7;
                        alldp[i].Add(tmprow); countsdp[i].Add(tmpcount);
                    }
                }
            }

            for (int i = 0; i < alldp.Length; i++)
            {
                ArrayList tmp1 = alldp[i] as ArrayList;
                ArrayList tmp2 = countsdp[i] as ArrayList;
                for (int j = 0; j < tmp1.Count; j++)
                {
                    Row tmprow   = (Row)tmp1[j];
                    int tmpcount = (int)tmp2[j];
                    if (all[i].IndexOf(tmprow) == -1)
                    {
                        all[i].Add(tmprow); counts[i].Add(tmpcount);
                    }
                    else
                    {
                        int id        = all[i].IndexOf(tmprow);
                        int tmpcount1 = (int)counts[i][id];
                        tmpcount1    += tmpcount;
                        counts[i][id] = tmpcount1;
                    }
                }
            }
        }