|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Автоматизация select Block->explode->purge
Регистрация: 23.11.2005
Сообщений: 2
|
||
Просмотров: 6749
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
> Лентяй : можно вместо
Код:
Код:
Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
> Лентяй : странно, что в ADT нет этой функции. Она же базовая для када, насколько я понимаю. Только что проверил на ADT 2005 Eng и ADT 2006 Eng, работает.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Я не сказал, что ее там нет. Я сказал, чтоя ее не нашел. М.б. плохо искал - все-таки день предпраздничный, все - лениво-пох, непосредственное начальство, опять же, осталось дома индюка жарить, так что никакого рвения ожидать не приходилось, по каковой же причине таковое и не наблюдалось. Вот в понедельник со свежими силами похмелья апосля на службу выйду, тогда и проверю.
|
|||
![]() |
|
||||
Регистрация: 23.11.2005
Сообщений: 2
|
Спасибо за помощь Лентяй. Поскольку я не пользователь AutoCad, а электронщик, есть еще пару вопросов, может быть глупых. Наш конструктор работает в Mechanical Desktop (MDT6) и несколько далек от LISP. Как запустить программу! Я сохранил код *.vlx (пробовал и *.lsp), затем _appload – в списке загруженных приложений есть. При вызове по имени функции пробовал и с подчеркиванием и в скобках – ругается функция не определена.
|
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
![]() Код:
Вы все делали правильно, впрочем, сохрайть файл следовало как *. Вызов команды производится печатанием в командной строке имени программы. Попробуйте дополненный код. |
|||
![]() |
|
||||
Регистрация: 30.03.2012
Сообщений: 101
|
Вот даже после исправления выделенной опечатки все равно получаю сообщение "error: too many arguments". Подскажите, в чем дело? Второй вариант проги принципиально не отличается в этом моменте, но, видимо, работает?
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
А на момент вызова ps и ms чему равны?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 30.03.2012
Сообщений: 101
|
Ну, очевидно, как написано в начале программы (setq ps (vla-get-PaperSpace adoc) ms (vla-get-ModelSpace adoc)) это VLA-object'ы соответствующих спэйсов. Они точно не nil (если это тут вообще при чем-то). VLISP IDE говорит что брейк происходит именно на вызове лямбдыю
![]() Последний раз редактировалось WhiteShark, 06.01.2013 в 21:08. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
WhiteShark, какой у вас автокад и его разрядность? Я нашел в этой каиде 2 ошибки и не понимаю как оно вообще работало
![]() Вот вам нормальный вариант Код:
Например, создаю блок в пустом файле, копирую его, запускаю алькаиду, затем жму кнтрлзет и получаю один созданный блок вместо всех скопированных Последний раз редактировалось gomer, 07.01.2013 в 16:41. |
|||
![]() |
|
||||
Регистрация: 30.03.2012
Сообщений: 101
|
Спасибо огромное за внимание, gomer! Буду теперь ваш код осмыслять )
Кад у меня 2012х64, но работать у меня лично она и не работала. Я просто подумал, что раз никто не возмущался, то а) она работает б) никто так и не пользовался. Видимо, оказался вариант "б" ![]() А не подскажите, какие именно 2 ошибки? А то я только одну увидел (и то, может третью). И пару вопросов, раз уж вы под руку попались: 1. как вы так красиво оформляете код 2. (отвлеченный) Вот если мне надо в конце работы вывести значение на экран princ'ом, но я не хочу его дублировать, то я опять пишу princ. Но тогда последним вычисленным значением становится nil. А мне надо, чтоб функция возвращала то, что я хотел вывести на экран. Как это сделать без задействования глобальных переменных? |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
1. apply вместо mapcar, это как раз и выдавало ошибку количества аргументов
2. в лямбду по сути предавались не ms и ps а (quote ms) и (quote ps) + 3. программа не удаляла взрываемые блоки 1. это определенные правила оформления, я просто ими пользуюсь 2. сформулируйте задачу более конкретно, а то не понятно ![]() |
|||
![]() |