Программный поиск текста в DWG файле

Форум для вопросов по компоненту CADViewX (версии Lite и Pro)
Post Reply
Andrey
Posts: 12
Joined: 27 May 2015, 06:02

Программный поиск текста в DWG файле

Post by Andrey » 27 May 2015, 06:47

Добрый день!

Существует ли открытый метод для поиска текста в CADViewX версии 9?
Если нет, то как программно получить структуру документа?

support
Posts: 3253
Joined: 30 Mar 2005, 11:36
Contact:

Re: Программный поиск текста в DWG файле

Post by support » 27 May 2015, 21:33

Здравствуйте, Андрей.

Метода для поиска текста в CADViewX API нет, чтобы программно получить список примитивов, используйте свойство CADViewX.Image.Converter.Sections(TxConvSection.csEntities).Entities.


Михаил
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

Andrey
Posts: 12
Joined: 27 May 2015, 06:02

Re: Программный поиск текста в DWG файле

Post by Andrey » 28 May 2015, 07:50

Добрый день, Михаил!

Киньте пожалуйста сюда пример кода на С#.

support
Posts: 3253
Joined: 30 Mar 2005, 11:36
Contact:

Re: Программный поиск текста в DWG файле

Post by support » 28 May 2015, 21:04

Здравствуйте, Андрей.

Вот пример кода на C# для поиска текста в DWG/DXF файле. Данный код формирует список строк, каждая из которых содержит информацию следующего вида: TEXT [Искомая строка] Position: (X;Y;Z).

Code: Select all

        private List<string> SearchText(string textValue)
        {
            List<string> textInfo = new List<string>();
            for (int i = 0; i < axCADViewX1.Image.Converter.get_Sections(TxConvSection.csEntities).Count; i++)
            {
                Entity ent = axCADViewX1.Image.Converter.get_Sections(TxConvSection.csEntities).get_Entities(i);
                // Поиск заданной текстовой строки среди объектов TEXT
                if (ent.EntID == TEntityID.eidText)
                {
                    Text textEnt = ent as Text;
                    if (textEnt.Text == textValue)
                    {
                        textInfo.Add(textEnt.EntName() + " Position: (" + textEnt.Point.X.ToString() + ";" + textEnt.Point.Y.ToString() + ";" + textEnt.Point.Z.ToString() + ")");
                    }
                }
                // Поиск заданной текстовой строки среди объектов TEXT, расположенных внутри объектов INSERT (вставка блока)
                if (ent.EntID == TEntityID.eidInsert)
                {
                    Insert ins = ent as Insert;
                    for (int j = 0; j < ins.Count; j++)
                    {
                        if (ins.get_Entities(j).EntID == TEntityID.eidText)
                        {
                            Text textEnt = ins.get_Entities(j) as Text;
                            if (textEnt.Text == textValue)
                            {
                                textInfo.Add(textEnt.EntName() + " Position: (" + textEnt.Point.X.ToString() + ";" + textEnt.Point.Y.ToString() + ";" + textEnt.Point.Z.ToString() + ")");
                            }
                        }
                    }
                }
            }
            return textInfo;
        }
Михаил
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

Andrey
Posts: 12
Joined: 27 May 2015, 06:02

Re: Программный поиск текста в DWG файле

Post by Andrey » 01 Jun 2015, 09:48

Михаил,

а как перебрать слои у чертежа ? (Layers)

почему то попадается axCADViewX1.Image.Converter.get_Sections(TxConvSection.csEntities).Count = 0, если активный слой - какая нибудь картинка или линии.

support
Posts: 3253
Joined: 30 Mar 2005, 11:36
Contact:

Re: Программный поиск текста в DWG файле

Post by support » 01 Jun 2015, 14:44

Здравствуйте, Андрей.

Следующий код осуществляет перебор слоев чертежа:

Code: Select all

         for (int i = 0; i < axCADViewX1.Image.Converter.get_Counts(TxConvSection.csLayers); i++)
         {
              Layer cadLayer = axCADViewX1.Image.Converter.get_Layers(i);
         }
Михаил
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

Post Reply