Beispiel #1
0
        public void Create()
        {
            AcadApplication acadApp = null;
            AcadDocument    doc     = null;
            AcadTable       myTable = null;

            acadApp = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");
            doc     = acadApp.ActiveDocument;

            PromptPointOptions ppOps = new PromptPointOptions("请选择表格插入位置\n");

            PromptPointResult ppRes = AcadEd.GetPoint(ppOps);

            double[] vertices = new double[3];
            vertices[0] = 0;
            vertices[1] = 0;
            vertices[2] = 0;

            if (ppRes.Status == PromptStatus.OK)
            {
                vertices[0] = ppRes.Value[0];
                vertices[1] = ppRes.Value[1];
                vertices[2] = ppRes.Value[2];
            }
            AcRowType acRowType = new AcRowType();

            /*acUnknownRow = 0,
             * acDataRow = 1,
             * acTitleRow = 2,
             * acHeaderRow = 4*/

            myTable = doc.ActiveLayout.Block.AddTable(vertices, 4, 2, 3, 10);
            //设置文字高度
            myTable.SetTextHeight(1, 0.5);
            myTable.SetTextHeight(2, 1.5);
            myTable.SetTextHeight(4, 1);
            //合并单元格
            myTable.MergeCells(1, 2, 0, 0);
            //设置列宽
            myTable.SetColumnWidth(0, 5);
            myTable.SetColumnWidth(1, 25);
            //插入数据
            myTable.SetText(0, 0, "我的表格测试");
            myTable.SetText(1, 0, "Data1");
            myTable.SetText(1, 1, "这是一条数据");
            myTable.SetText(2, 1, "这是一条测试数据");
            myTable.SetText(3, 1, "左边是个块定义");

            //设置文字颜色
            AcadAcCmColor color = new AcadAcCmColor();

            color.ColorIndex = AcColor.acYellow;

            myTable.SetContentColor(2, color);

            //设置单元格中文字颜色
            AcadAcCmColor color2 = new AcadAcCmColor();

            color2.ColorIndex = AcColor.acGreen;

            myTable.SetContentColor2(3, 1, 0, color2);

            //设置单元格对其方式
            myTable.SetAlignment(1, AcCellAlignment.acMiddleCenter);

            PromptEntityOptions propEnt = new PromptEntityOptions("请选择实体\n");

            PromptEntityResult propRes = AcadEd.GetEntity(propEnt);

            if (propRes.Status == PromptStatus.OK)
            {
                try
                {
                    //错误
                    // myTable.SetBlockTableRecordId(3, 0, propRes.ObjectId.OldIdPtr.ToInt64(), true);

                    ObjectId oId = propRes.ObjectId;
                    AcadEd.WriteMessage(oId.IsValid.ToString());

                    BlockReference br;
                    using (var trans = AcadDb.TransactionManager.StartTransaction())
                    {
                        br = trans.GetObject(oId, OpenMode.ForRead) as BlockReference;

                        if (br == null)
                        {
                            Application.ShowAlertDialog("请选择块定义");

                            trans.Commit();

                            return;
                        }


                        trans.Commit();
                    }

                    //错误
                    //br = (BlockReference)oId.GetObject(OpenMode.ForRead);

                    //设置单元格块引用
                    myTable.SetBlockTableRecordId(3, 0, br.BlockTableRecord.OldIdPtr.ToInt64(), true);
                }
                catch (System.Exception e)
                {
                    AcadEd.WriteMessage(e.ToString());
                }
            }
        }
Beispiel #2
0
        public static void CreateAutoCADObject()
        {
            // Get
            //AcadApplication acadApp = null;
            AcadCircle    circle = null;
            AcadAcCmColor color  = null;

            try
            {
                object obj = Marshal.GetActiveObject("AutoCAD.Application.17");
                if (obj != null)
                {
                    gbl_app = obj as AcadApplication;
                    //double[] cen = new double[] { 0, 0, 0 };
                    //circle = acadApp.ActiveDocument.Database.ModelSpace.AddCircle(cen, 10);
                    //color = acadApp.GetInterfaceObject("Autocad.AcCmColor.17") as AcadAcCmColor;
                    //color.SetRGB(50, 150, 250);
                    //circle.TrueColor = color;
                    //acadApp.ZoomExtents();
                    // Draw
                    try
                    {
                        //CloseAllInstance();
                        //gbl_app = new AcadApplication();
                        gbl_doc = gbl_app.ActiveDocument;
                        gbl_app.Application.Visible = true;
                        gbl_modSpace = (AcadModelSpaceClass)gbl_doc.ModelSpace;
                        gbl_doc.Linetypes.Load("HIDDEN", "acad.lin");
                        gbl_doc.Linetypes.Load("CENTER", "acad.lin");



                        //Other Objects Layer
                        SwitchLayer = PF.gbl_doc.Layers.Add("Switch110Layer");
                        //SwitchLayer.color = Autodesk.AutoCAD.AcColor.acGreen;
                        PF.gbl_doc.ActiveLayer = SwitchLayer;

                        //Layer For Donuts
                        TerminalsLayer = PF.gbl_doc.Layers.Add("TerminalsLayer");
                        // TerminalsLayer.color = AutoCAD.AcColor.acRed;

                        //Layer Termination Points
                        TerminationPoints = PF.gbl_doc.Layers.Add("TerminationPoints");
                        //TerminationPoints.color = AutoCAD.AcColor.acWhite;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                else
                {
                    MessageBox.Show("AutoCAD chưa khởi động hoặc không đúng phiên bản!");
                }
            }
            catch
            {
                MessageBox.Show("AutoCAD chưa khởi động hoặc không đúng phiên bản!");
            }
            //finally
            //{
            //    if (color != null) Marshal.FinalReleaseComObject(color);
            //    if (circle != null) Marshal.FinalReleaseComObject(circle);
            //    if (gbl_app != null) Marshal.FinalReleaseComObject(gbl_app);
            //}
        }
        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();
        }