Получение елементов блока в WCS

Автор Тема: Получение елементов блока в WCS  (Прочитано 5078 раз)

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

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

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

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Всем привет.
На чертеже есть несколько блоков, которые содержат 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'ы, которые лежат в одинаковых описаниях блоков, содержат одинаковые координаты, хотя сами блоки имеют разные координаты.
Как это поправить?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получение елементов блока в WCS
« Ответ #1 : 31-10-2017, 16:47:24 »
Что-то я в коде ничего не понял. А главное чего ты хочешь добиться? Ты же работаешь с уже находящимися в BlockTableRecord примитивами. Т.е. если ты их будешь трансформировать, то это будет двойная трансформация.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Re: Получение елементов блока в WCS
« Ответ #2 : 31-10-2017, 16:52:47 »
Я хочу перебрать все блоки на чертеже и из них получить все солиды в мировой системе координат.
Так.. а код пересмотрю сейчас.

Отмечено как Решение shss 31-10-2017, 21:06:47

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получение елементов блока в WCS
« Ответ #3 : 31-10-2017, 16:54:39 »
Тогда тебе нужно сделать клон того Solid3d, который в блоке и трансформировать уже сам клон. Ну а потом можешь его добавить в ModelSpace.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Re: Получение елементов блока в WCS
« Ответ #4 : 31-10-2017, 16:58:32 »
Понял, буду пробовать.