Создание выноски из текста и линий

Автор Тема: Создание выноски из текста и линий  (Прочитано 12845 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн user32Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Всем здравствуйте!
Есть выноска на чертеже, сделанная обычными линиями и текстом, возникла необходимость создать из этого набора стандартную выноску автокада. Подскажите пожалуйста, как такое можно осуществить. На вход  AddLeader нужно подать массив точек. Я могу взять как вариант точку вставки текста, но как мне определить что линия, которая идет от объекта до самого текста относится именно к этой выноски?
Заранее спасибо

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Создание выноски из текста и линий
« Ответ #1 : 31-10-2018, 09:14:28 »
Обычный геометрический анализ по вашим условиям. Вот только условий, допусков и проблем столько будет, что лично я бы сразу плюнул на эту затею

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Создание выноски из текста и линий
« Ответ #2 : 31-10-2018, 09:48:36 »
Я бы попытался получать информацию для текста не через его свойства, а через метод Entity.getGeomExtents() - MText и DBtext унаследованы от Entity, а значит имеют этот метод.
Также у MText есть метод GetBoundingPoints()
По этим данным вы получите описывающий прямоугольник и его уже будете анализировать по отношению к отрезкам.
Правда, для повернутого текста это все не сработает ))

Оффлайн user32Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Создание выноски из текста и линий
« Ответ #3 : 31-10-2018, 10:27:32 »
Вроде понял, спасибо, буду пытаться)

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: Создание выноски из текста и линий
« Ответ #4 : 31-10-2018, 11:29:59 »
Как правило выноска создается последовательно и за один раз, т.е. сначала рисуют линии, потом текст или наоборот, не столь важно или уже нарисованную выноску из линий и текста копируют в другое место... это  все я к тому, что имеет смысл посмотреть на хендлы объектов, их значения должны быть где-то рядом...

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: Создание выноски из текста и линий
« Ответ #5 : 31-10-2018, 12:48:33 »
Всем здравствуйте!
Есть выноска на чертеже, сделанная обычными линиями и текстом

Всего одна выноска? )))

как написал Александр Пекшев aka Modis надежный алгоритм врятли можно создать.
Если выносок немного(штук 20) можешь сделать полуавтомат, запросил пользователя указать линию, затем указать текст, потом следующую, пока esc не нажмет. Так проще, независимо от слоя, цвета, типа линии и т.д.

Ну а если много выносок(штук 100). То возможно проще сначала поместить распознаваемые выноски в один слой, а затем перебрать все линии в слое и выбрать для них ближайший текст. Т.е. возможно будет проще найти ближайший текст к линии чем наоборот.

Оффлайн user32Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Создание выноски из текста и линий
« Ответ #6 : 31-10-2018, 12:57:59 »
Ахах)) Еслиб была одна, то я бы не заморачивался. Я просто пытаюсь с одной хотя бы это сделать) Вопрос стоит о сотнях выносок. Выноски как раз на одном слое располагаются. все выноску будут горизонатльные.
Есть ли в апи такой метод, который ищет ближайший текст?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Создание выноски из текста и линий
« Ответ #7 : 31-10-2018, 13:03:39 »
Есть ли в апи такой метод, который ищет ближайший текст?
Тут нужен не один метод. И ближайший к чему текст?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн user32Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Создание выноски из текста и линий
« Ответ #8 : 31-10-2018, 13:28:25 »
Ну получается к линии. Суть вообще следующая. Из ревита выгружаются в автокад чертежи и соответственно выноски превращаются в набор текста и линий. Заказчик принципиально хочет видеть выноски как выноски автокада. Вот и возникла такая идея автоматизировать это все уже в автокаде. Просто может я вообще не в ту сторону мыслю и всех путаю и есть более легкий способ это все решить).
Выноска самая обыкновенная. Вот как выглядит


Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: Создание выноски из текста и линий
« Ответ #9 : 31-10-2018, 14:48:53 »
Выложите пример чертежа.
и посмотрите, что там у линий и текста в XData, есть большая вероятность, что ответ на поверхности.
http://adndevblog.typepad.com/aec/2012/08/revit-dwgdxf-export-specification-of-the-extended-data-xdata.html

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Создание выноски из текста и линий
« Ответ #10 : 31-10-2018, 14:50:37 »
Off-Topic: показать
Я читаю и плачу  :'( Из Ревита в Автокад....

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: Создание выноски из текста и линий
« Ответ #11 : 31-10-2018, 15:00:04 »
Из ревита выгружаются в автокад чертежи и соответственно выноски превращаются в набор текста и линий. Заказчик принципиально хочет видеть выноски как выноски автокада. Вот и возникла такая идея автоматизировать это все уже в автокаде. Просто может я вообще не в ту сторону мыслю и всех путаю и есть более легкий способ это все решить).

Что из себя представляет выноска? 2 отрезка или полилиния? Есть выноски с 3 отрезками?

Возможно будет легче через Revit API выдернуть выноски, считать текст и координаты точек и создать в автокаде.  Так ты избавишься от необходимости анализа какой текст к какой линии относится. Но нужно подумать как воссоздать в автокаде, например перекинуть данные через файл или подключиться через ActiveX.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: Создание выноски из текста и линий
« Ответ #12 : 31-10-2018, 15:27:46 »
Что из себя представляет выноска? 2 отрезка или полилиния? Есть выноски с 3 отрезками?

Возможно будет легче через Revit API выдернуть выноски, считать текст и координаты точек и создать в автокаде.  Так ты избавишься от необходимости анализа какой текст к какой линии относится. Но нужно подумать как воссоздать в автокаде, например перекинуть данные через файл или подключиться через ActiveX.

Да не нужно это, если ссылки действительно экспортированы из Ревита, то прочитав XData и разложив по Element ID объекты, собрать выноски не представляется чем то сложным.
ЗЫ.
Проверил, создал в ревите лист и пару выносок на нем, экспортнул лист в dwg, открыв этот лист в автокаде и посмотрев/сравнив XData, все сошлось.

Оффлайн user32Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Создание выноски из текста и линий
« Ответ #13 : 31-10-2018, 15:32:46 »
Выложите пример чертежа.
и посмотрите, что там у линий и текста в XData, есть большая вероятность, что ответ на поверхности.
http://adndevblog.typepad.com/aec/2012/08/revit-dwgdxf-export-specification-of-the-extended-data-xdata.html

https://yadi.sk/d/gIAtYoehGo6gbg  - Вот сюда скинул кусочек плана с выносками в dwg и dxf... Если честно первый раз сталкиваюсь с xdata.
Но удалось найти ID самой выноски в файле dxf. Может еще что найду, буду счас изучать)

Что из себя представляет выноска? 2 отрезка или полилиния? Есть выноски с 3 отрезками?

Получается там при простой выгрузке образуется две линии и блок в виде линии, а сверху текст.


Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: Создание выноски из текста и линий
« Ответ #14 : 31-10-2018, 15:40:53 »
Вот сюда скинул кусочек плана с выносками в dwg
Посмотрел Ваш dwg файл, он ничем не отличается от любого другого, экспортированного из Ревита, т.е в XData есть соответствующие записи.

Если честно первый раз сталкиваюсь с xdata
На форуме где-то была статья, как читать и писать эти данные. Поищите.

ЗЫ.
Пару месяцев назад, от заказчика пришла архитектура экспортированная из ревита , при этом все было экспортировано в один слой... работать с таким было невозможно, пришлось писать парсер, для раскладки по слоям, вот тогда и разбирался с этими записями...