Необычная UCS

Автор Тема: Необычная UCS  (Прочитано 8103 раз)

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

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

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Необычная UCS
« : 10-11-2018, 19:03:20 »
Привет,
Хочу учесть текущий вид при создании объекта.
Чтобы результат получился как "видится на экране".
Но, получается перевернуто на 180 грудусов. Файл во вложении.
Код - C# [Выбрать]
  1.         [CommandMethod(nameof(TestUcs), CommandFlags.Modal)]
  2.         public void TestUcs()
  3.         {
  4.             var doc = Application.DocumentManager.MdiActiveDocument;
  5.             var db = doc.Database;
  6.             using (var t = doc.TransactionManager.StartTransaction())
  7.             {
  8.                 var ucs = doc.Editor.CurrentUserCoordinateSystem;
  9.                 var ms = (BlockTableRecord)db.CurrentSpaceId.GetObject(OpenMode.ForWrite);
  10.                 var pt = doc.Editor.GetPoint("Точка").Value;
  11.                 var pt2 = pt + new Vector3d(3, 6, 0);
  12.                 var line = new Line(pt, pt2);
  13.                 line.TransformBy(ucs);
  14.                 ms.AppendEntity(line);
  15.                 t.AddNewlyCreatedDBObject(line, true);
  16.                 t.Commit();
  17.             }
  18.         }
Получается так (красная линия - как должно быть):

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Необычная UCS
« Ответ #1 : 10-11-2018, 19:07:40 »
Ты получаешь точки в мировой системе координат, создаешь по ним отрезок, а затем его трансформируешь по ПСК. Разве тут есть что-то неожиданное в том, что отрезок повернут? ))

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Необычная UCS
« Ответ #2 : 10-11-2018, 19:10:39 »
А как нужно сделать?

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Необычная UCS
« Ответ #3 : 10-11-2018, 19:13:50 »
А как нужно сделать?
При запросе точек через Editor.GetPoint() вроде как система координат не учитывается и точка возвращается с МСК. А значит, тебе ничего и не нужно трансформировать

Хотя, я до их пор не могу понять сути вопроса...

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Необычная UCS
« Ответ #4 : 10-11-2018, 19:18:11 »
Если убрать строку трансформации отрезка, то в результате отрезок в космосе (улетает далеко).
Если трансформировать точку запроса, то получается так (должно быть как красная линия)


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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Необычная UCS
« Ответ #5 : 10-11-2018, 19:18:22 »
Но, получается перевернуто на 180 грудусов. Файл во вложении.
А ты смотрел, куда у тебя оси этой UCS направлены?



Ты учитываешь UCS а не вид.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Необычная UCS
« Ответ #6 : 10-11-2018, 19:19:38 »
Если трансформировать точку запроса, то получается так (должно быть как красная линия)
Не должно быть. У тебя UCS не по виду. По виду это так:


Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Необычная UCS
« Ответ #7 : 10-11-2018, 19:19:52 »
Если трансформировать точку запроса, то получается так (должно быть как красная линия)
А если трансформировать не точку запроса, а точку pt2 как раз?

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Необычная UCS
« Ответ #8 : 10-11-2018, 19:20:03 »
Ты учитываешь UCS а не вид.
О, это наверно то! А как учесть вид?
Не знаю, что сделано в файле.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Необычная UCS
« Ответ #9 : 10-11-2018, 19:20:54 »
При запросе точек через Editor.GetPoint() вроде как система координат не учитывается и точка возвращается с МСК.
Шутишь??? Точки возвращаются в ПСК (UCS), а не в МСК (WCS).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Вильдар 10-11-2018, 21:08:19

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Необычная UCS
« Ответ #10 : 10-11-2018, 19:22:59 »
О, это наверно то! А как учесть вид?
Не знаю, что сделано в файле.
Если командными методами, то можно переключить UCS:
_UCS _View
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Необычная UCS
« Ответ #11 : 10-11-2018, 19:26:33 »
А не командными можно?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Необычная UCS
« Ответ #12 : 10-11-2018, 19:32:33 »
А не командными можно?
А не командными ты должен понять что хочешь делать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Необычная UCS
« Ответ #13 : 10-11-2018, 19:38:21 »
Нарисовать как видится на экране.
Если взять текущий вид
ViewTableRecord view = doc.Editor.GetCurrentView();
То отличается оно одним свойством CoordinateSystem3d Ucs:
Ucs = {CoordinateSystem3d} "((173.12573185366,173.920538721765,0),(0.675993720675631,0.736907381973554,0),(-0.736907381973554,0.675993720675631,0),(0,0,1))"
Ucs = {CoordinateSystem3d} "((173.12573185366,173.920538721765,0),(0.675993720675631,0.736907381973554,0),(0.736907381973554,-0.675993720675631,0),(0,0,-1))"

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Необычная UCS
« Ответ #14 : 10-11-2018, 20:13:49 »
_UCS _View
А эта команда в интерфейсе есть?