|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Dxf группа 210
Продуман
Питер
Регистрация: 22.02.2007
Сообщений: 2,839
|
||
Просмотров: 5122
|
|
||||
Ну тот же результат быть не может. Для примера возми отрезок (0,0,-10)-(0,0,10) Сделай из него блок. Вставь этот блок и поменяй группу 210 по двум точкам. Блок с отрезком будет сориентирован вдоль отрезка [p1-p2]. Останется установить базовую точку на отрезке. Т.е. группа 210 определяет направление оси Z блока. Если тебе нужно что-то другое - объясни.
Последний раз редактировалось Александр Ривилис, 04.03.2008 в 19:03. |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
В общем так, создаем блок с именем 123 (неважно какой) затем
(entmakex (list (cons 0 "insert") (list 10 100 100 0) (cons 2 "123") (list 210 0.5 0.5 0.5) )) Дале смотри свойства (entget (entlast)): ((-1 . <Имя объекта: 7efa2428>) (0 . "INSERT") (330 . <Имя объекта: 7efa0cf8>) (5 . "1BD") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (2 . "123") (10 100.0 100.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.57735 0.57735 0.57735)) А теперь _propirties: Положение X - -111.5355 Положение Y - 29.8858 Положение Z - 81.6497 Объясните как из одного другое получаеться, а то на нужный угол (3Д) блок никак не наклонить.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
В общем теперь я совсем запутался - мне надо повернуть блок в 3D пространстве, таким образом, чтобы ось х относительно блока лежала на точках p1 p2, но точка вставки при этом не изменилась, повторюсь в 2D это достигается (cons 50 (angle p1 p2)), как подобное для 3D сделать???
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
1.
Точка вставки при создании вхождения блока (DXF код 10) должна указываться в Системе Крдинат Объекта (СКО). Ось Z СКО определяется вектором нормали (код 210), ось X - векторным произведением оси Z МСК на вектор нормали (всегда лежит в плоскости XY МСК), ось Y -ортогонально осям Z и X так, чтобы образовывалась тройка векторов XYZ правого вращения. Если желаемая точка вставки задана в МСК, то получить её значение в СКО можно так: (setq oks_xyz (trans wcs_xyz 0 norm)), где oks_xyz - список из 3х координат точки вставки (код 10), wcs_xyz - список из трех координат желаемой точки всавки в МСК, norm - список из трех чисел, определяющих вектор нормали для будущего примитива INSERT. Вектор нормали должен быть единичной длины! Далее, при формировании списка entmake формируются следующие подсписки: (list ..... (cons 10 oks_xyz) ......(cons 210 norm)...) 2. DXF код 50 позволяет дополнительно повернуть INSERT вокруг точки вставки на требуемый угол. 3. В общем случае, если требуется вставка блока в конкретную точку некоторой произвольно ориентированной ПСК (заданной направлениями осей и точкой начала координат) с требуемым углом поворота относительно направления X этой ПСК, то напавление оси Z этой ПСК необходимо взять в качестве вектора нормали, вычислить для данной ПСК углы Эйлера (нутации, прецессии и чистого вращения), используя угол чистого вращения пересчитать координаты точки вставки блока из ПСК в СКО и прибавить угол чистого вращения к требуемому углу поворота вставки относительно направления X ПСК, чтобы получить угол для точечной пары с кодом 50. |
|||
![]() |
|
||||
Цитата:
Первым делом отделим мух и котлеты. 210 код - содержит вектор нормали плоскости, другими словами, в нем содержится точка, направление на которую из центра координат, будет перпендикулярно плоскости блока. Для внутренней системы координат блока, это будет направление Z. Теперь про угол, который скрывается за кодом 50 - это угол вращения в плоскости. Если все это обобщить, то 210 код и точка вставки, определяют единственно возможную плоскость, а код 50, определяет направление X на этой плоскости... |
||||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Осталось сказать, относительно чего?
относительно точки вставки, вокруг вектора нормали >> суть проблемы - хочу сориентировать блок в 3Д пространстве по 2 3Д точкам (p1 p2) чтобы однозначно сориентировать объект нужно 3 вектора (можно 2, третий вычисляется их векторным произвидением) или 1 но тогда еще нужно хранить угол поворота новой системы координат относительно мировой посмотри в атокадовской справке "DXF Reference/Arbitrary Axis Algorithm" - так расчитываются базисные вектора, + плюс для блоков всё это дело поворачивается на "DXF код 50" |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Всем большое спасибо - решил следующим образом:
(entmakex ...... (append '(10) (trans p1 0 (list (- (car p2) (car p1)) (- (cadr p2) (cadr p1)) (- (caddr p2) (caddr p1)) ))) (list 210 (- (car p2) (car p1)) (- (cadr p2) (cadr p1)) (- (caddr p2) (caddr p1)) )
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Импорт DXF файла в МОНОМАХ | Bublik 22 | Мономах | 30 | 19.01.2017 11:38 |
как открыть DXF файл с новыми типами линий | МихаилМ | AutoCAD | 7 | 20.01.2010 19:28 |
Чем отличается DXF от DWG? | Петич | AutoCAD | 2 | 28.05.2007 22:37 |
пример простейшего dxf файла, содержащего SPLINE | hidjab | Программирование | 2 | 16.02.2007 10:29 |
Пакетный перегон dxf -> dwg возможно ли ? | bdfy | AutoCAD | 4 | 15.11.2006 21:41 |