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

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

Макрос для создания лайаута

Ответ
Поиск в этой теме
Непрочитано 24.04.2008, 15:23 #1
Макрос для создания лайаута
dextron3
 
проектировшик
 
СССР
Регистрация: 01.01.2007
Сообщений: 5,143

Задался вопросом, как будет выглядеть макрос на кнопку,
чтобы он проделовал следующие действия:

Алгоритм:

1. Выбор самого последнего лайаута
2. Копирование его в конец списка
3. К номеру выбранного лайаута прибавить +1
4. Остаться на полученном лайауте.

Буду ждать полезных советов,
и можно ли это сделать макросом?

Миниатюры
Нажмите на изображение для увеличения
Название: Snap2.jpg
Просмотров: 369
Размер:	45.3 Кб
ID:	5755  Нажмите на изображение для увеличения
Название: Snap3.jpg
Просмотров: 289
Размер:	22.8 Кб
ID:	5756  Нажмите на изображение для увеличения
Название: Snap4.jpg
Просмотров: 246
Размер:	18.7 Кб
ID:	5757  

__________________
инженер проектировшик с опттом программа авто гад образование высшие
Просмотров: 8041
 
Непрочитано 24.04.2008, 16:16
#2
Кулик Алексей aka kpblc
Moderator

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


Ты опять за старое??
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.04.2008, 17:08
#3
dextron3

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


Кулик Алексей aka kpblc, а такого еще не было...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 25.04.2008, 09:34
#4
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Вот, попробуй. Особо не проверял, так что могут быть глюки.
Код:
[Выделить все]
(defun test (/			layout_dict	   layout_names
	     layout_length	 old_layout_name	   new_layout_name
	    )
  (setq layout_dict (dictsearch (namedobjdict) "ACAD_LAYOUT"))
  (setq	layout_names
	 (vl-remove-if
	   'null
	   (mapcar '(lambda (x)
		      (if (= (car x) 3)
			x
		      )
		    )
		   layout_dict
	   )
	 )

  )

  (setq layout_length (length layout_names))
  (setq old_layout_name (itoa (1- layout_length)))
  (if (member (cons 3 old_layout_name) layout_names)
    (progn
      (setq new_layout_name (itoa layout_length))
      (command "_.LAYOUT" "_C" old_layout_name new_layout_name)
    )
    (alert "имена листов не такие, как задумал dextron3")
  )
  (princ)
)
Makswell вне форума  
 
Непрочитано 25.04.2008, 09:47
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


И еще один вариантик. Немного подсократил код Makswell'a
Код:
[Выделить все]
(defun C:test ( / layout_names layout_length old_layout_name new_layout_name)
  (setq layout_names (LAYOUTLIST))
  (setq layout_length (apply 'max (mapcar 'atoi layout_names)))
  (setq old_layout_name (itoa layout_length))
  (if (member old_layout_name layout_names)
    (progn
      (setq new_layout_name (itoa (1+ layout_length)))
      (command "_.LAYOUT" "_C" old_layout_name new_layout_name)
      (setvar "CTAB" new_layout_name)
    )
    (alert "имена листов не такие, как задумал dextron3")
  )
  (princ)
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 25.04.2008, 10:08
#6
dextron3

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


Makswell, VVA, спасибо,
реально помогает тем кто цыфирью лайауты обозначает,
для 2009 автокада с предворительным просмотром,
это самое лучшее!


липс нужный в каждом хозяйстве,...

PS А как можно внедрить в него этот макрос ^C^C_-scalelistedit;_r;_y;_e;
что бы в конце лиспа срабатывал
или всетаки, на кнопку подсадить?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 25.04.2008, 14:09
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


На лиспе этот макрос выглядит так:
(command "_-SCALELISTEDIT" "_R" "_Y" "_E")
Добавь его после (command "_.LAYOUT" ...)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 25.04.2008, 15:59
#8
dextron3

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


VVA,
а как будет лисп файл выглядеть только с этой строчкой
(command "_-SCALELISTEDIT" "_R" "_Y" "_E"),
без каких либо дополонительных команд?

хочу его просто в автозагрузку кинуть чтобы болезни с масштабами не было
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 25.04.2008, 22:47
#9
dextron3

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


А как можно чтобы при автозагрузке лисп автоматически запускался?


Вот на проверку:

Код:
[Выделить все]
(defun c:scalreset()
  (vl-load-com)
  (command "_-SCALELISTEDIT" "_R" "_Y" "_E")
);defun
тоесть без дополнительного ввода в командную строку
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 25.04.2008, 22:55
#10
Кулик Алексей aka kpblc
Moderator

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


dextron3, ну ты даешь!
http://dwg.ru/f/showpost.php?p=230952&postcount=18
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.04.2008, 22:58
#11
dextron3

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


Кулик Алексей aka kpblc, а как вы определеяете команду самого открытия окна к примеру, ведь при открытии мышкой командная строка пуста?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 25.04.2008, 23:06
#12
Кулик Алексей aka kpblc
Moderator

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


Вы???
И какое открытие окна? Вообще, про какое окно разговор?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.04.2008, 23:12
#13
dextron3

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


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

вот мне нужно к примеру масштаб 1:50, как это все в командной строке выполнить?

скриншоты:
Миниатюры
Нажмите на изображение для увеличения
Название: Snap1.jpg
Просмотров: 178
Размер:	19.6 Кб
ID:	5812  
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 25.04.2008, 23:40
#14
Кулик Алексей aka kpblc
Moderator

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


Так у тебя на скрине СПДС-ные масштабы! Точнее, панель СПДС.
Мне так кажется...
---
Добавлено: не понимаю, откровенно говоря, смысла устанавливать какие-либо масштабы (кроме масштаба ВЭ), находясь в пространстве листа. Просвети, а?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.04.2008, 08:03
#15
dextron3

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


Кулик Алексей aka kpblc, панель СПДС это частный случай, мне хотелось бы все панели прощупать, а то что в лайауте скрин сделал,
это моя оплошность торопился для форума на самом деле, в лайауте
хочу автоматически затрагивать обычную автокадовскую панель масштабов,
Миниатюры
Нажмите на изображение для увеличения
Название: Snap1.jpg
Просмотров: 111
Размер:	24.3 Кб
ID:	5814  Нажмите на изображение для увеличения
Название: Snap2.jpg
Просмотров: 127
Размер:	24.5 Кб
ID:	5815  Нажмите на изображение для увеличения
Название: Snap3.jpg
Просмотров: 135
Размер:	8.1 Кб
ID:	5816  Нажмите на изображение для увеличения
Название: Snap5.jpg
Просмотров: 109
Размер:	16.5 Кб
ID:	5817  
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.04.2008, 10:17
#16
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от dextron3 Посмотреть сообщение
VVA,
а как будет лисп файл выглядеть только с этой строчкой
(command "_-SCALELISTEDIT" "_R" "_Y" "_E"),
без каких либо дополонительных команд?

хочу его просто в автозагрузку кинуть чтобы болезни с масштабами не было
Файл так и будет выглядеть (command "_.-SCALELISTEDIT" "_R" "_Y" "_E")
Можно сделать немного по другому:
==== Файл scalreset.lsp начало ====
Код:
[Выделить все]
(defun c:scalreset()
  (vl-load-com)
  (command "_.-SCALELISTEDIT" "_R" "_Y" "_E")
);defun
(c:scalreset)
==== Файл scalreset.lsp конец ====
И засунуть этот файл ... в портфель _appload
При загрузке scalreset.lsp будет определяться команда scalreset (вдруг в процессе работы понадобится) и она же запустится на выполнение [(c:scalreset)]
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 28.04.2008, 11:26
#17
dextron3

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


VVA, спасибо Кулик Алексей aka kpblc, в посту #10, ссылку дал на однотипный лисп,

а как быть с постом #15, как активировать эти окна через командную строку с выбором значения из выпадающего меню?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.04.2008, 12:12
#18
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Такой команды я не знаю. Судя по рисункам, перечисляются именованные объеты (слои, размерные, текстовые стили и т.д.) Все это хранится в соответсвующих таблицах Автокада, кроме масштабов.
В этой теме пост #34 выложена ф-ция _DWGRU-GET-USER-DCL. Используя ее и таблицы Автокада:
Код:
[Выделить все]
;;;================================================================================
;;;Written By Michael Puckett. 
;;;Список элементов символьных таблиц АвтоКАДа 
;;; - s- имя таблицы
;;;Пример - список всех слоев - (setq all_layers (tablelist "LAYER"))
;;;(setq all_layers (tablelist "LAYER"))
;;;
;;;AutoLisp should return something like this :
;;;Start Coding Here 
(defun tablelist (s / d r)
  (while (setq d (tblnext s (null d)))
    (setq r (cons (cdr (assoc 2 d)) r))
  )     ;while
)     ;defun
;;Set Layer
(defun C:SL ( / ret)
  (vl-load-com)
  (and
    (setq ret(_DWGRU-GET-USER-DCL "Выбери слой"
               (ACAD_STRLSORT (vl-remove-if-not '(lambda(x)(SNVALID x))
                 (tablelist "LAYER"))) nil))
    (setvar "CLAYER" (car ret))
    )
  )
;;Set Text Style
(defun C:STS ( / ret)
  (vl-load-com)
  (and
    (setq ret(_DWGRU-GET-USER-DCL "Выбери текстовый стиль"
               (ACAD_STRLSORT (vl-remove-if-not '(lambda(x)(SNVALID x))
                 (tablelist "STYLE"))) nil))
    (setvar "TEXTSTYLE" (car ret))
    )
  )
;;Set Dim Style
(defun C:SDS ( / ret)
  (vl-load-com)
  (and
    (setq ret(_DWGRU-GET-USER-DCL "Выбери размерный стиль"
               (ACAD_STRLSORT (vl-remove-if-not '(lambda(x)(SNVALID x))
                 (tablelist "DIMSTYLE"))) nil))
    (vl-cmdf "_-DIMSTYLE" "_r" (car ret))
    )
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 28.04.2008, 13:22
#19
dextron3

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


VVA,
как теперь макросом прописать автовыбор из окошек?
к примеру для слоя 0
для стиля Standart

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

Последний раз редактировалось dextron3, 28.04.2008 в 13:53.
dextron3 вне форума  
 
Непрочитано 28.04.2008, 18:37
#20
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Так нет никакого автовыбора из окошек, устанавливаешь, к примеру, Слой 1 текущим, он сам в окошке отобразится
Цитата:
и как с помощью данного лиспа на выделенные объекты назначить слой или стили, а то что то не получается
и не получится
Слои и стили текста на выделенные объекты назначай с помощью опций команды _CHANGE
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Макрос для создания лайаута

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закладные лифтовых приямков винсент75 Поиск литературы, чертежей, моделей и прочих материалов 13 11.08.2009 10:16
Москва не сразу строится Perezz!! Разное 20 21.04.2009 23:52
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46
Макрос типа клавиш Cntr-Tab! Нужно для AutoHOOK! Колян Программирование 5 31.10.2006 13:06
Определение нагрузок для нестандартных конструкций. NIVa Конструкции зданий и сооружений 2 06.08.2005 21:42