- Был неправ, прошу простить
засранца. И насчет координатных систем приврал и насчет интересности тоже. - Есть свежая информация о том, как определяются дуги в 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 |
Комментариев нет:
Отправить комментарий