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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp c использованием команды "слойизмнеск"

Lisp c использованием команды "слойизмнеск"

Ответ
Поиск в этой теме
Непрочитано 21.06.2010, 17:32 #1
Lisp c использованием команды "слойизмнеск"
Автокадер
 
из тумана
Регистрация: 13.09.2006
Сообщений: 29

привет!
хочу сделать чтобы при выборе примитивов сразу выскакивало окно выбора слоя в который можно переместить эти примитивы, без выбора дополнительных опций (имя)
проблема в том чтобы организовать нормальный выбор примитивов, с лиспом указанном ниже, когда щёлкаю в пустую область, выдаёт ошибку


(defun c:нн ()
(command "слойизмнеск" pause "имя")
)

Последний раз редактировалось Автокадер, 21.06.2010 в 19:54. Причина: админ
Просмотров: 2214
 
Непрочитано 21.06.2010, 17:36
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Код:
[Выделить все]
Слишком простецкий лисп.

В таком лиспе смысла нет никакого, потому что эту операцию легко можно выполнить с помощью палитры свойств.

Последний раз редактировалось Profan, 21.06.2010 в 17:41.
Profan вне форума  
 
Непрочитано 21.06.2010, 19:26
#3
Кулик Алексей aka kpblc
Moderator

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


Автокадер, а ты правила именования тем читал? У тебя 12 часов на исправление ситуации.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.06.2010, 20:03
#4
Автокадер


 
Регистрация: 13.09.2006
из тумана
Сообщений: 29


Цитата:
Сообщение от Profan Посмотреть сообщение
Код:
[Выделить все]
Слишком простецкий лисп.

В таком лиспе смысла нет никакого, потому что эту операцию легко можно выполнить с помощью палитры свойств.

Профан, хах!! да ты что??? через панель свойств можно?? спасибо тебе, мегамозг, я то дурак не знал!!!!!


для тебя, умник - вопрос был задан на примере данного простого лиспа, с целью выяснить можно ли организовать нормальный выбор примитивов как он осуществляется при использовании команды "слойизмнеск". При использовании это лиспа выбор примитивов корявый, выдаёт ошибки при щелкании в пустой области и т.д.
Автокадер вне форума  
 
Непрочитано 21.06.2010, 21:40
#5
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Смешливый очень? Команда "_laymch" ("слойизмнеск") после завершения выбора объектов предлагает еще один выбор - или указать на объект, слой которого надо использовать для изменения слоя выбраных объектов (1), или вывести на экран диалоговое окно выбора слоя (2). Причем, умолчания здесь нет. Опцию "_name" ("имя") надо или ввестия явно в командную строку, или воспользоваться правой кнопкой мыши для вызова контекстного меню.
Два варианта:
Код:
[Выделить все]
(defun c:NN ( / ss)
(setq ss (ssget))
(vl-cmdf "_laymch" ss "")
(princ)
)
Код:
[Выделить все]
(defun c:NN ()
(vl-cmdf "_laymch" pause)
(princ)
)
Случай 2 не так интересен, поскольку эту процедуру можно выполнить с помощью палитры свойств, а вот для случая 1 как раз диалоговое окно не нужно.
Profan вне форума  
 
Непрочитано 21.06.2010, 21:57
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Автокадер Посмотреть сообщение
хочу сделать чтобы при выборе примитивов сразу выскакивало окно выбора слоя в который можно переместить эти примитивы
Код:
[Выделить все]
(defun c:нн ( )
  (vl-load-com)
  (princ "\nВыберите объекты для изменения слоя")
  (setq ss nil)
  (if (setq ss (ssget "_:L"))
    (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object))
      "_laymch !ss  _N\n")
    )
)
_LAYMCH пришла из ExpressTools. Поэтому (?) при использовании опции "_name" в фунцкции (command ...) диалоговое окно не появляется, а запросы идут в командной строке. Пришлось изворачиваться с помощью Sendcommand
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 21.06.2010 в 22:04.
VVA вне форума  
 
Автор темы   Непрочитано 21.06.2010, 22:17
#7
Автокадер


 
Регистрация: 13.09.2006
из тумана
Сообщений: 29


Спасибо, Profan и VVA !!! разобрался
Автокадер вне форума  
 
Непрочитано 21.06.2010, 22:26
#8
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


VVA, но ведь в твоем коде исчезла возможность указания на объект с нужным слоем...
Profan вне форума  
 
Непрочитано 21.06.2010, 22:34
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Profan, Из первого поста я понял, что это Автокадеру не нужно, а нужен сразу диалог со слоями
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 21.06.2010, 22:41
#10
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Черт, да ведь диалог со слоями и не нужен вовсе, повторяю, да и команда не нужна, лишние движения, IMHO. Вот у меня палитра свойств всегда раскрыта справа, я выбрал несколько объектов и сразу в поле "Слой" указываю нужный.
Profan вне форума  
 
Непрочитано 21.06.2010, 23:15
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Profan Посмотреть сообщение
да ведь диалог со слоями и не нужен вовсе
я с этим согласен. Все можно сделать в свойствах.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.06.2010, 08:43
#12
Автокадер


 
Регистрация: 13.09.2006
из тумана
Сообщений: 29


ИМХО через "слойизмнеск" это делать граздо удобней, чем через свойства, так как есть возможность, набора названия слоя с клавы, что быстрее, чем выбор по списку, при этом можно быстро создать новый слой, без открытия диспетчера слоёв
Автокадер вне форума  
 
Непрочитано 22.06.2010, 08:58
#13
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


А потом все равно придется вызывать диспетчер слоев, чтобы задать цвет, типлин, вес...
Profan вне форума  
 
Автор темы   Непрочитано 22.06.2010, 09:15
#14
Автокадер


 
Регистрация: 13.09.2006
из тумана
Сообщений: 29


VVA, а где можно почитать о Sendcommand? а лучше просто поясни как работает этот лисп, что делают функции в нём, если не сложно)

Последний раз редактировалось Автокадер, 22.06.2010 в 09:44.
Автокадер вне форума  
 
Непрочитано 22.06.2010, 10:21
#15
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Автокадер Посмотреть сообщение
VVA, а где можно почитать о Sendcommand?
C:\Programm Files\Autocad XXXX\HELP\acadauto.chm
ObjectModel->Methods->SendCommand
Если в друх словах, то
Цитата:
(vla-sendcommand ;->В командную стоку
(vla-get-activedocument ;-> Активного документа
(vlax-get-acad-object)) ;->объекта Автокада
"_laymch !ss _N\n" ;->Посылается эта строка
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp c использованием команды "слойизмнеск"



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите пожалуйста почему не работает этот лисп-код выборки строк из таблиц? lexluther LISP 1 02.09.2009 21:43
Подскажите где ошибка в лиспе Composter LISP 13 01.02.2009 14:39
Лисп: моментальное редактирование цифр в предложениях dextron3 LISP 12 27.09.2008 09:33
Лисп для копирования данных нескольких мтекстов по принципу расположения. Red Nova LISP 14 18.06.2008 22:08
Нужен лисп (пронизыватель лайаутов) dextron3 LISP 91 25.07.2007 07:37