Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2011-05-21

WCS2UCS

Любопытно, сколько я еще буду мудохаться с этим Автокадом? Сижу и с задумчивым видом потираю очередную шишку от очередных грабелек.

В Автокаде работать приходится, в основном, с двумя системами координат — WCS и UCS. Что переводится как Мировая Координатная Система и Пользовательская Координатная Система. Да почему нет, удобно же. А вот что неудобно:

WCS
World coordinate system: The reference coordinate system. All other coordinate systems are defined relative to the WCS, which never changes. Values measured relative to the WCS are stable across changes to other coordinate systems. All points passed in and out of ActiveX methods and properties are expressed in the WCS unless otherwise specified.

UCS
User coordinate system (UCS): The working coordinate system. The user specifies a UCS to make drawing tasks easier. All points passed to AutoCAD commands, including those returned from AutoLISP routines and external functions, are points in the current UCS (unless the user precedes them with an * at the Command prompt). If you want your application to send coordinates in the WCS, OCS, or DCS to AutoCAD commands, you must first convert them to the UCS by calling the TranslateCoordinates method.

exchange.autodesk.com/autocadarchitecture

То есть, при работе через COM-интерфейсы мы получаем мировые координаты. А при работе с Автолиспом мы должны указывать пользовательские координаты. Очень удобно, да. Пыщь-пыщь в очЪко того урода, кто это придумал.
Прикольно выглядит упоминание «unless otherwise specified». Я пока не нашел способа заспецифаить этот азервайс. В документации глухо на эту тему. Зато подробно расписано. как в командной строке через звездочку указать мировые вместо пользовательских. Правда в Автолиспе это не работает :(

Ладно, это можно пережить, благо в Автолиспе есть функция trans, переводящая координаты туда-сюда. И ее подобие вроде как доступно через COM-интерфейс. С пивом пойдет. Можно еще матрицу (getUCSmatrix) преобразований вынуть из UCS, для особо привередливых.

Шишку я получил не этим. Шишка выросла после того, как я убедился, что вынутые через COM-интерфейс координаты невозможно перевести в UCS через прекрасную функцию trans. Да вообще никак. Мешает знак «-» (минус). Во всем массиве точек чертежа есть около 10% точек, Х-координата которых определяется как отрицательная, хотя этого не может быть, потому как не может быть никогда. Весь чертеж лежит в положительном квадранте коордсистемы. Можно к этому добавить еще то, что в пользовательской системе координат оси Х и У поменялись местами. Так веселее.

И вот теперь я думаю, как автомат может грамотно определить где «-» по делу, а где «-» по ошибке.
Потирая шишку на лбу.

И сколько я еще буду мудохаться с Автокадом?


Немного полезных сцылок:
dailyautocad.com/2009/01/understanding-coordinate-input-in
cadalyst.com/cad/autocad/import-3d-points-excel-autolisp-solutions
dailyautocad.com/2009/11/starting-drawing-in-autocad-1-model
swe-eng.com/AutoLisp
upfrontezine.com/tailor

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)