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

2011-06-02

Arc

Был неправ, прошу простить засранца. И насчет координатных систем приврал и насчет интересности тоже.
Есть свежая информация о том, как определяются дуги в Autodesk AutoCAD. И эта информация интересна, хотя и печальна.

Пользуясь своими же выводами (как оказалось, неверными) пытался воспроизвести дуги (ARC), ранее вынутые из Автокада. Для одного файла процедура отработала успешно, для другого дуги нарисовались впуклостью в другую сторону. Тут я опускаю очень много нецензурщины, изреченной мною в сторону Автокада, Автодеска и особенно API АктивноИксового.

Короче, только путем анализа куска файла DXF я смог узнать в деталях, что дуга определяется как кусок окружности, вырезанный из нее двумя радиусами с заданными углами. От стартового угла против часовой стрелки (по возрастанию значения угла) до конечного угла. Центр, радиус и углы хранятся (задаются?) через жопу в OCS! А выводятся (через API ActiveX) в WCS, но только координаты точек, углы никак не переводятся, так и выдаются OCS-ными! Причем, если вместо углов попросить стартовую и стоповые точки (лежащие на дуге), Автокад их координаты выдаст правильно, но может перепутать стоп и старт. Ибо углы у него учтены в OCS.

Теперь надо придумать, как выразить дугу без углов, одними точками, предварительно переведя их в OCS. И потом уже полученный список точек можно перевести обратно в WCS и сохранить.

Надо было на AutoLISP писать, уже бы закончил.

Упоминаемый кусок DXF (я добавил в скобочках расшифровку кодов), если кого прикалывает:
0 (Text string indicating the entity type (fixed))
ARC
  5 (Entity handle; text string of up to 16 hexadecimal digits (fixed))
8C9A
330 (Soft-pointer handle; arbitrary soft pointers to other objects within same DXF file or drawing.
 Translated during INSERT and XREF operations)
1F
100 (Subclass data marker (with derived class name as a string).
 Required for all objects and entity classes that are derived from another concrete class.
 The subclass data marker segregates data defined by different classes in the inheritance chain
 for the same object.
 This is in addition to the requirement for DXF names for each distinct concrete class derived
 from ObjectARX (see "Subclass Markers"))
AcDbEntity
  8 (Layer name (fixed))
0
100
AcDbCircle
 10 (Primary point; this is the start point of a line or text entity, center of a circle, and so on
 DXF: X value of the primary point (followed by Y and Z value codes 20 and 30)
 APP: 3D point (list of three reals))
-2083.621170452556
 20
1840.652320923426
 30
0.0
 40 (Floating-point values (text height, scale factors, and so on))
9.45475941920373
210 (Extrusion direction (fixed)
 DXF: X value of extrusion direction
 APP: 3D extrusion direction vector)
0.0
220 (DXF: Y and Z values of the extrusion direction)
0.0
230
-1.0
100
AcDbArc
 50 (Angles (output in degrees to DXF files and radians through AutoLISP and ObjectARX applications))
168.1934456428115
 51
271.6914156120172

autodesk.com/techpubs/autocad/acad2000/dxf/group_codes_in_numerical_order

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

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

Архив блога

Ярлыки

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)