Перейти к содержимому


command "_UCS"

lisp

Сообщений в теме: 8

#1 sandymen

    Посетитель

  • Пользователи
  • PipPip
  • 27 сообщений
  • Пол:Мужчина

Отправлено 10 Январь 2014 - 11:16

Что-то не пойму, usc (пск) нормально вроде работает если использовать вручную. Но как только используешь вызов этой команды из lisp функции, то чепуха получается. Вот в такой строке (command "_UCS" <начало пск> <точка по оси X> "") после ввода второй точки имеем поворот по оси Z.

Глюк?
Если больше ничего не помогает - прочти инструкцию.

#2 sandymen

    Посетитель

  • Пользователи
  • PipPip
  • 27 сообщений
  • Пол:Мужчина

Отправлено 10 Январь 2014 - 13:49

Видимо не совсем точно выразился. Если у второй точки та же координа по Y (например, первая 5,10, а вторая 30,10), то поворота ПСК быть не должно. Но он есть. После танцев с бубном выяснилось, что угол поворота соответствует углу прямой между 0,0 и X2,Y2. Т.е. начало новой ПСК задается X1,Y1, но расчитывается как от 0,0. В общем, сработал следующий код:

(command "_UCS" cp (list (- (car dir) (car cp)) (- (cadr dir) (cadr cp))) "")

, где cp и dir первая и вторая точки соответственно. Т.е. получаем примерно следующее, "_UCS" <X1,Y1> <X2-X1, Y2-Y1> "".

Похоже проблема решена. Но глюк обработчика lisp'а править надо.
Если больше ничего не помогает - прочти инструкцию.

#3 ISL

    Клуб разработчиков

  • nanoSoft
  • PipPipPipPip
  • 364 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:Разработка САПР

Отправлено 16 Январь 2014 - 14:41

Не можем повторить различное поведение при вызове команды UCS вручную и из LISP.

(command "_UCS" '(5 10) '(30 10) "")

и

_UCS
5,10
30,10


приводят к одному и тому же результату, что в nanoCAD, что в AutoCAD.

Уточните, пожалуйста.
Пишешь приложения под САПР на С++, .NET, COM, Lisp? Вступай в Клуб разработчиков nanoCAD.

#4 sandymen

    Посетитель

  • Пользователи
  • PipPip
  • 27 сообщений
  • Пол:Мужчина

Отправлено 16 Январь 2014 - 18:34

Дело темное. Сразу хочу поправиться, что под ручным вводом я подразумевал ручное использование мышки. Действительно, при вводе координат с клавиатуры, результат схож в nano и Auto CAD'ах. Но малость различен если тыкать мышкой. Как бы то ни было, в AutoCAD 2006 в лиспе я использую следующий код:
(command "_UCS" "3" cp dir "");Задание ПСК по 3-м точкам: началу отсчета, точке на положительном направлении оси Х и аналогичной точке на оси Y
;Некие действия
(command "_UCS" "_p");Возврат к предыдущей (previous) ПСК
В nanoCAD:
(command "_UCS" cp (list (- (car dir) (car cp)) (- (cadr dir) (cadr cp))) "")
;Некие действия
(command "_UCS" "мир");Восстановить сист.коо-т
Никак сообразить не могу, но результат идентичен.
Если больше ничего не помогает - прочти инструкцию.

#5 ISL

    Клуб разработчиков

  • nanoSoft
  • PipPipPipPip
  • 364 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:Разработка САПР

Отправлено 16 Январь 2014 - 18:43

Похоже, дело в ключевом слове "3".

"_UCS" "3" "5,10" "30,10" и "_UCS" "5,10" "30,10" в AutoCAD дают разные результаты.
Пишешь приложения под САПР на С++, .NET, COM, Lisp? Вступай в Клуб разработчиков nanoCAD.

#6 sandymen

    Посетитель

  • Пользователи
  • PipPip
  • 27 сообщений
  • Пол:Мужчина

Отправлено 16 Январь 2014 - 19:22

Просмотр сообщенияISL (16 Январь 2014 - 18:43) писал:

"_UCS" "5,10" "30,10"
Не могу повторить. Автокад 2006 требует ввода типа ПСК (новая , предыдущая, ортогональная и т.д.), например тройку. А уж потом коо-ты. Быть может мы пользуем разные версии Автокада? Консольный ввод вполне мог измениться. Начиная с Автокад 10 периодически редактировал лисп функции.
Если больше ничего не помогает - прочти инструкцию.

#7 ISL

    Клуб разработчиков

  • nanoSoft
  • PipPipPipPip
  • 364 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:Разработка САПР

Отправлено 16 Январь 2014 - 19:45

У меня нет возможности проверить на AutoCAD 2006, в AutoCAD 2012 и в nanoCAD работает одинаково.
Пишешь приложения под САПР на С++, .NET, COM, Lisp? Вступай в Клуб разработчиков nanoCAD.

#8 sandymen

    Посетитель

  • Пользователи
  • PipPip
  • 27 сообщений
  • Пол:Мужчина

Отправлено 17 Январь 2014 - 03:32

Раз уж дело в версиях, то тема закрыта. Задачу 138 в Клубе разработчиков повторно убить.
Если больше ничего не помогает - прочти инструкцию.

#9 ISL

    Клуб разработчиков

  • nanoSoft
  • PipPipPipPip
  • 364 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:Разработка САПР

Отправлено 17 Январь 2014 - 13:17

Зачем же убивать? Закрыл со статусом "Отклонено".
Пишешь приложения под САПР на С++, .NET, COM, Lisp? Вступай в Клуб разработчиков nanoCAD.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей