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

ADN Club => AutoCAD .NET API => Тема начата: shss от 31-10-2017, 16:27:07

Название: Получение елементов блока в WCS
Отправлено: shss от 31-10-2017, 16:27:07
Всем привет.
На чертеже есть несколько блоков, которые содержат Solid3d, пытаюсь получить его вершины, но получаю их в ECS.

Код - C# [Выбрать]
  1. if (id.ObjectClass == RXClass.GetClass(typeof(BlockReference)))
  2. {
  3.     BlockReference blockReference = transaction.GetObject(id, OpenMode.ForRead) as BlockReference;
  4.     BlockTableRecord blockReferenceRecord = (BlockTableRecord)transaction.GetObject(blockReference.BlockTableRecord, OpenMode.ForRead);
  5.  
  6.     Matrix3d matrix = blockReference.BlockTransform;
  7.  
  8.     foreach (ObjectId blockReferenceId in blockReferenceRecord)
  9.     {
  10.          if (blockReferenceId.ObjectClass == RXClass.GetClass(typeof(Solid3d)))
  11.          {
  12.               Solid3d solid3D = transaction.GetObject(blockReferenceId, OpenMode.ForWrite) as Solid3d;
  13.               solid3D.TransformBy(matrix);
  14.               solids.Add(solid3D);
  15.           }
  16.      }
  17. }
  18.  

Но в итоге Solid'ы, которые лежат в одинаковых описаниях блоков, содержат одинаковые координаты, хотя сами блоки имеют разные координаты.
Как это поправить?
Название: Re: Получение елементов блока в WCS
Отправлено: Александр Ривилис от 31-10-2017, 16:47:24
Что-то я в коде ничего не понял. А главное чего ты хочешь добиться? Ты же работаешь с уже находящимися в BlockTableRecord примитивами. Т.е. если ты их будешь трансформировать, то это будет двойная трансформация.
Название: Re: Получение елементов блока в WCS
Отправлено: shss от 31-10-2017, 16:52:47
Я хочу перебрать все блоки на чертеже и из них получить все солиды в мировой системе координат.
Так.. а код пересмотрю сейчас.
Название: Re: Получение елементов блока в WCS
Отправлено: Александр Ривилис от 31-10-2017, 16:54:39
Тогда тебе нужно сделать клон того Solid3d, который в блоке и трансформировать уже сам клон. Ну а потом можешь его добавить в ModelSpace.
Название: Re: Получение елементов блока в WCS
Отправлено: shss от 31-10-2017, 16:58:32
Понял, буду пробовать.