Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2012, 00:34   #1
Paravozzz
 
Регистрация: 15.10.2011
Сообщений: 7
По умолчанию [Решено]Создание множества объектов с именами, содержащими счетчик.

Доброго времени суток!

Пытаюсь написать плагин к AutoCad, который, вызовом команды, отрисовывает стандартную рамку со штампом для листа формата А4.
Рамка отрисовывается полилиниями. Полилиний много. Хочется создать множество объектов полилиний с именами вида Polyline1, Polyline2, Polyline3, Polyline4 увеличивая нумерацию циклом.

Вопрос:
Как сделать так что бы создать, например, 10 объектов-полилиний с именем содержащим в себе индекс, увеличивающийся на 1.
Т.е. чтобы нижеследующий код сделать при помощи цикла со счетчиком.

Код:
Polyline objPlineStampVertLine1 = new Polyline();
objPlineStampVertLine1.SetDatabaseDefaults();
acBTR.AppendEntity(objPlineStampVertLine1);
acTrans.AddNewlyCreatedDBObject(objPlineStampVertLine1, true);

Polyline objPlineStampVertLine2 = new Polyline();
objPlineStampVertLine2.SetDatabaseDefaults();
acBTR.AppendEntity(objPlineStampVertLine2);
acTrans.AddNewlyCreatedDBObject(objPlineStampVertLine2, true);

Polyline objPlineStampVertLine3 = new Polyline();
objPlineStampVertLine3.SetDatabaseDefaults();
acBTR.AppendEntity(objPlineStampVertLine3);
acTrans.AddNewlyCreatedDBObject(objPlineStampVertLine3, true);
Спасибо!

Код полностью:
Код:
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using System.Collections.Generic;
using System;


namespace AutocadPlugin
{
    public class test : IExtensionApplication
    {
        [CommandMethod("b_A4")]
        public void comBA4()
        {
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acDocDb = acDoc.Database;
            using (Transaction acTrans = acDocDb.TransactionManager.StartTransaction())
            {

                BlockTable acBT;
                acBT = acTrans.GetObject(acDocDb.BlockTableId, OpenMode.ForRead) as BlockTable;

                BlockTableRecord acBTR;
                acBTR = acTrans.GetObject(acDocDb.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;

                int startX, startY; //Нижний левый угол рамки. Координаты.
                startX = 0;
                startY = 0;

                Polyline objPlineStampVertLine1 = new Polyline(); //Вертикальная линия 1 в Штампе.
                objPlineStampVertLine1.SetDatabaseDefaults();
                objPlineStampVertLine1.AddVertexAt(0, new Point2d(startX + 30, startY + 35), 0, 0, 0);
                objPlineStampVertLine1.AddVertexAt(0, new Point2d(startX + 30, startY + 60), 0, 0, 0);

                acBTR.AppendEntity(objPlineStampVertLine1);
                acTrans.AddNewlyCreatedDBObject(objPlineStampVertLine1, true);

                Polyline objPlineStampVertLine2 = new Polyline(); //Вертикальная линия 2 в Штампе.
                objPlineStampVertLine2.SetDatabaseDefaults();
                objPlineStampVertLine2.AddVertexAt(0, new Point2d(startX + 40, startY + 5), 0, 0, 0);
                objPlineStampVertLine2.AddVertexAt(0, new Point2d(startX + 40, startY + 60), 0, 0, 0);

                acBTR.AppendEntity(objPlineStampVertLine2);
                acTrans.AddNewlyCreatedDBObject(objPlineStampVertLine2, true);

                Polyline objPlineStampVertLine3 = new Polyline(); //Вертикальная линия 3 в Штампе.
                objPlineStampVertLine3.SetDatabaseDefaults();
                objPlineStampVertLine3.AddVertexAt(0, new Point2d(startX + 50, startY + 35), 0, 0, 0);
                objPlineStampVertLine3.AddVertexAt(0, new Point2d(startX + 50, startY + 60), 0, 0, 0);

                acBTR.AppendEntity(objPlineStampVertLine3);
                acTrans.AddNewlyCreatedDBObject(objPlineStampVertLine3, true);

                Polyline objPlineStampVertLine4 = new Polyline(); //Вертикальная линия 4 в Штампе.
                objPlineStampVertLine4.SetDatabaseDefaults();
                objPlineStampVertLine4.AddVertexAt(0, new Point2d(startX + 60, startY + 5), 0, 0, 0);
                objPlineStampVertLine4.AddVertexAt(0, new Point2d(startX + 60, startY + 60), 0, 0, 0);

                acBTR.AppendEntity(objPlineStampVertLine4);
                acTrans.AddNewlyCreatedDBObject(objPlineStampVertLine4, true);

                acTrans.Commit();
            }

        }
        

        public void Initialize()
        {
            var editor = Application.DocumentManager.MdiActiveDocument.Editor;
            editor.WriteMessage("Инициализация плагина AcadPlugin..." + "\n");
            editor.WriteMessage("Инициализация плагина AcadPlugin прошла успешно!");
        }

        public void Terminate()
        {

        }

    }
}

Последний раз редактировалось Paravozzz; 21.08.2012 в 21:02. Причина: Добавил решение.
Paravozzz вне форума Ответить с цитированием
Старый 21.08.2012, 09:40   #2
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

В Delphi есть TobjectList, в Си не силен, но там тоже есть листы объектов...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 21.08.2012, 21:01   #3
Paravozzz
 
Регистрация: 15.10.2011
Сообщений: 7
По умолчанию

А вот и решение:

Код:
int n = 10;
Polyline[] objPlineStampVertLine = new Polyline[n];

for (int i = 0; i < n; i++)
{
    objPlineStampVertLine[i] = new Polyline();
    objPlineStampVertLine[i].SetDatabaseDefaults();
    acBTR.AppendEntity(objPlineStampVertLine[i]);
    acTrans.AddNewlyCreatedDBObject(objPlineStampVertLine[i], true);
}
Paravozzz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание компонентов с динамически задаваемыми именами - возможно ли это?? delphicoding Общие вопросы Delphi 15 31.03.2012 21:06
Создание и уничтожение объектов. Время жизни объектов C++/C# Anett// Помощь студентам 0 24.10.2011 23:26
Создание объектов voltageminh Общие вопросы C/C++ 7 11.05.2011 08:51
Отдельное создание объектов java_91 Общие вопросы Delphi 3 04.02.2011 16:02