public void GenerateDwgDoor() { Editor editor = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.Editor; try { List <string> path = IOHelper.GetPath(new Constants().EXCEL_PATH); if (path != null && path.Count > 0) { List <GateParameter> list = new List <GateParameter>(); foreach (string item5 in path) { List <GateParameter> collection = ExcelOption.ReadExcel(item5); list.AddRange(collection); } exportPath = new Constants().DWG_SAVE_PATH + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "\\"; IOHelper.CreateDirectory(exportPath); foreach (IGrouping <string, GateParameter> item4 in from e in list group e by e.DwgName) { string fileName = exportPath + item4.Key + ".dwg"; string a = "否"; double factor = 0.0; Document document = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.Add(item4.Key); using (document.LockDocument()) { bool flag = false; foreach (GateParameter item3 in item4) { if (!((string.IsNullOrEmpty(item3.LCornerBlockName) || string.IsNullOrEmpty(item3.LCornerBlockName) || string.IsNullOrEmpty(item3.LCornerBlockName) || string.IsNullOrEmpty(item3.LCornerBlockName)) | flag)) { new Corner().Generate(document, item3); new Rectangle().Generate(document, item3); flag = true; a = item3.IsMirrored; factor = item3.GateWidth; } new CustomBlock().Generate(document, item3); } if (a == "是") { Line3d line = new Line3d(Point3d.Origin + Vector3d.XAxis * factor, Point3d.Origin + Vector3d.XAxis * factor + Vector3d.YAxis); DBHelper.MatrixEntitiesInModelSpace(Matrix3d.Displacement(-Vector3d.XAxis * factor) * Matrix3d.Mirroring(line)); } document.Database.SaveAs(fileName, DwgVersion.AC1021); } } Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument.SendCommand("CloseAllDwg\n"); } } catch (System.Exception ex) { editor.WriteMessage("生成失败!" + ex?.ToString()); } }
public void GenerateDoor() { var ed = Application.DocumentManager.MdiActiveDocument.Editor; var doc = Application.DocumentManager.MdiActiveDocument; //Application.DocumentManager.MdiActiveDocument.CommandEnded += Command_Ended; try { var path = ExcelOption.ChooseSingleExcel(); if (string.IsNullOrEmpty(path)) { return; } //第一步:找出边缘点放到数组里 如果一个不是四周都与其他点接壤,这个点就是边界点。先找出来放到数组里。 // var pBorders = ExcelOption.ReadExcel(path); var arr = ExcelOption.ReadCsv(path); var pBorders = ExcelOption.GetPoint2ds(arr); var currentListSet = new List <Point2d>(); this.hatchList.Clear(); //第二步:排序点 this.SortBorderLoop(pBorders, currentListSet); var plinelist = new List <List <Point2d> >(); //第三步:根据贝塞尔曲线算法根据这些点拟合曲线 foreach (var hatch in hatchList) { var newPoints = new List <Point2d>(); for (int i = 0; i < hatch.Count / 2 - 2; i++) { var points = DrawBezier.CalculateBezierPoints(hatch[i * 2], hatch[2 * i + 1], hatch[i * 2 + 2]); newPoints.Add(hatch[i * 2]); newPoints.AddRange(points); } newPoints.Add(hatch[hatch.Count - 2]); newPoints.Add(hatch[hatch.Count - 1]); newPoints.Add(hatch.Last()); plinelist.Add(newPoints); } this.objco.Clear(); foreach (var plines in plinelist) { var pline = new Polyline(); pline.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(255, 0, 0); foreach (var p in plines) { pline.AddVertexAt(pline.NumberOfVertices, p, 0, 0, 0); } pline.Closed = true; var objectid = pline.ToSpace(); var col = new ObjectIdCollection(); col.Add(objectid); this.objco.Add(col);; } //第四步 计算填充 doc.SendCommand("AddHatch\n"); } catch (System.Exception e) { ed.WriteMessage("生成失败!" + e); } }
public void GeneratePlineDoorDWG() { Editor editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor; try { List <string> path = IOHelper.GetPath(new Constants().EXCEL__POLY_PATH); if (path != null && path.Count > 0) { List <GateParameter> list = new List <GateParameter>(); foreach (string item5 in path) { List <GateParameter> collection = ExcelOption.ReadPolyDoorExcel(item5); list.AddRange(collection); } exportPath = new Constants().DWG_SAVE_PATH + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "\\"; IOHelper.CreateDirectory(exportPath); foreach (IGrouping <string, GateParameter> gr in from e in list group e by e.DwgName) { string fileName = exportPath + gr.Key + ".dwg"; string a = "否"; double factor = 0.0; Document document = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.Add(gr.Key); using (document.LockDocument()) { bool flag = false; List <GateParameter> gpList = new List <GateParameter>(); double borderHeight = 0; double borderWidth = 0; Point3d pBorder = new Point3d(); foreach (GateParameter gp in gr) { if (!flag) { new Border().Generate(document, gp); new Rectangle().Generate(document, gp); flag = true; a = gp.IsMirrored; factor = gp.GateWidth; borderHeight = gp.BorderHeight; borderWidth = gp.BorderWidth; pBorder = new Point3d(gp.BorderBaseX, gp.BorderBaseY, 0); } new CustomBlock().Generate(document, gp); gpList.Add(gp); } new PolyDoor().Generate(document, gpList, borderHeight, borderWidth, pBorder); if (a == "是") { Line3d line = new Line3d(Point3d.Origin + Vector3d.XAxis * factor, Point3d.Origin + Vector3d.XAxis * factor + Vector3d.YAxis); DBHelper.MatrixEntitiesInModelSpace(Matrix3d.Displacement(-Vector3d.XAxis * factor) * Matrix3d.Mirroring(line)); } document.Database.SaveAs(fileName, DwgVersion.AC1021); } } Application.DocumentManager.MdiActiveDocument.SendCommand("CloseAllDwg\n"); } } catch (System.Exception ex) { editor.WriteMessage("生成失败!" + ex?.ToString()); } }