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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Дайте макрос на кнопку LINE

Дайте макрос на кнопку LINE

Ответ
Поиск в этой теме
Непрочитано 05.04.2007, 23:53 #1
Дайте макрос на кнопку LINE
dextron3
 
проектировшик
 
СССР
Регистрация: 01.01.2007
Сообщений: 5,143

Дайте макрос на кнопку LINE, чтобы линия чертилась в заданном слое указанном в макросе

Нигде не могу найти ответ...


^C^C_line .............................


Нужная весчь ускоряет работу
:shock: :? 8)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
Просмотров: 10255
 
Непрочитано 06.04.2007, 00:22
#2
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Так и будешь мучать макрос каждый раз как только, понадобится рисовать в другом слое.
Хотя идея хорошая. Создать доплнительную кнопку которая всегда будет рисовать только вспомогательные линии на слое, запрещенном к печати.
правда лучше создать сразу вторую панель "Рисование".

Столько хороших идей иногда быват, жаль что изза панелей не видно будет экрана
mmax вне форума  
 
Непрочитано 06.04.2007, 06:46
#3
Krieger

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


Этот макрос (^C^C_line) кинь на Палитру инструментов (tool palettes), а в свойствах кнопки выставь слой. Теперь линия при нажатии на кнопку будет чертится именно в этом слое, а после завершения команды пудет устанавливаться последний используемый.
Krieger вне форума  
 
Автор темы   Непрочитано 06.04.2007, 07:08
#4
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Цитата:
Сообщение от Krieger
Этот макрос (^C^C_line) кинь на Палитру инструментов (tool palettes), а в свойствах кнопки выставь слой. Теперь линия при нажатии на кнопку будет чертится именно в этом слое, а после завершения команды пудет устанавливаться последний используемый.
А для тех кто палитру инструментов терпеть не может?

Она мешается и автокад подгружает лишний раз


Хочется просто на уту кнопку см. рис.
[ATTACH]1175828877.jpg[/ATTACH]
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 06.04.2007, 07:50
#5
nikolaev

конструктор
 
Регистрация: 28.08.2003
Мос. область
Сообщений: 119


^C^C-layer;s;"ОСНОВНЫЕ";;_line
nikolaev вне форума  
 
Непрочитано 06.04.2007, 08:04
#6
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от nikolaev
^C^C-layer;s;"ОСНОВНЫЕ";;_line
Будет работать только если в файле есть уже слой Основные. Если его нет, то надо
Код:
[Выделить все]
^C^C_-layer;_m;"Основные";;_line;
Автору: если не лень прочитать http://dwg.ru/forum/viewtopic.php?t=10474 то можно сходить по адресу http://www.autocad.ru/cgi-bin/f1/board.cgi?t=33159gI ; поставить лисп в автозагрузку и тогда получится нечто типа
Код:
[Выделить все]
^C^C(_kpblc-draw-ext (list (list "layer"  (cons "name" "Основные")                (cons "color" 10) (cons "lw" 30))) "line");
Пишу без запущенного acad'a, так что надо проверить будет скобки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.04.2007, 08:23
#7
Krieger

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


Цитата:
Сообщение от dextron3
А для тех кто палитру инструментов терпеть не может?
Она мешается и автокад подгружает лишний раз
Для тех кто её терпеть не может я бы посоветовал познакомиться с ней поближе и безпристрастно взвесить все "за" и "против".
[ATTACH]1175833414.jpg[/ATTACH]
Krieger вне форума  
 
Непрочитано 06.04.2007, 08:49
#8
Profan


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


Видимо, у тех, кто палитру инструментов терпеть не может, мозг остался совсем без пищи. IMHO.
Profan вне форума  
 
Непрочитано 06.04.2007, 11:00
#9
taras

конструктор
 
Регистрация: 27.10.2005
Сообщений: 530


^C^C-layer;s;"ОСНОВНЫЕ";;_line
C^C_-layer;_m;"Основные";;_line;

Макросы работают только как сделать чтоб после выполнения
слой восстанавливался на тот который был до выполнения макроса
taras вне форума  
 
Непрочитано 06.04.2007, 11:15
#10
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(_KPBLC-DRAW-EXT '(("layer" ("name" . "Основные") ("color" . 2) ("lw" . 25))) "line")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.04.2007, 13:29
#11
Денис Флюстиков


 
Регистрация: 20.07.2005
СПб
Сообщений: 89


Отрезок на слое Ось:
^C^C^P(defun C:tmp_Den ()(setq a(getvar "clayer"))(vl-cmdf "_.undo" "_g")(vl-cmdf "_.clayer" "Ось")(vl-cmdf "_.line")(while(=(getvar 'cmdactive)1)(vl-cmdf pause))(vl-cmdf "_.clayer" a "_.undo" "_e")(setq a nil));tmp_Den
Денис Флюстиков вне форума  
 
Автор темы   Непрочитано 06.04.2007, 15:19
#12
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Спасибо, эти макросы реально лучше палет тулс, всего один щелчок
щас менюшку со своими слоями создам и панель слои нафиг не нужна




А как выглядит макрос,
допустим выделил объект на кнопку нажал
и сразу все перенеслось в заданный слой данной кнопкой,
а при этом текущий слой не изменился???


Жду ответов
Потом объясню для чего это нужно
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 06.04.2007, 15:36
#13
Zouss


 
Регистрация: 14.03.2006
Сообщений: 863


легким движением рук подчеркиватель текста превращается в заменитель слоя
Код:
[Выделить все]
(defun C:chanlay (/ ss ln)
  (setq ss nil
	ln (getstring T "введите имя слоя:")
  )
  (ent_chanlay
    (while (not ss) ;_ not
      (progn
	(prompt "Выберите объекты:")
	(setq ss (ssget))
      ) ;_ progn
    ) ;_ while
    ln
      ) ;_ ent_chanlay
) ;_ defun

(defun ent_chanlay (ss pre / l ed en dx1)
  (setq l (sslength ss))
  (repeat l
    (setq ed (entget (setq en (ssname ss 0)))
	  ed (subst (cons 8 pre) (assoc 8 ed) ed
	     ) ;_ subst
    ) ;_ setq
    (ssdel en ss)
    (entmod ed)
  ) ;_ repeat
) ;_ defun
традиционно никаких проверок на правильность ввода имени слоя и на наличие такого слоя в чертеже нет%)
Жду пива
Потом объясню для чего оно нужно
Zouss вне форума  
 
Непрочитано 06.04.2007, 15:40
#14
taras

конструктор
 
Регистрация: 27.10.2005
Сообщений: 530


Цитата:
Сообщение от Денис Флюстиков
Отрезок на слое Ось:
^C^C^P(defun C:tmp_Den ()(setq a(getvar "clayer"))(vl-cmdf "_.undo" "_g")(vl-cmdf "_.clayer" "Ось")(vl-cmdf "_.line")(while(=(getvar 'cmdactive)1)(vl-cmdf pause))(vl-cmdf "_.clayer" a "_.undo" "_e")(setq a nil));tmp_Den
_C^C_(defun C:tmp_Den ()(setq a(getvar "clayer"))(vl-cmdf "_.undo" "_g")(vl-cmdf "_.clayer" "Ось")(vl-cmdf "_.line")(while(=(getvar 'cmdactive)1)(vl-cmdf pause))(vl-cmdf "_.clayer" a "_.undo" "_e")(setq a nil));tmp_Den

Теперь у меня заработало-сравните начало

Только в командной строке-пишет
Command: ()(setq a(getvar "clayer"))(vl-cmdf "_.undo" "_g")(vl-cmdf "_.clayer"
"Ось")(vl-cmdf "_.line")(while(=(getvar 'cmdactive)1)(vl-cmdf pause))(vl-cmdf
"_.clayer" a "_.undo" "_e")(setq a nil))
tmp_Den
Invalid point.
Specify first point:

Ошибка: extra right paren on input

но работает
что мне еще подправить?
taras вне форума  
 
Непрочитано 06.04.2007, 15:46
#15
Кулик Алексей aka kpblc
Moderator

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


В общем-то код у Дениса рабочий. Можешь попробовать за компанию еще и такое:
Код:
[Выделить все]
^C^C^P(defun c:tmp_den(/ *error* lay) (defun *error*(msg) (setvar "clayer" lay) (princ msg) (princ)) (setq lay (getvar "clayer")) (command "_.-layer" "_m" "Ось") (command "_.line") (while (/= (getvar "cmdactive") 0) (command pause)) (setvar "clayer" lay));tmp_den
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.04.2007, 15:52
#16
taras

конструктор
 
Регистрация: 27.10.2005
Сообщений: 530


Спасибо всем
Код Дениса заработал
taras вне форума  
 
Непрочитано 06.04.2007, 16:29
#17
Seregadwg

design interior
 
Регистрация: 18.09.2006
Moldova
Сообщений: 8


help
у себя поставил макрос на размеры : ^C^C_dimlinear;\\\_Change;Last;;P;la;Razmer;; и всё работает ,толька на continue не получяется . может ктото падскажет?
Seregadwg вне форума  
 
Непрочитано 06.04.2007, 16:37
#18
Кулик Алексей aka kpblc
Moderator

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


Легким движением брюки превращаются...
Код:
[Выделить все]
^C^C^P(defun c:tmp_dco(/ *error* lay) (defun *error*(msg) (setvar "clayer" lay) (princ msg) (princ)) (setq lay (getvar "clayer")) (command "_.-layer" "_m" "Razmer") (command "_.dimcontinue") (while (/= (getvar "cmdactive") 0) (command pause)) (setvar "clayer" lay));tmp_dco
Код не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.04.2007, 16:54
#19
Seregadwg

design interior
 
Регистрация: 18.09.2006
Moldova
Сообщений: 8


Алексей к сожелению код не работает
Seregadwg вне форума  
 
Непрочитано 06.04.2007, 17:10
#20
Кулик Алексей aka kpblc
Moderator

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


(ожесточенно чешу затылок)
Блин, совсем забыл об ограничении на 255 символов в макросе. Черт, как же там суммировать строки-то?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Дайте макрос на кнопку LINE

Размещение рекламы