明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1899|回复: 3

请教各位大能,如何新建mline实体啊

[复制链接]
发表于 2012-8-19 13:40:13 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 lamntree 于 2012-8-19 17:37 编辑

如何用代码新建mline实体啊,是不是用Mline.AppendSegment(Point3d)方法新建mline实体啊,我用这个方法写的代码,调试时在这一行出现eInvaildStyle异常
[CommandMethod("lp")]
        public static void Multline()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            PromptPointResult ppr1 = doc.Editor.GetPoint("\nspecial start point1");
            PromptPointResult ppr2 = doc.Editor.GetPoint("\nspecial start point2");
            Point3d pt1 = new Point3d(((ppr1.Value.X + ppr2.Value.X) / 2), ((ppr1.Value.Y + ppr2.Value.Y) / 2), 0);
            PromptPointResult ppr3 = doc.Editor.GetPoint("\nspecial end point");
            Point3d pt2 = ppr3.Value;
            double l = Math.Sqrt(Math.Pow((ppr2.Value.X - ppr1.Value.X), 2) + Math.Pow((ppr1.Value.Y - ppr2.Value.Y), 2));
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
                BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);               
                Mline ml = new Mline();
                ml.SetDatabaseDefaults();
                ml.Scale = l;
                ml.AppendSegment(pt1);
                ml.AppendSegment(pt2);               
                btr.AppendEntity(ml);
                trans.AddNewlyCreatedDBObject(ml, true);
                trans.Commit();
            }
        }
 楼主| 发表于 2012-8-22 12:23:45 | 显示全部楼层
我自己研究出来了,这个命令是用3点画MLINE,第一点第二点的距离是MLINE的SCALE,第一点第二点的中点是MLINE的起点,第三点是MLINE的终点。下面是代码
[CommandMethod("lp")]
        public static void Multline()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            PromptPointResult ppr1 = doc.Editor.GetPoint("\nspecial start point1");
            PromptPointResult ppr2 = doc.Editor.GetPoint("\nspecial start point2");
            Point3d pt1 = new Point3d(((ppr1.Value.X + ppr2.Value.X) / 2), ((ppr1.Value.Y + ppr2.Value.Y) / 2), 0);
            PromptPointResult ppr3 = doc.Editor.GetPoint("\nspecial end point");
            Point3d pt2 = ppr3.Value;
            double l = Math.Sqrt(Math.Pow((ppr2.Value.X - ppr1.Value.X), 2) + Math.Pow((ppr1.Value.Y - ppr2.Value.Y), 2));
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
                BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);               
                Mline ml = new Mline();
                ml.SetDatabaseDefaults();
                DBDictionary MlineStyleDic = (DBDictionary)trans.GetObject(db.MLStyleDictionaryId, OpenMode.ForWrite);
                MlineStyle ms = new MlineStyle();
                ms = (MlineStyle)trans.GetObject(MlineStyleDic.GetAt("STANDARD"), OpenMode.ForRead);               
                ml.Style = ms.ObjectId;               
                ml.Scale = l;
                ml.Justification = MlineJustification.Zero;
                Vector3d vec = new Vector3d(0,0,1);
                ml.Normal = vec;
                ml.AppendSegment(pt1);
                ml.AppendSegment(pt2);               
                btr.AppendEntity(ml);
                trans.AddNewlyCreatedDBObject(ml, true);
                trans.Commit();
            }
        }
发表于 2012-8-22 12:55:46 | 显示全部楼层
public double DistanceTo(Autodesk.AutoCAD.Geometry.Point3d point)
    Autodesk.AutoCAD.Geometry.Point3d 的成员
发表于 2012-8-26 06:57:05 | 显示全部楼层
学习了,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 16:21 , Processed in 0.167404 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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