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()); } } }
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(); }