Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: VLADIMIRnext от 03-06-2022, 10:37:51

Название: Рамка мультивыноски
Отправлено: VLADIMIRnext от 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
Название: Re: Рамка мультивыноски
Отправлено: Александр Ривилис от 04-06-2022, 22:26:16
И еще=)
Один вопрос - одна тема!
Название: Re: Рамка мультивыноски
Отправлено: Александр Ривилис от 04-06-2022, 22:40:19
как достать подсказку для тега атрибута из класса AcDbAttribute
Подсказка есть не у атрибута (AcDbAttribute), а у определения атрибута (AcDbAttributeDefinition - методы prompt и promptConst)
В твоём случае нужно по tag атрибута найти определение атрибута и уже из него получить подсказку.
Название: Re: Рамка мультивыноски
Отправлено: Александр Ривилис от 04-06-2022, 22:52:02
Если текст выноски находится на чертеже в рамке, как можно узнать вершины полилиний для этой рамки?
Простейший (если не единственный способ) - использовать метод explode() (не путать с командой _EXPLODE) и найти среди всех примитивов замкнутую (прямоугольную) полилинию.
Название: Re: Рамка мультивыноски
Отправлено: VLADIMIRnext от 06-06-2022, 09:22:36
Один вопрос - одна тема!
Больше такого не повторится=)
использовать метод explode()
Спасибо!