(command "_ucs" "_new" "_zaxis
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > (command "_ucs" "_new" "_zaxis

(command "_ucs" "_new" "_zaxis

Ответ
Поиск в этой теме
Непрочитано 26.12.2006, 00:12 #1
(command "_ucs" "_new" "_zaxis
Валенок
 
Проектировщик
 
Москва
Регистрация: 19.10.2006
Сообщений: 37

Здраствуйте !
хочу программно повернуть систему координат.
Пишу :

(command "_line" "0,0" "0,100" "")
(command "_ucs" "_new" "_zaxis" "" "0,-1,0")

так автокад ругаетцца :shock: , а по шагам работает
Никак не войду, в чем проблема ?
Просмотров: 3755
 
Непрочитано 26.12.2006, 06:32
#2
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Попробуй так:
Код:
[Выделить все]
(setq C1 (getvar "Osmode"))
(setvar "Osmode" 0)
(command)
(command "_line" '(0 0) '(0 100) "")
(command "_ucs" "_new" "_zaxis" "" '(0 -1 0))
(setvar "Osmode" C1)
Krieger вне форума  
 
Автор темы   Непрочитано 26.12.2006, 13:24
#3
Валенок

Проектировщик
 
Регистрация: 19.10.2006
Москва
Сообщений: 37


Спасибо Krieger, так работает, (хотя, причем тут привязки) но возникает другой вопрос :

(setq C1 (getvar "Osmode"))
(setvar "Osmode" 0)
(command)

(repeat 4

(command "_line" '(0 0) '(0 100) "")
(command "_ucs" "_new" "_zaxis" '(0 100) '(0 -1 0))

)

(setvar "Osmode" C1)

Казалось бы, в цикле только константы, новая система координат
рисуется относительно текущей. Перенос в точку (0 100) и поворот
по оси X все время в одну сторону . Результат должен быть - квадрат в плоскости YZ. А вот и нифига. Какие-то ступеньки. Почему, не понимаю.
Валенок вне форума  
 
Непрочитано 26.12.2006, 16:35
#4
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Валенок
хотя, причем тут привязки
А ты читай что AutoCAD тебе выдает:
Код:
[Выделить все]
Points are coincident
т.е. совпадающие точки. Первая точка 0,0, а вторая из-за привязок привязывается к началу твоего отрезка т.е. тоже 0,0. Если-б небыло отрезка то было бы нормально все.
Цитата:
Перенос в точку (0 100) и поворот
по оси X все время в одну сторону .
А опция "_zaxis" не поворачивает, а направляет ось z по твоему вектору. Поставь точку останова после (command "_ucs" "_new" "_zaxis" '(0 100) '(0 -1 0)) и посмотри как UCS располагается на каждом этапе.
Если надо поворачивать, лови такой код:
Код:
[Выделить все]
(setq C1 (getvar "Osmode")) 
(setvar "Osmode" 0) 
(command) 
(repeat 4 
(command "_line" '(0 0) '(0 100) "") 
(command "_ucs" "_move" '(0 100))
(command "_ucs" "_x" 90)
) 
(setvar "Osmode" C1)
Цитата:
Результат должен быть - квадрат в плоскости YZ.
Дык тебе квадрат нужен? Можно было и без UCS сделать...
Krieger вне форума  
 
Непрочитано 26.12.2006, 16:51
#5
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(defun quad (/)
  (mapcar '(lambda (x)
             (entmake (list (cons 0 "LINE") (cons 10 (car x)) (cons 11 (cdr x))))
             ) ;_ end of LAMBDA
          (list (cons '(0. 0. 0.) '(0. 100. 0.))
                (cons '(0. 100. 0.) '(0. 100. 100.))
                (cons '(0. 100. 100.) '(0. 0. 100.))
                (cons '(0. 0. 100.) '(0. 0. 0.))
                ) ;_ end of list
          ) ;_ end of mapcar
  ) ;_ end of defun
И второй вариант, полилинией:
Код:
[Выделить все]
(defun quad2 ()
  (entmake (list '(0 . "LWPOLYLINE")
                 '(100 . "AcDbEntity")
                 '(100 . "AcDbPolyline")
                 (cons 90 4)
                 (cons 70 1)
                 (cons 10 '(0. 0.))
                 (cons 10 '(0. 100.))
                 (cons 10 '(100. 100.))
                 (cons 10 '(100. 0.))
                 (cons 210 '(1.0 0.0 0.0))
                 ) ;_ end of list
           ) ;_ end of entmake
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.12.2006, 22:20 Валенок
#6
Валенок

Проектировщик
 
Регистрация: 19.10.2006
Москва
Сообщений: 37


Уважаемые Krieger & kpblc !
Не хотел я засорять форум приписками что, дескать, не надо предлагать другие способы рисования квадратов. Я же не объяснил почему именно ТАК мне надо.
Но все равно большое спасибо.
Щас посмотрю новый крюгеровский вариант, и еще буду спрашивать. Замучаю нафик...

PS Варианты kpblc'а тоже рассмотрю, обещаю , но чуть позже.
Валенок вне форума  
 
Автор темы   Непрочитано 26.12.2006, 23:11 Валенок
#7
Валенок

Проектировщик
 
Регистрация: 19.10.2006
Москва
Сообщений: 37


Крюгеровский вариант работает. Спасибо.
Обнаружил что для моей задачи подходит не "zaxis" а "3point".
У "zaxis" аказца какая-то своя логика направления осей X и Y
Иногда возникает неопределеность.(для меня, темного)
"3point" - все четко и ясно.

-Код:
-Points are coincident

-т.е. совпадающие точки. Первая точка 0,0, а вторая из-за привязок -привязывается к началу твоего отрезка т.е. тоже 0,0. Если-б небыло -отрезка то было бы нормально все.

Все равно не понял. Мой мозжечок усох наверно. Я же абсолютные
координаты задаю.
Валенок вне форума  
 
Непрочитано 27.12.2006, 06:01
#8
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Валенок
Крюгеровский
Вот если б знал что мой ник будут так все читать, другой бы взял. Слово немецкое. Произносится как [крийгер].
Цитата:
Сообщение от Валенок
Все равно не понял. Мой мозжечок усох наверно. Я же абсолютные координаты задаю.
По барабану. Такая вот особенность функции command, она учитывает объектные привязки. И если твоя точка находится близко к характерной точке объекта, туда и привяжется.
Krieger вне форума  
 
Автор темы   Непрочитано 27.12.2006, 10:20
#9
Валенок

Проектировщик
 
Регистрация: 19.10.2006
Москва
Сообщений: 37


Цитата:
Сообщение от Krieger
Вот если б знал что мой ник будут так все читать, другой бы взял. Слово немецкое. Произносится как [крийгер].
Не принимайте близко к сердцу. Не силен в неметском.Подумал что Вы это... того.... родственник Фредди [sm1502] . Был очень польщен.
Хорошо что не тов. kpblс не затронул таким образом. О меня убил бы наверное.

Про барабан.
Спасибо. Теперь ясно. Буду считать эту особенность "..ну нешмогла я, не шмогла.."
Валенок вне форума  
 
Непрочитано 27.12.2006, 10:25
#10
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Валенок
Хорошо что не тов. kpblс не затронул таким образом. О меня убил бы наверное.
С ним как раз проще, он расшифровал ник в своей подписи.
Krieger вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > (command "_ucs" "_new" "_zaxis