Beispiel #1
0
    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());
        }
    }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
    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());
        }
    }