Непонятка с системами координат - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Непонятка с системами координат

Непонятка с системами координат

Ответ
Поиск в этой теме
Непрочитано 14.10.2005, 12:33
Непонятка с системами координат
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 627

Всем привет!

Братцы, помогите распутаться... :-)

Уже не первый такой чертеж попадается, но не могу
понять, где собака порылась :-(

(trans '(0 0) 2 3) возвращает в нем (161.05 202.603 0.0)

да и зрительно видно, что есть какая-то дополнительная
сетка с началом координат примерно в этом нижнем-левом
углу. Что это за система координат такая включается и
как привести ее к МСК?
__________________
Счастливо, Алексей!
Просмотров: 10294
 
Непрочитано 09.12.2005, 11:29
#21
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Да, главное забыл! А в пространстве листа видовой экран один или несколько? Если один, то все просто.
Лентяй вне форума  
 
Автор темы   Непрочитано 09.12.2005, 12:08
#22
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


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

За функцию спасибо, правда, еще не смотрел, но "\nSelect Point: "
меня уже слегка пугает :-)))
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 09.12.2005, 12:27
#23
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Цитата:
Пока, к счастью, один
Ваше счастье :twisted: :!:
Держите тогда функцию. Возвращает список координат в пространстве листа точек, нажодяшихся в пространстве модели.
Код:
[Выделить все]
(defun Mpt2Ppt (pt1 pt2 / msp vp cp ln)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        util (vla-get-utility adoc)
        msp (vla-get-ModelSpace adoc)
        ms (vla-get-mspace adoc))
  (if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-get-property (list adoc "ActivePViewport")))
    (vla-put-activespace adoc 0))
  (vla-put-mspace adoc :vlax-true)
  (setq vp (vla-get-ActivePViewport adoc)
        cp (vlax-3d-point (cdr (assoc 12 (entget (vlax-vla-object->ename vp))))))
  (vla-put-mspace adoc ms)
  (mapcar '(lambda (x) (setq ln (vla-addLine msp cp x)
                             pt (polar (vlax-get vp 'Center) (vla-get-angle ln)
                                  (* (vla-get-length ln) (vla-get-customscale vp))))
             (vla-delete ln) pt);lambda
    (mapcar 'vlax-3d-point (list pt1 pt2)))
);end
Пользуйтесь, и не забывайте денно и нощно сугубо и трегубо благодарить меня за то, что я есть.
Лентяй вне форума  
 
Автор темы   Непрочитано 09.12.2005, 12:28
#24
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


Попробовал функцию. Увы, она вернула ровно то же самое,
что и обычная (trans точка 2 3).

Вывод: функция (trans) работает верно, глюки надо искать
в самом чертеже.

А вот здесь, боюсь, только спецы из АутоДеск помочь смогут... :-(((
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Автор темы   Непрочитано 09.12.2005, 12:33
#25
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


Писал про предыдущую функцию. Но и "новая", увы, тоже самое...
Вы пробовали запускать ее именно в sit1.dwg ?

В любом случае - искренняя Вам моя благодарность за отзывчивость
и потраченное время.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 09.12.2005, 12:47
#26
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Цитата:
Попробовал функцию. Увы, она вернула ровно то же самое,
что и обычная (trans точка 2 3).
Натюрлих, ибо моя прога просто шаг за шагом производит то, что описывается (trans).
Цитата:
Вы пробовали запускать ее именно в sit1.dwg ?
Нет, я пользовался "нормальным" чертежом.
Кстати, ниже - небольшая доработка. Теперь функция запускается из любого пространства.
Код:
[Выделить все]
(defun Mpt2Ppt (pt1 pt2 / msp vp cp ln)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        util (vla-get-utility adoc)
        msp (vla-get-ModelSpace adoc)
        asp (vla-get-ActiveSpace adoc))
  (if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-get-property (list adoc "ActivePViewport")))
    (vla-put-activespace adoc 0))
  (setq ms (vla-get-mspace adoc))
  (vla-put-mspace adoc :vlax-true)
  (setq vp (vla-get-ActivePViewport adoc)
        cp (vlax-3d-point (cdr (assoc 12 (entget (vlax-vla-object->ename vp))))))
  (vla-put-mspace adoc ms) (vla-put-ActiveSpace adoc asp)
  (mapcar '(lambda (x) (setq ln (vla-addLine msp cp x)
                             pt (polar (vlax-get vp 'Center) (vla-get-angle ln)
                                  (* (vla-get-length ln) (vla-get-customscale vp))))
             (vla-delete ln) pt);lambda
    (mapcar 'vlax-3d-point (list pt1 pt2)))
);end
Лентяй вне форума  
 
Автор темы   Непрочитано 09.12.2005, 13:02
#27
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


Кажется, я понял, где собака порылась!!!

Если посмотреть список видового экрана в файле sit1.dwg,
то там присутствует группа (17 158.311 201.689 18.8905)
Интересно, что это? Очень похоже, что именно это смещение
добавляется к результату, возвращаемому (trans).

Для сравнения, в "нормальном" рисунке эта группа выглядит
(17 0.0 0.0 0.0) !

Кто знает, что это такое?
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 09.12.2005, 13:12
#28
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


View target point (in WCS)
Справка по DXF Reference
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.12.2005, 13:13
#29
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Цитата:
Интересно, что это? Очень похоже, что именно это смещение
добавляется к результату, возвращаемому (trans).
В Help'е читаем: "17 - View target point (in WCS). DXF: X value; APP: 3D vector". Теперь проверь, совпадает ли значение группы со смещением, умноженным на масштаб видового экрана.
Лентяй вне форума  
 
Автор темы   Непрочитано 09.12.2005, 16:14
#30
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


А масштаб видового экрана в какой группе живет?
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 09.12.2005, 16:26
#31
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 428


DXF Reference :
"The ZOOM XP factor is calculated with the following formula:
group_41 / group_45 (or pspace_height / mspace_height)"
ытя вне форума  
 
Автор темы   Непрочитано 09.12.2005, 16:39
#32
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


Осталось только _точную_ формулу составить. :-)

Ведь, черт возьми, по Х уже получилось один раз,
но не записал, что на что делил/умножал, теперь
сижу, по новой вывожу :-)
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 09.12.2005, 16:54
#33
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 428


Интересно, что получится, если попробовать "неправильному" viewport-у заменить 17 группу на (17 0 0 0) ?
ытя вне форума  
 
Автор темы   Непрочитано 09.12.2005, 17:08
#34
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


Уже попробовал. По крайней мере через (entmod) не заменяется.

Да это, пожалуй, уже и не важно, т.к. формулу соотношения вывел,
по крайней мере с точностью до третьего знака после запятой.
Наверное, на этом и остановлюсь.

Есть у меня еще одна заморочка подобного плана (про настройки
принтеров), которую тоже пока победить не удается. Но писать о
ней пока не буду - сам попробую сперва разобраться. :-)

Всем спасибо за участие!
__________________
Счастливо, Алексей!
===AAA=== вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Непонятка с системами координат