Jump to content

Мой самый первый скрипт в lisp - почему не работает?


Recommended Posts

Всем добрый день!

Есть у меня проблема: постоянно двигаю объекты и группы на чертеже на 10 мм вверх - вниз - влево - вправо. Ну, или на 5 мм, и так далее. Надоело мне опечатываться при наборе, порылся я в яндексе и понял, что правильный ответ - скрипт на лиспе.

Сваял это:

 

(defun ml
( command "move" "10,0,0" " " " " )
)

 

ml - типа, Move Left. Потом, как это заработает, нашлёпаю сколько надо всяких других Move'ов.

Вроде, ошибиться негде - а nanocad мне постоянно дулю показывает:

 

ошибка: неверный синтаксис DEFUN: (ML (COMMAND "move" "10,0,0" " " " "))

 

Подскажите, пожалуйста, где я неправильный пробел поставил/убрать забыл? Час тычусь, как ёжик в тумане, и куда рыть дальше - совершенно непонятно. В примерах/образцах - простыни текста, а как мне надо, две строчки - никак не могу найти...

На всякий случай - и файл прикладываю:

Link to comment
Share on other sites

В примерах/образцах - простыни текста, а как мне надо, две строчки - никак не могу найти...

Двумя строчками не обойтись.

Т.к. Ваш код перед тем как что то двигать, должен знать( как минимум): что двигать (объект или группа),от какой точки двигать, насколько и куда двигать.

Link to comment
Share on other sites

Мне всё-таки кажется, не должен. Всё, что он должен сделать - вбить вместо меня в командную строку фиксированные буковки. Что двигать - знаю я (пользователь), от какой точки и куда - заложено в команде (текущее выделение, на 10 мм, использовать точку в виде перемещения). Или это делается не в виде лиспного скрипта?

Link to comment
Share on other sites

а в какую сторону то же в команде заложено??? а если орто отключен???

ЗЫ но имхо горе от ума

куда проще вбиь "П" мышкой указать направление и вбить расстояние )))

или под все направления и расстояния будешь лиспы писать??)))

********************

тексты текущим стилем но разным размером

(defun C:Т5 ()
(command "текст" Pause "5" "0")
(princ)
 )					; текст 5
(defun C:Т3 ()
(command "текст" Pause "3.5" "0")
(princ)
 )					; текст 3.5

(defun C:Т2 ()
(command "текст" Pause "2.5" "0")
(princ)
 )					; текст 2.5
 (defun C:Тц ()
(command "текст" "в" "СЦ" Pause "3.5" "0")
(princ)
 )					; текст по центру

под АК работает, наны у меня нет

===

еще для тренировки

 (defun c:СР ()			;Смыкание линий:
(command "_fillet" pause "д" "0")
(princ)
 )
(defun C:3 ()
 (command "draworder" "задний")
 (princ)
)					;на задний план

(defun C:33 ()
 (command "draworder" "передний")
 (princ)
)					;на передний план
(defun C:мрс ()
 (command "spStdSelected" "4BCE1ABDFB27FEE2")
 (princ)
)					;добавление объекта из базы СПДС

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

Может быть, вы будете смеяться, но - да, под все направления я буду писать лиспы :-)

Собсна, моя идея в том и есть.

Сейчас попробую поколупаться с вашими примерами. В любом случае, спасибо за ответ.

Link to comment
Share on other sites

мощно!!!

и под все мыслимые расстояния???

=======================

А собственно в чем идея?? может что поизящнее можно сообразить если немного подумать... слишком уж в лоб получается

Edited by doctorraz
Link to comment
Share on other sites

мощно!!!

и под все мыслимые расстояния???

=======================

А собственно в чем идея?? может что поизящнее можно сообразить если немного подумать... слишком уж в лоб получается

 

Поизящнее тут

http://forum.nanocad.ru/index.php?showtopic=6953&hl=&fromsearch=1

Edited by Robink
Link to comment
Share on other sites

Ладно, повторю другими словами.

Как я писал в первом сообщении, мне постоянно приходится двигать объекты/группы на фиксированные расстояния - 10 мм, 5 мм и так далее. Выбор объектов автоматизировать никак нельзя, по понятным причинам. Но вот объекты выбраны, а дальше - я нажимаю одну и ту же последовательность клавиш:

п (перенести)

Enter

10,0,0 (пока сейчас набирал это, несколько раз опечатался - рус/англ точка в разных местах, "э" вместо Enter'а, и так далее)

Enter

Тут меня просят ввести вторую точку, но я вместо этого нажимаю ещё раз Enter - "использовать первую точку в виде перемещения".

Всё, конец алгоритма.

Теперь я набил простейший файлик, и вместо всего этого набираю с клавиатуры п1 enter, что означает "вправо, на 10". Если надо на пять - набираю п5 энтер. Так же - влево л1/л5, вверх и вниз в1/н1 соответственно.

Десять, две запятые, два нуля и всё прочее вместо меня вбивает лисп. Не знаю, кому как, мне - удобнее.

А снаружи - да, кажется, что "под все направления и расстояния будешь лиспы писать" :-)

В любом случае, явно обозначу благодарность пользователю doctorraz - из его примера я понял, что скобочки забыл поставить, после названия функции. Они нужны, даже если аргументов у функции нет.

Link to comment
Share on other sites

мощно!!!

и под все мыслимые расстояния???

=======================

А собственно в чем идея?? может что поизящнее можно сообразить если немного подумать... слишком уж в лоб получается

 

Поизящнее тут

http://forum.nanocad...l=&fromsearch=1

Допишу на днях перемещение курсорами. Если Вам интересно).

Link to comment
Share on other sites

мощно!!!

и под все мыслимые расстояния???

=======================

А собственно в чем идея?? может что поизящнее можно сообразить если немного подумать... слишком уж в лоб получается

 

Поизящнее тут

http://forum.nanocad...l=&fromsearch=1

Допишу на днях перемещение курсорами. Если Вам интересно).

Дописал.

Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...