dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как найти угол поворота блока, вставленного в ПСК, отличной от мировой

Как найти угол поворота блока, вставленного в ПСК, отличной от мировой

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 25.03.2015, 17:42 #1
Как найти угол поворота блока, вставленного в ПСК, отличной от мировой
480725
 
Москва
Регистрация: 06.10.2007
Сообщений: 132

480725 вне форума Вставить имя

Случайно обнаружил, что код 50 списка примитива блок, вставленного в произвольной ПСК не соответствует углу поворота блока, заданному при вставке. Если ПСК получена поворотом МСК - то угол соответствует повороту блока в МСК, в более сложных случаях никакой логики не видно. Например вставка блока в ПСК заданной тремя точками 0,0,0 1,1.1 и -1,1,0 с углом поворота 0 при чтении примитива дает угол поворота 1.5708 (90 градусов). Т.е. понять под каким углом вставлялся блок не получается. Кто нибудь ЗНАЕТ решение?
Просмотров: 6227
 
Непрочитано 25.03.2015, 17:44
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 35,962


По-моему, координаты точки вставки и угол поворота блока задаются в системе координат объекта.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 25.03.2015, 18:32
#3
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Повторюсь, вставка блока в ПСК заданной тремя точками 0,0,0 1,1.1 и -1,1,0 с углом поворота 0 (в этой ПСК) при чтении примитива дает угол поворота 1.5708 (90 градусов а не 0). Это не трудно проверить!
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 25.03.2015, 18:55
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,705
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для VVA с помощью Skype™


проверяй еще 210 поле (Extrusion direction)
About trans and OCS in 3D
Point transformation from Block OCS to WCS
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 25.03.2015, 19:24
#5
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от VVA Посмотреть сообщение
проверяй еще 210 поле (Extrusion direction)
About trans and OCS in 3D
Point transformation from Block OCS to WCS
Я спрашиваю как узнать под каким углом был вставлен блок.. Может быть вы на что-то намекаете.. Если так - я не понял. В приведенном выше примере этот код (210 -0.408248 -0.408248 0.816497). Полный список примитива ((-1 . <Имя объекта: 7eed6900>) (0 . "INSERT") (330 . <Имя объекта: 7eed4cf8>) (5 . "290") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (2 . "22") (10 -60.9619 1641.63 -1135.54) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 1.5708) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 -0.408248 -0.408248 .816497))
Вы можете объяснить как из этих данных получить угол поворота блока равный нулю?
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 25.03.2015, 20:15
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 35,962


480725, файл со своим блоком предоставь - это будет проще всего.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 25.03.2015, 22:58
#7
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
480725, файл со своим блоком предоставь - это будет проще всего.
Пожалуйста. Автокад 2012.
Вложения
Тип файла: dwg
DWG 2010
Чертеж1.dwg (73.6 Кб, 1608 просмотров)
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 26.03.2015, 02:49
#8
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,410
Отправить сообщение для zamtmn с помощью ICQ


>>в более сложных случаях никакой логики не видно
А какаая нужна логика? Блок вставлен "трехмерно" - (210 -0.408248 -0.408248 .816497), само понятие угла поворота уже совсемо не то что вы от него ждете))
Логика примерно такая - из нормали (210) восстанавливаются оси системы координат блока (читаем Arbitrary Axis Algorithm в DXF Reference), затем эта система координат поворачивается вокруг нормали на угол заданный в (50) и имеем что имеем)). Хотите знать под каким углом блок вставлялся в какойто пск - пересчитывайте эти значения в ту пск
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 26.03.2015, 13:11
#9
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от zamtmn Посмотреть сообщение
>>в более сложных случаях никакой логики не видно
Логика примерно такая - из нормали (210) восстанавливаются оси системы координат блока (читаем Arbitrary Axis Algorithm в DXF Reference), затем эта система координат поворачивается вокруг нормали на угол заданный в (50) и имеем что имеем)). Хотите знать под каким углом блок вставлялся в какойто пск - пересчитывайте эти значения в ту пск
КАК? Ну не знаю я английского...
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 26.03.2015, 21:05
#10
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,410
Отправить сообщение для zamtmn с помощью ICQ


Что конкретно как? тут не английский надо понимать, а геометрию
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.03.2015, 00:32
#11
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Что конкретно как? тут не английский надо понимать, а геометрию
Как по списку примитива INSERT понять, под каким углом он был вставлен в ПСК отличной от мировой (см. заголовок).
Ну уж геометрию Вы наверняка понимаете! Выкладывайте, не томите!

Последний раз редактировалось 480725, 27.03.2015 в 13:04.
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.03.2015, 13:29
#12
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,645
Отправить сообщение для Do$ с помощью Skype™


Сами-то хоть понимаете чего хотите? В чертеже система координат WSC. Относительно какой USC Вы хотите поворот блока искать? DCS что ли?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.03.2015, 14:37
#13
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от Do$ Посмотреть сообщение
Сами-то хоть понимаете чего хотите? В чертеже система координат WSC. Относительно какой USC Вы хотите поворот блока искать? DCS что ли?
Спасибо... Понимаю...
Относительно той, в которой вставлял. Собственно и ожидал что код 50 будет именно для нее. Оказывается - нет.
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.03.2015, 18:12
#14
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,645
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от 480725 Посмотреть сообщение
Спасибо... Понимаю...
Покажите этот угол угловым размером на чертеже. А то, честно говоря, даже представить не могу, какой Вы ищете 2D угол поворота плоского блока, развернутого в 3D системе координат.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.03.2015, 20:45
#15
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от Do$ Посмотреть сообщение
Покажите этот угол угловым размером на чертеже. А то, честно говоря, даже представить не могу, какой Вы ищете 2D угол поворота плоского блока, развернутого в 3D системе координат.
Он идет в плоскости прямоугольника вдоль длинной стороны. Так как угол равен нулю показать его угловым размером невозможно. В принципе, я случайно вспомнил, что когда-то читал про углы поворота таких блоков в документации по 10-му Автокаду. Еще ДОСовскому... Посмотрел. Надо перейти в ОСК этого блока и отрезок построенный под углом 0 даст направление угла поворота блока (каким бы он не был задан, это случайно, что у меня тоже был 0, просто ось X ОСК развернута параллельно развороту блока). Если преобразовать координаты отрезка в ПСК в которой вставляли блок - получим угол поворота при вставке. Т.е. проблема исчерпана, за исключением умозрительного теперь вопроса про код 50 и его непонятное значение... Во всяком случае данное решение очевиднее и проще, чем написано в Arbitrary Axis Algorithm, указанной уважаемым знатоком геометрии zamtmn, который сейчас, надеюсь, уже завершает перевод.
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.03.2015, 01:20
#16
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,410
Отправить сообщение для zamtmn с помощью ICQ


480725
>>В принципе, я случайно вспомнил, что когда-то читал
Я вспомнил неслучайно и посоветовал вам где что можно почитать прямо сейчас

>>Посмотрел. Надо перейти в ОСК этого блока и отрезок построенный под углом 0 даст направление угла поворота блока
>>(каким бы он не был задан, это случайно, что у меня тоже был 0, просто ось X ОСК развернута параллельно развороту блока).
>>Если преобразовать координаты отрезка в ПСК в которой вставляли блок - получим угол поворота при вставке.
>>Т.е. проблема исчерпана, за исключением умозрительного теперь вопроса про код 50 и его непонятное значение...
Имхо вы либо не понимаете что вам надо, либо не получается объяснить. а может и то и другое.

>>Во всяком случае данное решение очевиднее и проще, чем написано в Arbitrary Axis Algorithm, указанной уважаемым
>>знатоком геометрии zamtmn, который сейчас, надеюсь, уже завершает перевод
Зря иронизируете - ветка называется Программирование - тут не принято чертить, гораздо уместней понимать как посчитать. Arbitrary Axis таки почитайте, иначе в 3Д случаях вас будут ожидать еще большие "открытия"
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.03.2015, 11:47
1 | #17
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,645
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Имхо вы либо не понимаете что вам надо, либо не получается объяснить. а может и то и другое.
У меня такое же сложилось впечатление.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 28.03.2015, 13:05
#18
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от Do$ Посмотреть сообщение
У меня такое же сложилось впечатление.
При чтении данных блока, вставленного в ПСК, отличной от мировой, код 50 в списке примитива этого блока дает значение не соответствующее углу поворота блока в ПСК. Это то что осталось от первоначального вопроса. А сам вопрос - как найти угол поворота блока решен без привлечения этого (50) кода. Не знаю, что тут непонятно.

----- добавлено через ~16 мин. -----
Цитата:
Сообщение от zamtmn Посмотреть сообщение
480725
Зря иронизируете - ветка называется Программирование - тут не принято чертить, гораздо уместней понимать как посчитать. Arbitrary Axis таки почитайте, иначе в 3Д случаях вас будут ожидать еще большие "открытия"
Я почитал. Выражение If (abs (Nx) < 1/64) and (abs (Ny)< 1/64) then... очень не понравилось... М.б. это полезный материал, но в данном случае он мне просто не потребовался, т.к. альтернатавный способ проще и, будучи предложен самим Autodesk, несомненно надежен.
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.03.2015, 13:51
1 | #19
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,410
Отправить сообщение для zamtmn с помощью ICQ


>>Выражение If (abs (Nx) < 1/64) and (abs (Ny)< 1/64) then... очень не понравилось...
Чем если не секрет?

>>Посмотрел. Надо перейти в ОСК этого блока и отрезок построенный под углом 0 даст направление угла поворота блока
>>(каким бы он не был задан, это случайно, что у меня тоже был 0
Я незнаю что вы делаете и на чем, но Надо перейти в ОСК этого блока какбы подразумевает то что я описал в #8 - т.е. получение базисных векторов системы координат блока из нормали и поворота. Жаль что "способ" с "дополнительными построениями" кажется вам более простым и надежным чем несколько математических действий
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 28.03.2015, 16:25
#20
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от zamtmn Посмотреть сообщение
>>Выражение If (abs (Nx) < 1/64) and (abs (Ny)< 1/64) then... очень не понравилось...
Чем если не секрет?

Жаль что "способ" с "дополнительными построениями" кажется вам более простым и надежным чем несколько математических действий
Не нравится тем что нет никакого объяснения, почему именно 1/64 а не 1/65 и т.д., потому, что есть идиотская вероятность ошибки в самых младших разрядах действительного числа и в случае равенства получим меньше, а также тем, что это не прямое указание Autodesk. То, что я предпочел и пересказал - написано в документации Автодеска идущей в комлекте с Автокадом.

Я не говорил о дополнительных построениях. Я просто неудачно выразился имелся в виду не отрезок в смысле примитива Автокада а пару точек, для того чтобы перевычислить угол в ПСК, в которой создавался блок, т.к. она не совпадает с ОСК. Переход в ОСК произвольного объекта делает команда АВТОКАДА.

Последний раз редактировалось 480725, 28.03.2015 в 20:55.
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как найти угол поворота блока, вставленного в ПСК, отличной от мировой

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Угол поворота атрибута в составе блока rzinnurov AutoCAD 15 18.10.2017 08:08
Проблема с базовой точкой блока и вхождением блока в DXF nogaems Программирование 5 29.08.2013 15:46
Как найти имя предка анонимного блока. Kirill_Ja Программирование 4 16.04.2013 17:33
lisp из autocad 2004 некорректно выполняется в autocad 2008 sid_geo LISP 13 11.10.2012 11:20
VBA. 3D. Ориентация блоков (примитивов) в пространстве? Как определить угол поворота? shumilovvv Программирование 2 15.05.2009 12:18

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||