找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 996|回复: 0

[分享] Write polyline points to CSV file

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-6-7 01:01:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
        [CommandMethod("PolylineToCSV", "plcsv",CommandFlags.Modal | CommandFlags.UsePickSet)]
        public static void ExportPolyPointsToCSV()
        {
            Document doc =Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;

            Database db = doc.Database;

            Editor ed = doc.Editor;

            try
            {

                using (Transaction tr = db.TransactionManager.StartOpenCloseTransaction())
                {
                    string dec = ((short)Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("LUPREC")).ToString();

                    PromptSelectionOptions pso = new PromptSelectionOptions();

                    pso.MessageForRemoval = "\n >>  Nothing selected....";

                    pso.MessageForAdding = "\n  >>  Select a single polyline >> ";

                    pso.AllowDuplicates = false;

                    pso.SingleOnly = true;

                    SelectionFilter sf = new SelectionFilter
                        (new TypedValue[] { new TypedValue(0, "lwpolyline") });

                    PromptSelectionResult res = ed.GetSelection(pso, sf);

                    if (res.Status != PromptStatus.OK)  return;

                    StringBuilder sb = new StringBuilder();
                    ObjectId[] ids = res.Value.GetObjectIds();

                    Polyline poly = (Polyline)tr.GetObject(ids[0], OpenMode.ForRead, false);
                    for (int i = 0; i < poly.NumberOfVertices; i++)
                    {
                        Point2d pt = poly.GetPoint2dAt(i);
                        string vexstr = string.Format("{0:f" + dec + "};{1:f" + dec + "}", pt.X, pt.Y);
                        sb.AppendLine(vexstr);
                    }
                    String csvFile = String.Empty;

                    System.Windows.Forms.SaveFileDialog sfd =  new System.Windows.Forms.SaveFileDialog();
                    sfd.ValidateNames = true;
                    sfd.Title = "Save polyline vertices to CSV file";
                    sfd.DefaultExt = ".csv";
                    sfd.InitialDirectory=@"C:\Test\";
                    sfd.RestoreDirectory = true;
                    
                    if (sfd.ShowDialog() != System.Windows.Forms.DialogResult.OK)  return;

                    csvFile = sfd.FileName;

                    // write point to defined file
                    using (StreamWriter sw = new StreamWriter(csvFile))
                    {
                        sw.Write(sb.ToString());

                        sw.Flush();
                    }
                    sfd.Dispose();// non resident object, so kill 'em

                    tr.Commit();
                }
           }
            catch (Autodesk.AutoCAD.Runtime.Exception ex)
            {
                ed.WriteMessage("\n" + ex.Message + "\n" + ex.Source + "\n" + ex.StackTrace);
            }
        }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 22:48 , Processed in 0.252890 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表