Exemplo n.º 1
0
        // Zoom via COM


        private static void ZoomWin2(

            Editor ed, Point3d min, Point3d max

            )
        {
            AcadApplication app =

                (AcadApplication)Application.AcadApplication;


            double[] lower =

                new double[3] {
                min.X, min.Y, min.Z
            };

            double[] upper

                = new double[3] {
                max.X, max.Y, max.Z
                };


            app.ZoomWindow(lower, upper);
        }
Exemplo n.º 2
0
        private void iconButton3_Click(object sender, EventArgs e)
        {
            string nombre;

            foreach (string g in Modulo.listaFinal)
            {
                nombre = Modulo.RutaGuardado + "\\" + g + ".dwg";

                File.Copy(Modulo.RutaAutocad, nombre, true);
            }
            List <Ejecucion> listaEjecucion = new List <Ejecucion>();
            Ejecucion        ejecucion;

            foreach (Localidades k in Modulo.matrizRaiz)
            {
                foreach (string z in Modulo.listaFinal)
                {
                    if (z == k.nombre_plano)

                    {
                        ejecucion      = new Ejecucion();
                        ejecucion.loc  = k.id;
                        ejecucion.ruta = k.nombre_plano;
                        listaEjecucion.Add(ejecucion);
                    }
                }
            }
            ejecucion = null;
            //inicializacion del autocad
            Autodesk.AutoCAD.Interop.AcadApplication AcadApp = new AcadApplication();

            Autodesk.AutoCAD.Interop.AcadDocument doc;
            AcadApp.Visible = true;
            string rutaAutocad;
            //creacion de los objetos en listas

            obExcel f = new obExcel();

            IEnumerable <Vanos>         vanos;
            IEnumerable <Postes>        postes;
            IEnumerable <Luminarias>    luminarias;
            IEnumerable <Subestaciones> subestaciones;
            IEnumerable <VistasC>       vistasCajetines;
            IEnumerable <VistasD>       vistasDibujo;
            IEnumerable <Layers>        capas;
            IEnumerable <Cajetines>     cajetienes;

            double[] pto  = new double[3];
            double[] pto2 = new double[3];
            double[] pto3 = new double[3];
            double[] pto4 = new double[3];
            pto[2]  = 0.0;
            pto2[2] = 0.0;
            pto3[2] = 0.0;
            pto4[2] = 0.0;
            AcadLine           lin;
            AcadBlockReference block;
            AcadLayer          layer;
            AcadPViewport      vistaCajetin;
            AcadPViewport      vistaPlano;
            AcadAcCmColor      color = null;
            AcadDimAligned     dim;
            AcadDimAligned     con;


            try
            {
                color = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor.17") as AcadAcCmColor;
            }
            catch { };
            try
            {
                color = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor.18") as AcadAcCmColor;
            }
            catch { };
            try
            {
                color = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor.19") as AcadAcCmColor;
            }
            catch { };
            try
            {
                color = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor.20") as AcadAcCmColor;
            }
            catch { };
            try
            {
                color = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor.21") as AcadAcCmColor;
            }
            catch { };
            try
            {
                color = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor.22") as AcadAcCmColor;
            }
            catch { };
            try
            {
                color = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor.23") as AcadAcCmColor;
            }
            catch { };

            var book = new ExcelQueryFactory(Modulo.RutaExcel);

            listaEjecucion.Distinct <Ejecucion>();


            foreach (Ejecucion loc in listaEjecucion)
            {
                rutaAutocad = Modulo.RutaGuardado + "\\" + loc.ruta + ".dwg";
                doc         = AcadApp.Documents.Open(rutaAutocad);



                vanos           = f.VanosData(loc.loc, book);
                postes          = f.PostesData(loc.loc, book);
                luminarias      = f.LuminariasData(loc.loc, book);
                subestaciones   = f.SubestacionesData(loc.loc, book);
                vistasCajetines = f.VistasCData(book);
                vistasDibujo    = f.VistasDData(loc.loc, book);
                cajetienes      = f.CajetinesData(loc.loc, book);
                capas           = f.LayersData(book);

                foreach (Layers g in capas)
                {
                    color.SetRGB(g.red, g.green, g.blue);
                    layer           = doc.Layers.Add(g.nombre_capa);
                    layer.TrueColor = color;
                }

                //dibujamos los vanos
                if (VanosBox.Checked)
                {
                    foreach (Vanos g in vanos)
                    {
                        pto[0] = g.x_inicial;
                        pto[1] = g.y_inicial;

                        pto2[0] = g.x_final;
                        pto2[1] = g.y_final;

                        pto3[0] = pto[0] / 2 + pto2[0] / 2;
                        pto3[1] = pto[1] / 2 + pto2[1] / 2;

                        lin                      = doc.ModelSpace.AddLine(pto, pto2);
                        lin.Layer                = "_AereoCond";
                        dim                      = doc.ModelSpace.AddDimAligned(pto, pto2, pto3);
                        dim.StyleName            = "ACOT-LP-FRANK";
                        dim.VerticalTextPosition = AcDimVerticalJustification.acAbove;
                        dim.Layer                = "_CotaCond";
                        con                      = doc.ModelSpace.AddDimAligned(pto, pto2, pto3);
                        con.TextOverride         = g.conductor;
                        con.StyleName            = "ACOT-LP-FRANK";
                        con.VerticalTextPosition = AcDimVerticalJustification.acUnder;
                        con.Layer                = "_TipoCond";
                    }
                }
                //metodo de postes
                if (Postesbox.Checked)
                {
                    foreach (Postes g in postes)
                    {
                        pto[0]      = g.x_poste;
                        pto[1]      = g.y_poste;
                        block       = doc.ModelSpace.InsertBlock(pto, g.bloque, 1, 1, 1, 0);
                        block.Layer = "_Postes";
                        var blocAtri = block.GetAttributes();
                        blocAtri[0].TextString = g.altura;
                        blocAtri[1].TextString = g.estado;
                        blocAtri[2].TextString = g.material;
                        blocAtri[3].TextString = g.cod_poste;
                    }
                }
                //metodo de luminarias
                if (LumBox.Checked)
                {
                    foreach (Luminarias g in luminarias)
                    {
                        pto[0]      = g.x_luminaria;
                        pto[1]      = g.y_luminaria;
                        block       = doc.ModelSpace.InsertBlock(pto, "luminaria", 1, 1, 1, 0);
                        block.Layer = "_Luminaria";
                        var blocAtri = block.GetAttributes();
                        blocAtri[0].TextString = g.potencia;
                        blocAtri[1].TextString = g.altura;
                        blocAtri[2].TextString = g.codigo_luminaria;
                    }
                }
                //metodo de subestaciones
                if (SedBox.Checked)
                {
                    foreach (Subestaciones g in subestaciones)
                    {
                        pto[0]      = g.x_subestacion;
                        pto[1]      = g.y_subestacion;
                        block       = doc.ModelSpace.InsertBlock(pto, g.bloque, 25, 25, 25, 0);
                        block.Layer = "_Seds";
                        var blocAtri = block.GetAttributes();
                        blocAtri[0].TextString = g.potencia;
                        blocAtri[1].TextString = g.codigo_subestacion;
                    }
                }

                //metodo de creacion de vistas en cajetines

                if (CajBox.Checked)
                {
                    foreach (VistasC g in vistasCajetines)
                    {
                        pto[0]          = g.x_centro;
                        pto[1]          = g.y_centro;
                        pto2[0]         = g.x_inicial;
                        pto2[1]         = g.y_inicial;
                        pto3[0]         = g.x_final;
                        pto3[1]         = g.y_final;
                        doc.ActiveSpace = AcActiveSpace.acPaperSpace;
                        vistaCajetin    = doc.PaperSpace.AddPViewport(pto, g.ancho, g.largo);
                        vistaCajetin.Display(true);
                        vistaCajetin.ViewportOn = true;
                        doc.MSpace = true;
                        AcadApp.ActiveDocument.ActivePViewport = vistaCajetin;
                        AcadApp.ZoomWindow(pto2, pto3);
                        doc.MSpace = false;
                    }

                    //metodo de creacion de vistas en planos


                    foreach (VistasD g in vistasDibujo)
                    {
                        pto[0]          = g.x_centro;
                        pto[1]          = g.y_centro;
                        pto2[0]         = g.x_inicial;
                        pto2[1]         = g.y_inicial;
                        pto3[0]         = g.x_final;
                        pto3[1]         = g.y_final;
                        doc.ActiveSpace = AcActiveSpace.acPaperSpace;
                        vistaPlano      = doc.PaperSpace.AddPViewport(pto, g.ancho, g.largo);
                        vistaPlano.Display(true);
                        vistaPlano.ViewportOn = true;
                        doc.MSpace            = true;
                        AcadApp.ActiveDocument.ActivePViewport = vistaPlano;
                        AcadApp.ZoomWindow(pto2, pto3);
                        doc.MSpace = false;
                    }

                    //metodo de cajetines

                    foreach (Cajetines g in cajetienes)
                    {
                        pto[0]      = 0;
                        pto[1]      = 0;
                        block       = doc.PaperSpace.InsertBlock(pto, "cajetin", 1, 1, 1, 0);
                        block.Layer = "_MarcoPlano";
                        var blocAtri = block.GetAttributes();
                        blocAtri[0].TextString  = g.escala;
                        blocAtri[1].TextString  = g.fecha;
                        blocAtri[2].TextString  = g.plano;
                        blocAtri[3].TextString  = g.n_expediente;
                        blocAtri[4].TextString  = g.departamento;
                        blocAtri[5].TextString  = g.provincia;
                        blocAtri[6].TextString  = g.distrito;
                        blocAtri[7].TextString  = g.revisado;
                        blocAtri[8].TextString  = g.aprobado;
                        blocAtri[9].TextString  = g.dibujado;
                        blocAtri[10].TextString = g.anexo;
                    }
                }
                doc.Save();
                doc.Close();
            }
            book.Dispose();
            AcadApp.Quit();
        }
Exemplo n.º 3
0
        public void AcadApp_EndOpen(string filename)
        {
            IsOpenError = false;
            DelLayouts();
            AcadApp.ActiveDocument.ActiveLayout = AcadApp.ActiveDocument.Layouts.Item("Model");
            int tN = AcadApp.ActiveDocument.ModelSpace.Count;

            for (int i = 0; i < tN; i++)
            {
                if (AcadApp.ActiveDocument.ModelSpace.Item(i).EntityName == "AcDbBlockReference")
                {
                    AcadBlockReference iBlockReference = (AcadBlockReference)AcadApp.ActiveDocument.ModelSpace.Item(i);
                    if (iBlockReference.EffectiveName == GlobalInfo.FrameEffectiveName)
                    {
                        string    iFVKey;
                        FrameView iFrameView;
                        iFVKey                = String.Format("{0, 3}", iBlockReference.GetAttributes()[GlobalInfo.FramePageAttrID].TextString);
                        iFrameView.Id         = i;
                        iFrameView.Page       = iBlockReference.GetAttributes()[GlobalInfo.FramePageAttrID].TextString;
                        iFrameView.LowerLeft  = new double[] { iBlockReference.InsertionPoint[0] - iBlockReference.XScaleFactor * GlobalInfo.PlotPageWidth, iBlockReference.InsertionPoint[1], 0 };
                        iFrameView.UpperRight = new double[] { iBlockReference.InsertionPoint[0], iBlockReference.InsertionPoint[1] + iBlockReference.YScaleFactor * GlobalInfo.PlotPageHeight, 0 };
                        if (!FrameViewList.ContainsKey(iFVKey))
                        {
                            FrameViewList.Add(iFVKey, iFrameView);
                        }
                    }
                }
            }
            FrameViewList = FrameViewList.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value);
            AcadApp.ActiveDocument.Layouts.Item("Model").ConfigName = GlobalInfo.ModelConfigName;
            AcadApp.ActiveDocument.Layouts.Item("Model").StyleSheet = StyleSheetName;
            foreach (KeyValuePair <string, FormatTask.FrameView> iFrameView in FrameViewList)
            {
                AddBlankLayout(iFrameView.Value.Page);
                AcadLayout iLayout = AcadApp.ActiveDocument.Layouts.Item(iFrameView.Value.Page);
                AcadApp.ActiveDocument.ActiveLayout = iLayout;
                iLayout.ConfigName         = GlobalInfo.PlotConfigName;
                iLayout.CanonicalMediaName = GlobalInfo.PlotCanonicalMediaName;
                iLayout.PlotRotation       = AcPlotRotation.ac0degrees;
                iLayout.PaperUnits         = AcPlotPaperUnits.acMillimeters;
                iLayout.SetWindowToPlot(new double[] { 0, 0 }, new double[] { GlobalInfo.PlotPageWidth, GlobalInfo.PlotPageHeight });
                iLayout.PlotType         = AcPlotType.acWindow;
                iLayout.UseStandardScale = true;
                iLayout.StandardScale    = AcPlotScale.ac1_1;
                iLayout.CenterPlot       = true;
                iLayout.StyleSheet       = StyleSheetName;
                AcadPViewport iPViewport = AcadApp.ActiveDocument.PaperSpace.AddPViewport(new double[] { GlobalInfo.PlotPageWidth / 2, GlobalInfo.PlotPageHeight / 2, 0 }, GlobalInfo.PlotPageWidth, GlobalInfo.PlotPageHeight);
                iPViewport.Display(true);
                iPViewport.Layer                       = "0";
                iPViewport.ViewportOn                  = true;
                AcadApp.ActiveDocument.MSpace          = true;
                AcadApp.ActiveDocument.ActivePViewport = iPViewport;
                AcadApp.ZoomWindow(iFrameView.Value.LowerLeft, iFrameView.Value.UpperRight);
                AcadApp.ActiveDocument.MSpace = false;
                iPViewport.DisplayLocked      = true;
            }
            AcadApp.ActiveDocument.ActiveLayout = AcadApp.ActiveDocument.Layouts.Item("Model");
            foreach (KeyValuePair <string, FormatTask.FrameView> iFrameView in FrameViewList)
            {
                AcadLayout iLayout = AcadApp.ActiveDocument.Layouts.Item(iFrameView.Value.Page);
                AcadApp.ActiveDocument.ActiveLayout = iLayout;
                AcadApp.ZoomAll();
            }
            DelLayout(GlobalInfo.TempLayoutName);
            AcadApp.ActiveDocument.ActiveLayout = AcadApp.ActiveDocument.Layouts.Item("Model");
            AcadApp.ZoomAll();
            IsSaveError = !SaveDocument();
            AcadApp.ActiveDocument.SendCommand("CLOSE\n");
        }