.NET

Reply
Active Member
allentable
Posts: 10
Registered: ‎05-24-2013
Message 1 of 5 (219 Views)
Accepted Solution

How can I use Mline Class to draw mline in dwg using C#?

219 Views, 4 Replies
05-26-2013 06:52 PM

hello,

I want to draw mline in the dwg automatically. Here is some codes, and what should I do next?

 

C# codes by VS2010,FOR AUTOCAD 2010.

 

 Line dashdot = new Line();   

 dashdot.Linetype = "DashDot";

 MlineStyleElement off1100 = new MlineStyleElement(3720/2,Autodesk.AutoCAD.Colors.Color.FromRgb (0,0,0),dashdot .LinetypeId );  

 MlineStyle mlineStyle = new MlineStyle();

  mlineStyle.Elements.Add(off1100,false );

Mline mline = new Mline(); 

mline.Style = mlineStyle.ObjectId;//HOW CAN I DEFINE THE MLINE? it should contain lines and I don't know

                                                      // how to add lines(may be points) into it.

 

The code may be wrong.

Please give me some help and advice.

Thanks in advance.

Allen

*Expert Elite*
Hallex
Posts: 1,569
Registered: ‎10-08-2008
Message 2 of 5 (205 Views)

Re: How can I use Mline Class to draw mline in dwg using C#?

05-26-2013 10:13 PM in reply to: allentable

Just a quick shot sorry,

without explanations

see docs for more

        [CommandMethod ("mil")]
        public void MLINECREATE()
        {
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Database db = HostApplicationServices.WorkingDatabase;

            using (Transaction tr = db.TransactionManager.StartTransaction())
            {

                BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
                Mline ml = new Mline();
                ml.Style = db.CmlstyleID;
                
                ml.Normal = Vector3d.ZAxis;
                ml.Justification = MlineJustification.Zero;
                ml.AppendSegment(new Point3d (0,0,0));
                ml.AppendSegment(new Point3d(100, 0, 0));
                ml.AppendSegment(new Point3d(100, 80, 0));
                ml.AppendSegment(new Point3d(0, 80, 0));
                ml.IsClosed = true;
          
                btr.AppendEntity(ml);
                tr.AddNewlyCreatedDBObject(ml, true);
       
                tr.Commit();

            }
            doc.SendStringToExecute("_ZOOM _Ob _L  ",true,false,false);
        }

 

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Active Member
allentable
Posts: 10
Registered: ‎05-24-2013
Message 3 of 5 (196 Views)

Re: How can I use Mline Class to draw mline in dwg using C#?

05-26-2013 11:29 PM in reply to: Hallex

hi                   ,

Thank you for your so quick answer.

Your codes works well.

But can you give more codes about custom MlineStyle, my codes belows are wrong.

 

 Line dashdot = new Line();  

 dashdot.Linetype = "Dash";    

 MlineStyleElement off1100 = new MlineStyleElement(3720 / 2, Autodesk.AutoCAD.Colors.Color.FromRgb(0, 0, 0), dashdot.LinetypeId);          

MlineStyle mlineStyle = new MlineStyle();         

 mlineStyle.Elements.Add(off1100, false);            

 Mline ml = new Mline();

 ml.Style = mlineStyle.ObjectId;

 

How can I use MlineStyle?

Thanks,

Allen

*Expert Elite*
Hallex
Posts: 1,569
Registered: ‎10-08-2008
Message 4 of 5 (189 Views)

Re: How can I use Mline Class to draw mline in dwg using C#?

05-27-2013 01:19 AM in reply to: allentable

Found this code somewhere on forums

no tested, see if this helps

[CommandMethod("createmlinestyle")]
 
public void createmlinestyle()
 
{
 
    Document doc = Application.DocumentManager.MdiActiveDocument;
 
    Editor editor = doc.Editor;
 
    Database db = doc.Database;
 
    using (Transaction Tx =
 
        db.TransactionManager.StartTransaction())
 
    {
 
 
 
        DBDictionary mlineDic = 

            (DBDictionary)Tx.GetObject(db.MLStyleDictionaryId, 

                                              OpenMode.ForRead);
 
        if (!mlineDic.Contains("TEST"))
 
        {
 
            mlineDic.UpgradeOpen();
 
            MlineStyle mlineStyle = new MlineStyle();
 
            mlineDic.SetAt("TEST", mlineStyle);
 
            Tx.AddNewlyCreatedDBObject(mlineStyle, true);
 
 
 
            mlineStyle.EndAngle = 3.14159 * 0.5;
 
            mlineStyle.StartAngle = 3.14159 * 0.5;
 
            mlineStyle.Name = "TEST";
 
            Autodesk.AutoCAD.Colors.Color Color;
 
            Color = 

                Autodesk.AutoCAD.Colors.Color.FromRgb(255, 0, 0);
 
 
 
            MlineStyleElement element = 

                    new MlineStyleElement(0.25, 

                                        Color, 

                                         db.Celtype);
 
            mlineStyle.Elements.Add(element, true);
 
            element = 

                    new MlineStyleElement(-0.25, 

                                        Color, 

                                        db.Celtype);
 
 
 
            mlineStyle.Elements.Add(element, false);
 
        }
 
 
 
        Tx.Commit();
 
    }
 
}

 

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Active Member
allentable
Posts: 10
Registered: ‎05-24-2013
Message 5 of 5 (175 Views)

Re: How can I use Mline Class to draw mline in dwg using C#?

05-27-2013 05:14 AM in reply to: Hallex

@Hallex,

Thanks very much.

I get what I want.

 

Best regards,:smileyhappy:

Allen

You are not logged in.

Log into access your profile, ask and answer questions, share ideas and more. Haven't signed up yet? Register

Announcements
Are you familiar with the Autodesk Expert Elites? The Expert Elite program is made up of customers that help other customers by sharing knowledge and exemplifying an engaging style of collaboration. To learn more, please visit our Expert Elite website.

Need installation help?

Start with some of our most frequented solutions to get help installing your software.

Ask the Community