Как перенести world UCS в определенную точку?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как перенести world UCS в определенную точку?

Как перенести world UCS в определенную точку?

Ответ
Поиск в этой теме
Непрочитано 18.01.2006, 14:33 #1
Как перенести world UCS в определенную точку?
X-DeViL
 
Бизнес-шмизнес
 
Питер
Регистрация: 26.05.2004
Сообщений: 1,911

Сабж...
Просмотров: 6636
 
Непрочитано 18.01.2006, 14:37
#2
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


_ucs o (origin)
Хмурый вне форума  
 
Непрочитано 18.01.2006, 14:45
#3
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


В этом сообщении ничего нет
Хмурый вне форума  
 
Непрочитано 18.01.2006, 15:06
#4
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,760
Отправить сообщение для Огурец с помощью Skype™


Уважаемый X-DeViL!
Вопросик, конечно, на засыпку. Если переносить UCS, то новая система координат уже не будет World 8). А необходимость бывает. Я тогда предпочитаю всю модель переносить куда надо, чтобы наиудобнейшей системой была вышеупомянутая World UCS.
Кастати, а зачем Вам это? Я обычно так пристраиваюсь, чтобы памятливее с клавиатуры точку вставки набирать: 0,0,0 и всегда было легко вернуться к данному месту.
Огурец вне форума  
 
Непрочитано 18.01.2006, 15:23
#5
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Мировая система координат никогда и никуда не переносится!

Для того "World" и сделана, чтобы была постоянная, неизменяемая точка отсчета. Внутри AutoCAD, в его кишочках, все обрабатывается в WCS.

Переносить, если надо, нужно объекты по отношению к WCS. И можно создавать много пользовательских систем координат.
ShaggyDoc вне форума  
 
Непрочитано 18.01.2006, 22:52
#6
Михаил055

Конструктор
 
Регистрация: 16.01.2006
Москва
Сообщений: 68


Для ручной работы достаточно UCS. Но иногда используются LISP-программы, которые при указании точек или примитивов считывают информацию в WCS. Я для такого случая дописал процедурку перевода координат и подкатывал ее при каждом съеме данных с примитивов.
Михаил055 вне форума  
 
Непрочитано 19.01.2006, 06:34
#7
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Михаил055
Для ручной работы достаточно UCS. Но иногда используются LISP-программы, которые при указании точек или примитивов считывают информацию в WCS. Я для такого случая дописал процедурку перевода координат и подкатывал ее при каждом съеме данных с примитивов.
Да, при ручном вводе координат в штатных командах (хоть мышкой, хоть с клавиатуры) координаты всегда принимаются в текущей UCS, но внутри Автокада, в графической базе данных, преобразуются в WCS и так хранятся.

При написании LISP-программ всегда надо учитывать, что все координаты, получаемые через DXF-коды или из vla-объектов имеют координаты в WCS, независимо от того, что в данный момент может быть установлена UCS. А функции типа getpoint (и другие getxxx, использующие и / или возвращающие координаты) принимают и возвращают координаты в UCS.

Если примитивы создаются функциями command и vl-cmdf, то им должны передаваться координаты в UCS. А для создания и модификации примитивов через entxxx и vla-объекты - в WCS.

Программисты об этом часто или не знают, или забывают. В результате программа, прекрасно работающая в WCS, может давать странные результаты в UCS. Если столкнетесь с этим, то знайте - автор забыл про необходимость применения trans.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 19.01.2006, 12:03
#8
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


ShaggyDoc

Хорошо! Вопрос! А как перенести ВСЕ объекты включая те которые на замороженных слоях в WCS? конечно же какую то базовую точку в WCS перенести!
X-DeViL вне форума  
 
Непрочитано 19.01.2006, 13:18
#9
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от ShaggyDoc
...При написании LISP-программ всегда надо учитывать, что все координаты, получаемые через DXF-коды или из vla-объектов имеют координаты в WCS... Если примитивы создаются функциями command и vl-cmdf, то им должны передаваться координаты в UCS. А для создания и модификации примитивов через entxxx и vla-объекты - в WCS.
Небольшое уточнение. Для ряда примитивов (например, CIRCLE, LWPOLYLINE, HATCH и т.д.) DXF-коды содержат координаты в ECS (т.е. Entity Coordinat System - Система Координат Примитива - ее еще иногда называют OCS - Система координат объекта), которая совпадает с WCS только если вектор нормали (группа 210) равен (0 0 1) - т.е. совпадает с осью Z у WCS.
Александр Ривилис вне форума  
 
Непрочитано 19.01.2006, 14:40
#10
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от X-DeViL
ShaggyDoc

Хорошо! Вопрос! А как перенести ВСЕ объекты включая те которые на замороженных слоях в WCS? конечно же какую то базовую точку в WCS перенести!
Да не надо объекты переносить в WCS! Так же, как и в любую другую систему координат. Перенос производится не из системы координат в другую систему, а изменяются координаты объекта в текущей системе. Ухватившись за базовую точку, и передвинув, например, блок, мы меняем координаты точки вставки, но не саму систему координат. Начало UCS можно перенести, или создать новую. Все равно внутри Автокада координаты будут храниться в мировой системе, с учетом правильного уточнения Александра Ривилиса
Цитата:
Небольшое уточнение. Для ряда примитивов (например, CIRCLE, LWPOLYLINE, HATCH и т.д.) DXF-коды содержат координаты в ECS (т.е. Entity Coordinat System - Система Координат Примитива - ее еще иногда называют OCS - Система координат объекта), которая совпадает с WCS только если вектор нормали (группа 210) равен (0 0 1) - т.е. совпадает с осью Z у WCS.
Я про ECS и OCS не упоминал, просто чтобы еще больше не запутать вопрос терминологией.

В частном случае можно включить WCS, сцапать кого угодно, указать базовую точку и перенести эту точку в 0,0,0 то есть в начало WCS. Но и до переноса, и после координаты все равно были в WCS, только они были разные. Может быть это имеется ввиду под "перенести в WCS"?
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 19.01.2006, 15:10
#11
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


ShaggyDoc

Цитата:
Да не надо объекты переносить в WCS!
Уважаемый... не надо говорить что надо, а что не надо делать... я задал вопрос "как?"... если можно - хорошо... если нет - то не проблема...

Цитата:
Перенос производится не из системы координат в другую систему, а изменяются координаты объекта в текущей системе. Ухватившись за базовую точку, и передвинув, например, блок, мы меняем координаты точки вставки, но не саму систему координат.
Може быть в моем последнем посте не понятно я написал... но именно это я и имелл ввиду... так вот как "перенести все объекты" на вектор между точкой вставки и началом WCS???
X-DeViL вне форума  
 
Непрочитано 19.01.2006, 16:37
#12
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,290


А если вставить весь чертеж нужной точкой в другой чертеж в 0,0,0 WCS ?
Pilot вне форума  
 
Непрочитано 19.01.2006, 19:23
#13
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от X-DeViL
Може быть в моем последнем посте не понятно я написал... но именно это я и имелл ввиду... так вот как "перенести все объекты" на вектор между точкой вставки и началом WCS???
Что такое точка вставки? Если это значение переменной INSBASE, то достаточно выполнить MOVE из (getvar "INSBASE") в 0,0,0 в WCS:
Код:
[Выделить все]
Command: _MOVE
Select objects: _all 2 found
Select objects:
Specify base point or [Displacement] <Displacement>: (getvar"insbase")
Specify second point or <use first point as displacement>: (trans '(0 0 0) 0 1)
Ну если слои заморожены/заблокированы, то их следует предварительно разморозить/разблокировать.
Александр Ривилис вне форума  
 
Непрочитано 20.01.2006, 06:33
#14
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Александр Ривилис
Что такое точка вставки? Если это значение переменной INSBASE, то достаточно выполнить MOVE из (getvar "INSBASE") в 0,0,0 в WCS:
Код:
[Выделить все]
Command: _MOVE
Select objects: _all 2 found
Select objects:
Specify base point or [Displacement] <Displacement>: (getvar"insbase")
Specify second point or <use first point as displacement>: (trans '(0 0 0) 0 1)
Ну если слои заморожены/заблокированы, то их следует предварительно разморозить/разблокировать.
Я постеснялся эту азбуку разъяснять гуру X-DeViL. Очень уж смутно вопрос был сформулирован. Требует допроса с пристрастием, чтобы выяснить, чего надоть.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 26.01.2006, 08:55
#15
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


ShaggyDoc

Цитата:
Я постеснялся эту азбуку разъяснять гуру X-DeViL. Очень уж смутно вопрос был сформулирован.
Прально что не стали мы же не ищем легких путей... выделить все и перенести это не наш метод хочется аутоматично ) тыркнул точку на чертеже и эта точка со всеми объектами перенеслась в 0,0,0

Причем если я еще смогу сделать так чтобы они все перенеслись, то "бабушкам" придется очень долго объяснять...
X-DeViL вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как перенести world UCS в определенную точку?