Рамка мультивыноски

Автор Тема: Рамка мультивыноски  (Прочитано 5988 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
Рамка мультивыноски
« : 03-06-2022, 10:37:51 »
Добрый день.
Ковыряю выноску AcDbMLeader, вопрос.
Если текст выноски находится на чертеже в рамке, как можно узнать вершины полилиний для этой рамки?
Я вот итерируюсь по индексам линий выноски - LeaderLineIndexes, потом из каждой достаю вершины, но в этом случае учитываются только линии указывающие на текст выноски.

Примерно так думал делать:

Код - C++ [Выбрать]
  1.         AcArray<int> line_indexes;
  2.         pMLeaderEntity->getLeaderLineIndexes(line_indexes);
  3.         AcGePoint3dArray array_verts;
  4.         for(int i = 0; i < line_indexes.length(); i++){
  5.                 int num_verts;
  6.                 auto es = pMLeaderEntity->numVertices(line_indexes[i], num_verts);
  7.                 if(es == Acad::eOk){
  8.                         for(int j = 0; j < num_verts; j++){
  9.                                 AcGePoint3d vertex;
  10.                                 auto es2 = pMLeaderEntity->getVertex(line_indexes[i], j, vertex);
  11.                                 if(es2 ==Acad::eOk)
  12.                                 array_verts.append(vertex);
  13.                         }
  14.                 }
  15.         }

И еще=) как достать подсказку для тега атрибута из класса AcDbAttribute
« Последнее редактирование: 03-06-2022, 13:16:44 от VLADIMIRnext »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Рамка мультивыноски
« Ответ #1 : 04-06-2022, 22:26:16 »
И еще=)
Один вопрос - одна тема!
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Рамка мультивыноски
« Ответ #2 : 04-06-2022, 22:40:19 »
как достать подсказку для тега атрибута из класса AcDbAttribute
Подсказка есть не у атрибута (AcDbAttribute), а у определения атрибута (AcDbAttributeDefinition - методы prompt и promptConst)
В твоём случае нужно по tag атрибута найти определение атрибута и уже из него получить подсказку.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение VLADIMIRnext 06-06-2022, 09:22:40

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Рамка мультивыноски
« Ответ #3 : 04-06-2022, 22:52:02 »
Если текст выноски находится на чертеже в рамке, как можно узнать вершины полилиний для этой рамки?
Простейший (если не единственный способ) - использовать метод explode() (не путать с командой _EXPLODE) и найти среди всех примитивов замкнутую (прямоугольную) полилинию.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
Re: Рамка мультивыноски
« Ответ #4 : 06-06-2022, 09:22:36 »
Один вопрос - одна тема!
Больше такого не повторится=)
использовать метод explode()
Спасибо!