【问题标题】:Creating MleaderStyle Autocad using C#使用 C# 创建 MleaderStyle Autocad
【发布时间】:2016-02-19 16:31:31
【问题描述】:

我在 C# 中创建了 MleaderStyle。没有错误,但是当我运行它时出现以下错误。这是我用于此目的的部分代码和 autocad 显示的错误。

MLeaderStyle dst = (MLeaderStyle)acTrans.GetObject( acCurDb.DimStyleTableId, OpenMode.ForWrite);

        MText mt = new MText();
        mt.Contents = text;

        dst.Name = " My LeaderStyle";
        dst.ArrowSymbolId = ObjectId.Null;
        dst.ArrowSize = 0.18 * scale;
        dst.ContentType = 0;
        dst.DefaultMText = mt;
        dst.LandingGap = gap;
        dst.EnableBlockRotation = true;
        dst.MaxLeaderSegmentsPoints = 2;


        //dst1.Add(dst);
        acTrans.AddNewlyCreatedDBObject(dst, true);

        MLeader lead = new MLeader();
      int i=  lead.AddLeader();
        lead.AddLeaderLine(i);
        lead.AddFirstVertex(i, start);
        lead.AddLastVertex(i, end);
        lead.MLeaderStyle = dst.ObjectId;

错误;

无法转换类型的对象 'Autodesk.Autocad.DataBaseServices.DimStyleTable' 到 'Autodesk.AutoCad.DataBaseServices.MleaderStyle'

【问题讨论】:

    标签: c# plugins autocad


    【解决方案1】:

    MLeaderStyle dst = (MLeaderStyle)acTrans.GetObject( acCurDb.DimStyleTableId, OpenMode.ForWrite);

    您不能将 DimStyleTable 转换为 MLeaderStyle,您必须使用 MLeaderStyle 构造函数之一来创建一个新构造函数。

    using (var tr = db.TransactionManager.StartTransaction())
    {
        // the newly created MText have to be disposed after using
        using (MText mt = new MText())
        {
            mt.Contents = text;
    
             // check if the MLeaderStyle dictionary does not already contains a style named "MyLeaderStyle"
            DBDictionary mlStyles = (DBDictionary)tr.GetObject(db.MLeaderStyleDictionaryId, OpenMode.ForWrite);
            if (!mlStyles.Contains("MyLeaderStyle"))
            {
                // create a new instance of MLeaderStyle (you can use the overloaded ctor to copy an existing style)
                MLeaderStyle dst = new MLeaderStyle();
                dst.ArrowSymbolId = ObjectId.Null;
                dst.ArrowSize = 0.18 * scale;
                dst.ContentType = 0;
                dst.DefaultMText = mt;
                dst.LandingGap = gap;
                dst.EnableBlockRotation = true;
                dst.MaxLeaderSegmentsPoints = 2;
    
                // add the new MLeaderStyle to the database
                dst.PostMLeaderStyleToDb(db, "MyLeaderStyle");
                tr.AddNewlyCreatedDBObject(dst, true);
            }
        }
        tr.Commit();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 2015-11-02
      • 2018-02-26
      • 2013-07-29
      • 1970-01-01
      相关资源
      最近更新 更多