C# Teigha(Auto Cad), как установить количество элементов mline?

В качестве вопроса. Вот как я получаю количество элементов:

      using (var trans = myDatabase.TransactionManager.StartTransaction())
        {
            BlockTableRecord btrec = (BlockTableRecord)trans.GetObject(myDatabase.CurrentSpaceId, OpenMode.ForWrite);
            foreach (ObjectId objid in btrec)
            {
                Entity ent = trans.GetObject(objid, OpenMode.ForWrite) as Entity;
                if (ent.GetType().Name.Contains("Mline"))
                {
                    Mline dbtxta = (Mline)ent;
                    // mline style
                    MlineStyle mlsta = ((MlineStyle)dbtxta.Style.GetObject(OpenMode.ForRead));  
                    // The result is i wanna get.
                    int result = mlsta.Elements.Count;
                }
            }
        }

введите описание изображения здесь

И, как в этой mline, счетчик равен 4. После обработки моим алгоритмом я хочу нарисовать mline из 5 линий (Counts). Как я могу это сделать. Это я рисую код:

                  using (var trans = database.TransactionManager.StartTransaction())
        {
            for (int i = 0; i < xyz.Count; i++)
            {
                Mline mine = new Mline();
                //mine.Style. 
                mine.Scale = 0; //?
                mine.AppendSegment(new Point3d(xyz[i].X, xyz[i].Y, xyz[i].Z));
                mine.Element(new Point3d(xyz[i].X, xyz[i].Y, xyz[i].Z));

                // The comment code is also drawing mline,but the number of mline cannot be specified
                //Point2d point2D1 = new Point2d(xyz[i].X, xyz[i].Y);       // start point
                //Point2d point2D2 = new Point2d(xyz[i+1].X, xyz[i + 1].Y); // end point
                //Teigha.DatabaseServices.Polyline pl = new Teigha.DatabaseServices.Polyline();
                //pl.AddVertexAt(0, point2D1, 0,1,1);
                //pl.AddVertexAt(1, point2D2, 0,1,1);

                BlockTableRecord btr = trans.GetObject(database.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
                btr.AppendEntity(mine);
                mine.Layer = LayerName;
                trans.AddNewlyCreatedDBObject(mine, true);
            }
            trans.Commit();
            database.Save();
        }

Каким образом можно нарисовать mline с 5 элементами (функция count только get, а не set), так как я могу это сделать, например:

      mline.style.Elements.Count = 5;

0 ответов

Другие вопросы по тегам