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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Копирование, сортировка, переименование листов (layout)

LISP. Копирование, сортировка, переименование листов (layout)

Ответ
Поиск в этой теме
Непрочитано 02.05.2008, 12:26 5 | #1
LISP. Копирование, сортировка, переименование листов (layout)
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,996

По мотивам http://dwg.ru/f/showthread.php?t=19936
Команды
  • LTINC - Копирование содержимого листа с увеличением его порядкового номера (Increment current layout including letters) Drawing_A -> Drawing_B
  • LTINCN - Копирование содержимого листа с увеличением его порядкового ЦИФРОВОГО номера (Increment DIGITAL number current layout) Drawing_A -> Drawing_A-1
  • LTREN - Переименование выбранных листов (Rename selected layout)
  • LTRENN - Переименование выбранных листов с увеличением его ЦИФРОВОГО номера (Rename selected layout and increment its DIGITAL number)
  • LTSORTN - Сортировка листов в порядке возрастания цифры как числа (L1 L2 L3 L22) [Layout sort as numeric (L1 L2 L3 L22)]
  • LTSORTA - Сортировка листов в порядке возрастания по алфавиту (L1 L2 L22 L3) [Layout sort as alphabetic (L1 L2 L22 L3)]
  • LS - Переключение на нужный лист (Layout switch)
  • LTRS - Переименование листов с последующей сортировкой. (Rename and sort as numeric) LTREN + LTSORTN
Иконки и меню смотрим в#10 и в #73

PS. Похожая программа от Lee Mac TabSort
PPS. Во вложении переведенный на русский TabSort от Lee Mac
PPPS. Откорректированный S_Vitaliy русифицированный Tabsort для удобства работы с длинными наименованиями листов см пост #101

Вложения
Тип файла: zip TabSort_ru 2.2.zip (10.7 Кб, 1766 просмотров)
Тип файла: lsp layout2013.lsp (31.2 Кб, 878 просмотров)

__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 12.09.2024 в 09:02. Причина: добавил ссылку на #101
Просмотров: 72423
 
Автор темы   Непрочитано 02.05.2008, 13:14
#2
VVA

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


Иллюстрация работы команды
Изображения
Тип файла: gif Layinc.gif (44.3 Кб, 4304 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 02.05.2008 в 13:28.
VVA вне форума  
 
Непрочитано 02.05.2008, 17:08
#3
dextron3

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


VVA, дельный лисп, спасибо!



а можно ль сделать сиквел данного лиспа,
лисп перенумератор лайаутов,

Предыстория:

Обычно я делаю как чертежи марки Ар так и марки КЖ, КМ, и все выпускаю под обной общей маркой АС, сначало приходиться делать эксизный проект, планы, но чтобы сделать разрез я должен сделать сначало расчет и проект марки Кж или КМ, тоесть я сначало не знаю сколько будет первых листов марки АР, я листы нумерую 1, 2, 3, 4, 5...
тоесть пока делаю наброски, затем когда полностью конструктив готов делаю АР, и потом приходиться перебиывать все лайауты, чтобы вставить вначало чертежи планов разрезов, и спецификации окон полов, и т.п.

Алгоритм работы лиспа:


1. Дано:

Лайауты:

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16


2. Выделите лист начало отсчета (к примеру выделяем лист 3)
3. Укажите цыфру отсчета (к примеру вводим цыфру 6)
4. Конец

Результат:

1,2,6,7,8,9,10,11,12,13,14,15,16,17,18,19


Теперь я могу вставить еще три листа после лайаута 2, как раз то что нужно, а иначе я перебивал бы все лайауты, и выполнял бы топорную работу, что не есть хорошо в наш высокотехнологичный век =)


Если такое возможно буду рад за помощь...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 03.05.2008, 13:43
#4
VVA

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


*** Перенесено в пост #1
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 12.05.2008 в 10:59. Причина: Найденные ошибки в #20, #21
VVA вне форума  
 
Непрочитано 03.05.2008, 17:12
#5
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Просто нет слов. лисп великолепен, нужен ооочень. Спасибо большое.
Вот только у меня LTRS не работает.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 03.05.2008, 17:36
#6
dextron3

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


VVA, спасибо за LTREN, что не лисп, так полноценная панель с кнопками,
еще вчера нашел новую опцию в автокаде,
оказывается если зажать лайаут то его можно таскать "drag and drop",
может пригодиться для разовых махинаций с тасканием,
хотел спросить на 2008 есть такая же опция?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 03.05.2008, 17:37
#7
dextron3

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


Red Nova, Вот только у меня LTRS не работает....

в том члучае если у тебя все правильно уже расстановлено
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 03.05.2008, 19:18
#8
VVA

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


Ну так названия команд я поправил не везде.
Обновил лисп в #4. Можно качать, а можно исправить код команды LTRS Он должен быть таким:
Код:
[Выделить все]
 
(defun C:LTRS ( )(c:LTREN)(C:LTSORT))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 03.05.2008, 19:26
#9
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


dextron3,
Цитата:
хотел спросить на 2008 есть такая же опция?
Это дело как раз в 2008 появилось.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 04.05.2008, 09:45
#10
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Выкладываю меню для layout

Добавлено
Лисп время от времени изменяется и выкладывается на посте #1.
Так что я его удалил из своего вложения.
Скачиваем лисп с #1 и добавляем его в папку с выложенным тут меню.
В лиспе есть две команды для сортировки, это
LTSOTRN
и
LTSOTRA
В меню только LTSOTRN.
Если вам больше подходит LTSOTRA, то подправьте название и макрос команды.
То же касается команд LTINC и LTINCN, (в меню только LTINCN)
и команд LTREN и LTRENN (в меню только LTRENN)
Вложения
Тип файла: rar Layout.rar (21.2 Кб, 790 просмотров)
__________________
Блог

Последний раз редактировалось Red Nova, 03.06.2008 в 16:11. Причина: Обновил исправленный лисп с#1, слегка изменил иконки
Red Nova вне форума  
 
Непрочитано 04.05.2008, 10:33
#11
dextron3

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


вот мои кнопки

но твои более понятны, но какието старческие пожелтевшие =)
Изображения
 
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 04.05.2008, 10:41
#12
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Так ты уже на 2009-ом, там цвет фона другой наверное. Пошли мне на мыло скрин панелей 2009-ого плиз.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 04.05.2008, 13:28
#13
dextron3

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


гляди
Миниатюры
Нажмите на изображение для увеличения
Название: Snap1.jpg
Просмотров: 1023
Размер:	22.3 Кб
ID:	6049  
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 04.05.2008, 14:14
#14
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


bmp пожалста. Можно оставить только панель modify. Фон как я и думал побелел.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 04.05.2008, 15:01
#15
dextron3

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


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

я уже сделал себе кнопочки..., не могу менять успел привыкнуть
Вложения
Тип файла: rar Snap2.rar (6.8 Кб, 408 просмотров)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 04.05.2008, 20:28
#16
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Изменил иконки, обновил #10
Модератору. Можешь скосить наше с dextron3 обсуждение с12-по15. Наверное в этом разделе обсуждения не преведствуются.
Изображения
 
__________________
Блог
Red Nova вне форума  
 
Непрочитано 04.05.2008, 20:34
#17
Кулик Алексей aka kpblc
Moderator

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


Оставим, лишним не будет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.05.2008, 21:55
#18
dextron3

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


Red Nova, вот теперь кнопки беру на вооружение. Кстати ты в какой программе кнопки рисуешь, я в Паинте...

я сверх интересный алгоритм для лиспа придумал называется "записная книжка", отправил VVA на почту, жду когда он осовбодиться...
этот лисп сделает клавиатуру вообще не нужной в автокаде,
ну кроме ESC и DEL, сам жду даже работы приостановил...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 04.05.2008, 22:22
#19
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Аааа. Понравилось. Мне тоже стиль кнопок 2009 нравиться.
Цитата:
я сверх интересный алгоритм для лиспа придумал называется "записная книжка", отправил VVA на почту, жду когда он осовбодиться...
Сказать по правде я тоже от него кое чего жду, лисп для создания ведомости чертежей. Что бы мы с тобой без него делали Хочется еще раз поблагодарить Владимира за помощь. Я в большом долгу.

Цитата:
Кстати ты в какой программе кнопки рисуешь,
Да что под рукой тем и рисую, но не пейнтом, там оч. мало инструментов. В ACDSee Photo Editor, или в Photoshop.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 05.05.2008, 09:06
#20
dextron3

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


листы с 9 на 10 не в конец получаются,

видеоролик
Вложения
Тип файла: rar Untitled.rar (27.5 Кб, 409 просмотров)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 05.05.2008, 21:00
#21
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Я тоже неполадку нашел. В этом файле при попытке переименовать листы в место последнего листа норовит захватить модель.
Миниатюры
Нажмите на изображение для увеличения
Название: баг.JPG
Просмотров: 299
Размер:	22.2 Кб
ID:	6101  
Вложения
Тип файла: dwg
DWG 2004
Баг.dwg (65.5 Кб, 3130 просмотров)
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 07.05.2008, 11:11
#22
VVA

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


Исправил ошибки, описанные в #20, #21. Обновил код в #4
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.05.2008, 11:33
#23
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Тогда и я обновил #10.
VVA, Может топик переименовать?
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 07.05.2008, 11:39
#24
VVA

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


А сам не могу (или не знаю как), а Алексая в аське сейчас нет
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.05.2008, 15:30
#25
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Надо править первый пост (в расширенном режиме можно и название править), правда работает не всегда.
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 07.05.2008, 16:20
#26
VVA

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


Переименовал
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 11.05.2008, 23:12
#27
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


У меня опять в файле не видет первый лист.
Вложения
Тип файла: dwg
DWG 2004
49509k0151a.dwg (141.8 Кб, 3170 просмотров)
__________________
Блог
Red Nova вне форума  
 
Непрочитано 12.05.2008, 03:20
#28
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


>>У меня опять в файле не видит первый лист.

Подтверждаю, (команды LTREN, LTRS). А именно в списке листов в диалоговом окне.
И что-то перестала запускаться LTSORT (acad2008eng), причем никаких сообщений не выдается. Чертовщина, наверное.

p.s. Программа нужная, особенно для большого количества листов.
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Автор темы   Непрочитано 12.05.2008, 11:04
#29
VVA

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


Red Nova, KAI, Перестарался немного, 2 раза cdr брал. Исправил, выложил в пост #1. По поводу LTSORT вставил печать сообщения. Если не будет сортироваться, жду файлик по почте
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.05.2008, 13:12
#30
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Работает. Спасибо. Обновил #10
__________________
Блог
Red Nova вне форума  
 
Непрочитано 13.05.2008, 03:47
#31
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


LTRS, LTREN

А причем тут Model? А где layout sdd?

LTSORT - вызывает большие сомнения:
L1, L2, L4,L6, L22,sdd
А разве после L2 не должно идти L22?

И по поводу интерфейса:
В наименовании окна DCL следует приводить или имя программы или ее расширенное имя, тем более, что как выбирать листы приведено внизу DCL (что правильно).
Миниатюры
Нажмите на изображение для увеличения
Название: layout.jpg
Просмотров: 313
Размер:	50.6 Кб
ID:	6341  
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Непрочитано 13.05.2008, 09:41
#32
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Цитата:
LTSORT - вызывает большие сомнения:
L1, L2, L4,L6, L22,sdd
А разве после L2 не должно идти L22?
Не согласен. Если листов 30, то если следовать твоей логике и после 2 ставить 22, Получиться 1,10,11,12……19,2,20. Одним словом ничего хорошего.
А про глюк с не распознаванием модели это да...
Причем глючит когда имя листа начинается на q,w,z,t,y,u,z,s,o,p,x,v,n, и на все буквы Кириллицы.
__________________
Блог

Последний раз редактировалось Red Nova, 13.05.2008 в 09:54.
Red Nova вне форума  
 
Автор темы   Непрочитано 13.05.2008, 12:02
#33
VVA

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


KAI, Red Nova, ну клинит меня после праздников
Исправил пост #1
По поводу сортировки:
Сразу было реализована сортировка текствых строк, в которых числа сортируются как числа, т.е. L1 L2 L3 L22
Добавил команду сортировки по алфавиту, т.е. L1 L2 L22 L3
Команда LTSORT исключена, вместо нее 2 новые:
LTSOTRN - LayouT SORT as Number (сортировка листов, числа как числа)
LTSOTRA - LayouT SORT as Alphabetical (сортировка листов по алфавиту)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.05.2008, 17:14
#34
dextron3

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


Red Nova, что то про алфавит не пойму, или кто то вместо цыфр буквами листы обозначает?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 13.05.2008, 21:04
#35
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Это не ко мне, к KAI скорее. Он хотел последовательность другую. А буквы я привел на которых глючит. Последовательность не причем.
__________________
Блог

Последний раз редактировалось Red Nova, 13.05.2008 в 21:16.
Red Nova вне форума  
 
Непрочитано 13.05.2008, 22:51
#36
dextron3

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


Command: <Switching to: КЖ-13>
Regenerating layout.
Regenerating model.

Command:
Command:
Command: (if (null C:layout)(load "Lisp/layout.lsp")) ; error: malformed list
on input

Command: LTINC ; error: no function definition: INCSUFF

Command:
Command: LTINC
; error: no function definition: INCSUFF

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

Последний раз редактировалось dextron3, 13.05.2008 в 22:56.
dextron3 вне форума  
 
Непрочитано 14.05.2008, 00:53
#37
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Я на #10 пока не обновлял
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 14.05.2008, 09:58
#38
VVA

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


>dextron Обновил #1, кое-что на ходу подправлял, скобку одну забыл
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.05.2008, 11:13
#39
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Подправил меню на #10, удалил из вложения сам лисп, его качаем с #1.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 02.06.2008, 11:05
#40
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA, Обнаружил, что при ltinc для листа с иминем "ПЗ9" (тут З-это буква) создаваемый лист вместо "ПЗ10" получается "ПИ0". Смотри файл
Вложения
Тип файла: dwg
DWG 2004
ПЗ.dwg (80.3 Кб, 3118 просмотров)
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 02.06.2008, 11:43
#41
VVA

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


Обновил #1. Разделил команды
LTINC - Копирование содержимого листа с увеличением его порядкового номера, включая буквы ( Drawing_A -> Drawing_B)
LTINCN - Копирование содержимого листа с увеличением его ЦИФРОВОГО номера ( Drawing_A -> Drawing_A-1)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 02.06.2008, 14:45
#42
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Спасибо, на #10 поменял в меню LTINC на LTINCN.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 02.06.2008, 15:55
#43
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


С ltren то же самое, можно и эту команду разделить?
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 03.06.2008, 12:18
#44
VVA

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


Разделил LTREN
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 03.06.2008, 16:12
#45
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Спасибо, еще раз обновил #10
__________________
Блог
Red Nova вне форума  
 
Непрочитано 29.06.2008, 23:42
#46
dextron3

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


.............
Появилась нужда в такой команде:

1. Выберите лайауты
2. Готово

тоесть оналог команды LTINC, только выпадает окошко со всеми лайаутами, выбираешь несколько, и они сами в порядке возрастания копируются в конец...

где нужно:

Я сделал к примеру три чертежа: схема балок, армирование и спецификация, хочу теперь повторить это для другого этажа, если делать командой LTINC то мне прийдется сначало первый лист выделить нажать LTINC, потом второй лист выделить нажать LTINC, потом третий выделить и нажать LTINC, а я хочу автоматизировать, а если к примеру 10 листов уже трудновато будет

Буду благодарен....
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 17.07.2008, 17:19
#47
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA, Перешел недавно на штамп с атрибутами, и стал теперь доступен твой лисп создания ведомости чертежей отсюда
http://dwg.ru/f/showthread.php?t=14548&page=1
Я до сих пор использовал следующий механизм нумерации:
При помощи LTREN нумеровал листы, а в сам штамп номер записывался как поле (дизель выражение).
Но данный метод делает невозможным создания корректной ведомости чертежей, т.к. Поле номера листа отображается в модели как model.
wetr посоветовал автонумератор от Виталия Зуенко (ZZZ), опубликованный здесь:
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=21092Ky
Чтобы далеко не ходить прикрепляю эту программу.
Эта программа нумерует как названия листов, так и атрибуты штампа с именем ЛИСТ.
Но эта программа не делает всего того, что делает лисп опубликованный на этом форуме, и работает по другому принципу.
Пытаюсь применить ее к листам с именами
К1, К2, К3а
В ответ она не переименовывает листы, а добавляет к ним префикс
01К1, 02К2, 03К3а
Получается не удобно.

В связи с этим есть просьба модифицировать лисп разработанный на этом форуме.
Прошу доработать команды LTREN и LTINC.
Было бы удобно, если бы они действовали и на атрибут блока с именем ЛИСТ.
Причем если Листы именуются составным именем, то есть сперва идут буквы а затем цифры, на пример
К1, К2, К3а или КМ1, КМ2, КМ3а
То в атрибут листа должна записываться только часть этого названия, которая идет после первой цифры (1,2,3а).
Надеюсь это возможно.

Если будет охота, можно для команды LTREN в всплывающее окно добавить радиокнопки.
-Начальный номер листа (вписать первое значение)
-Нумеровать листы (да или нет)
-Нумеровать штампы (да или нет)
Вложения
Тип файла: rar z_layout_number.rar (2.3 Кб, 232 просмотров)
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 17.07.2008, 19:37
#48
VVA

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


Ответил здесь http://dwg.ru/f/showthread.php?t=14548&page=3
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.08.2008, 16:09
#49
dextron3

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


VVA, а на мой вопрос...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 29.09.2008, 21:27
#50
dextron3

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


Нашел баг в лиспе, пришлось пожертвовать листом общих данных, обидно, приложил видеоролик:

1. После 60 лайаутов лисп ведет себя не корректно
2. К примеру создаю лист с номером 70, он идет в самое начало почемуто
3. Лист 1 пропадает вообще, исчезает
4. Иногда 1 и 2 листы пропадают (обидно), не всегда заметно...

Вот видеоролик в подвтерждение...
Вложения
Тип файла: rar Untitled.rar (425.5 Кб, 218 просмотров)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 29.09.2008, 22:37
#51
VVA

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


dextron3, Проишли мне на почту файл со своими 60 лэйаутами, посмотрю.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.09.2008, 23:19
#52
dextron3

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


VVA, я вам вышлю один файло, но данный глюк начал проявляться во всех чертежах, смотрите почту, (можете проделать тоже самое что на видеоролике и глюк повториться), буду рад корректировке лиспа, потомучто когда страниц больше 100, ваш лисп имеет самое непосредственное значение...

сейчас надобно переименовать 20 листов, а не получается, исчезают некторые лайауты, я вас подожду может что то получиться...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 02.10.2008, 19:26
#53
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


А я заметил, если к листу с названием к примеру "К9" применить LTINC, то получится не К10, а L0.
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 02.10.2008, 21:40
#54
VVA

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


А для кого это написано?
Цитата:
LTINC - Копирование содержимого листа с увеличением его порядкового номера (Increment current layout including letters) Drawing_A -> Drawing_B
LTINCN - Копирование содержимого листа с увеличением его порядкового ЦИФРОВОГО номера (Increment DIGITAL number current layout) Drawing_A -> Drawing_A-1
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 03.10.2008, 19:37
#55
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Блин, все уже забыл.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 03.10.2008, 19:49
#56
dextron3

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


Red Nova, а мой баг как вылечить???
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 04.10.2008, 16:41
#57
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


dextron3,
Может ты имел в виду
VVA, а мой баг как вылечить???
Ато из меня такой же лечитель как из тебя.
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 04.10.2008, 16:48
#58
VVA

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


dextron3, Red Nova, Не наблюдал я бага. На присланном dextron3 чертеже создал 105 лэйаутов, рука устала. Отвечал почтой.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.10.2008, 17:14
#59
dextron3

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


VVA, вы смотрели видеоролик, там явно баг прорисовывается, попробуйте проделать тоже самое что и я делал в видеоролике, с другими по номерам лайаутов работает, а вот именно как я делаю так и не работает...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 04.10.2008, 19:58
#60
VVA

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


dextron3, Посмотри внимательнее свой видеоролик, помимо листов с 67 по 87 выделен еще лист 1. Нажми CTRL и сними выделение с листа
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.10.2008, 20:26
#61
dextron3

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


VVA, спасибо! не обратил внимание!
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 02.12.2009, 18:46
#62
dextron3

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


VVA, нашел баг, связанный с первым листом, при работе лиспа, прикалдываю видеоролик:
Вложения
Тип файла: rar Untitled.rar (195.5 Кб, 202 просмотров)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 22.06.2012, 13:50
#63
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Интересно, а с помощью этих инструментов можно так сделать, что бы листы 1а, 2а, 3а, 1b, 2b, 3b расположить как 1a, 1b, 2a, 2b, 3a, 3b.
Или подскажите, что надо поправить в скрипте, что бы при переименовании листов, порядковый номер изменялся не на +1, а на +2 )
Konstruktiv54 вне форума  
 
Автор темы   Непрочитано 22.06.2012, 23:35
#64
VVA

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


ShaRhaN, А попробовать? По моему и LTSORTN и LTSORTA должны так сделать
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 23.06.2012, 07:17
#65
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


ВВА, разумеется пробовал )) бился очень долго, не смог придумать...как только не придумывал переименовать, что бы отсортировать ) у меня не получилось, поэтому и обратился на форум...в остальном лиспом пользуюсь очень давно, всегда радует меня )
Вот если бы так можно было...
Есть листы: 1,2,3...
Применяем команду ltren2, указываем лист, с которого надо начать: 1
Получаем листы: 1,3,5...

Последний раз редактировалось Konstruktiv54, 23.06.2012 в 07:23.
Konstruktiv54 вне форума  
 
Автор темы   Непрочитано 23.06.2012, 22:06
#66
VVA

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


ShaRhaN, После отпуска гляну. Добавил в #1 ссылку на программу от Lee Mac Попробуй, может подойдет
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 25.06.2012, 05:35
#67
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


спасиб! гляну )
Konstruktiv54 вне форума  
 
Автор темы   Непрочитано 17.10.2012, 19:02
#68
VVA

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


Добавил к первому посту переведенную на русский версию Tabsort от Lee Mac
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 30.05.2013, 16:13
#69
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA,
при применении LTREN на 2013х64 программа зависает.
Red Nova вне форума  
 
Автор темы   Непрочитано 31.05.2013, 12:50
#70
VVA

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


Red Nova, Спасибо за дефектацию. Пока нет времени. За мной долг с темы АВТО Заполнение ведомости рабочих чертежей. Напомни мне еще про это числа 17 июня. Попробуй tabsort с #1. Может не будет зависать
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.06.2013, 08:16
#71
MeshIN

Изыскания и САПР
 
Регистрация: 05.07.2008
Ижевск
Сообщений: 297


VVA, зависает программа при сортировке листов, автокад 2013
MeshIN вне форума  
 
Автор темы   Непрочитано 18.06.2013, 20:35
#72
VVA

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


MeshIN, Проверил. Win7 x64 Acad2013x64 SP2 LTSORTN и LTSORTA работают. Выкладывай более подробную информацию вместе с файлом
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.07.2013, 11:00
#73
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA, Попробуй применить LTINC к листу с названием к примеру h или x на 2013x64. Акад либо зависнет окончательно либо задумается ну очень надолго. При этом листы с номерными названиями или заканчивающиеся на цифру (к примеру 1, 2, 3, x1, x2, x3) не вызывают сбоя. Возможно зависание при LTREN (которое тоже не на каждом файле возникает) имеет схожую причину.

P.S. По моему раньше не выкладывал. Прикрепляю менюшку с иконками для layout команд + vrc. У меня стоит вот уже на которой версии акада. Может кому еще пригодится...
Вложения
Тип файла: rar Layout.rar (58.4 Кб, 269 просмотров)

Последний раз редактировалось Red Nova, 16.07.2013 в 12:31.
Red Nova вне форума  
 
Автор темы   Непрочитано 17.07.2013, 19:19
#74
VVA

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


Red Nova, Попробовал. Все нормально. После x появляется y, после h - i. На всякий случай перезалил в #1 тот лисп, на котором тестировал.

Цитата:
Сообщение от Red Nova Посмотреть сообщение
P.S. По моему раньше не выкладывал.
Это не тоже самое? http://forum.dwg.ru/showthread.php?p=239007#post239007
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.07.2013, 17:19
#75
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Цитата:
Попробовал. Все нормально. После x появляется y, после h - i. На всякий случай перезалил в #1 тот лисп, на котором тестировал.
Потыкал, оказалось что у меня в macro вместо ^C^C_ltinc почему-то ^C^C_ltinc1. Теперь все исправилось. Странно что при ^C^C_ltinc1 программа вообще работала в каких то случаях. Наверное сам намудрил...

Цитата:
Это не тоже самое? http://forum.dwg.ru/showthread.php?p=239007#post239007
Все верно. Что-то с памятью моей стало...
Red Nova вне форума  
 
Непрочитано 26.09.2013, 12:40
#76
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA, Прошу проверить SHTUPDALL на 2013x64. У меня зависает. И действия аналогичные #75 не помогли.
При этом SHTUPD работает корректно.

Код:
[Выделить все]
 (defun C:SHTUPDALL ()(update-shtamp-block nil))
(defun C:SHTUPD ()(update-shtamp-block (getvar "CTAB")))
;; obj - Ename or Vla object of block
;; att_list - list ((Tag_Name1 . Value1)(Tag_Name2 . Value2) ...)
;; Tag_Name - string
;; Value - string

(defun mip-block-setattr-bylist (obj att_list / txt lst)(vl-load-com)
(if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
(setq att_list (mapcar '(lambda(x)(cons (strcase (mip-conv-to-str(car x)))(mip-conv-to-str(cdr x)))) att_list))
(if (and obj
(not(vlax-erased-p obj))
(= (vla-get-ObjectName obj) "AcDbBlockReference")
(eq :vlax-true (vla-get-HasAttributes obj))
(vlax-property-available-p obj 'Hasattributes)
(vlax-write-enabled-p obj)
)
(vl-catch-all-apply
(function
(lambda ()
(foreach at (vlax-invoke obj 'Getattributes)
(if (setq lst (assoc(strcase(vla-get-TagString at)) att_list))
(vla-put-TextString at (cdr lst))
)
)
)
)
)
)
)
(defun mip-conv-to-str (dat)
(cond ((= (type dat) 'INT)(setq dat (itoa dat)))
((= (type dat) 'REAL)(setq dat (rtos dat 2 12)))
((null dat)(setq dat ""))
(t (setq dat (vl-princ-to-string dat)))))
;;;csp - имя листа (getvar "CTAB")
;;; или nil - все листы
;;(setq csp (getvar "CTAB"))
(defun update-shtamp-block ( csp / ss i n Target-Tag-Name attValue ch )
(setq Target-Tag-Name "ЛИСТ") ;_ ТАГ (имя) атрибута блока
(if csp
(setq ss
(ssget "_X" (list
'(0 . "INSERT")
'(66 . 1)
(cons 410 csp)
)
)
)
(setq ss
(ssget "_X" (list
'(0 . "INSERT")
'(66 . 1)
)
)
)
)
(repeat (setq n (sslength ss)) ;_ end setq
(cdr(assoc 410(entget (setq item (ssname ss (setq n (1- n)))))))

(if (/= (setq attValue (cdr(assoc 410 (entget item)))) "Model" )
(progn
(setq i 0)
(while (or
(not(wcmatch (setq ch (substr attValue (setq i (1+ i)) 1)) "#"))
(= ch "")
)
)
(setq attValue (substr attValue i))
(mip-block-setattr-bylist item (list(cons Target-Tag-Name attValue)))
)
)
) ;_ end
)
Red Nova вне форума  
 
Непрочитано 18.04.2014, 16:05
#77
zz07


 
Регистрация: 01.07.2007
Москва
Сообщений: 26


Здравствуйте! Спасибо за лисп!
Можно ли как-то применить ваш лисп для автоматической нумерации в штампе?
Например имена layout'ов у меня "1", "2", "3", "4" и штампах листов стоят соответствующие номера листов. При удалении layout 2, перенумеровывая layout на "1", "2", "3" с помощью лиспа, чтобы номера в штампе соответственно изменились.
И еще, можно ли как-то в названии каждого листа зафиксировать собственный текст, а именно: Layout'ы называются "План л.1", "Разрез л.2", "Армирование л.3" и при удалении листа №2, чтобы было "План л.1", "Армирование л.2"

Последний раз редактировалось zz07, 18.04.2014 в 16:17.
zz07 вне форума  
 
Автор темы   Непрочитано 21.04.2014, 20:15
#78
VVA

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


Цитата:
Сообщение от zz07 Посмотреть сообщение
При удалении layout 2, перенумеровывая layout на "1", "2", "3" с помощью лиспа, чтобы номера в штампе соответственно изменились.
Вставь в штамп поле. Категория Прочее->Системная переменная->CTAB
Эта переменная ссылается на имя текущего листа
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.04.2014, 11:26
#79
Isuma

конструктор
 
Регистрация: 29.09.2008
Санкт-Петербург
Сообщений: 159
<phrase 1=


Товарищи, а на 2015 Acadе не работает?
эммм..работает. просто сразу не подгрузился, почему-то
__________________
Идеал оптимизации - это когда жмёшь куда попало, а получаешь то, что нужно.

Последний раз редактировалось Isuma, 28.04.2014 в 11:28. Причина: Подождал
Isuma вне форума  
 
Непрочитано 29.05.2014, 23:17
#80
zz07


 
Регистрация: 01.07.2007
Москва
Сообщений: 26


Цитата:
Сообщение от VVA Посмотреть сообщение
Категория Прочее->Системная переменная->CTAB
У меня эта переменная ссылается на текст который написан в имени layout. Т.е. у меня написано "лист 2" и поле выводит "лист 2", а не просто номер.
zz07 вне форума  
 
Автор темы   Непрочитано 29.05.2014, 23:26
#81
VVA

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


zz07, А что мешает переименовать "Лист 2" в "2"?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 30.05.2014, 11:00
#82
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


В поле
Other - Diesel Expression
$(substr,$(getvar,CTAB),6)
Red Nova вне форума  
 
Непрочитано 18.11.2015, 13:20
#83
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Перешел на 2015х64.
Не работают SHTUPD, SHTUPDALL, остальное работает.

Еще не работает vrc, но это наверное в другую ветку, поищу ка ее...

Код:
[Выделить все]
Command: SHTUPD
nil
Command:

Добавлено. Заработало после того как поменяли в региональных настройках windows US на Russia...

Последний раз редактировалось Red Nova, 18.11.2015 в 14:28.
Red Nova вне форума  
 
Непрочитано 07.04.2016, 17:44
#84
vein2005

как-то, где-то
 
Регистрация: 18.10.2013
мск
Сообщений: 2
<phrase 1=


Доброго дня.
Возможно этот лисп сделать как доп. окно(палитра)?
Спасибо
vein2005 вне форума  
 
Автор темы   Непрочитано 08.04.2016, 23:07
#85
VVA

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


vein2005, извини, не понял вопроса.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.04.2016, 02:07
#86
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


1. Вынесите команды на инструментальную панель.. лисп в автозагрузку, например.
2. Сделайте отдельную панельку, на которой на кнопки посажены вызов команд.
Сергей812 вне форума  
 
Непрочитано 09.04.2016, 04:10
#87
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Сергей812, Например так?
http://forum.dwg.ru/showpost.php?p=1120859&postcount=73
Red Nova вне форума  
 
Непрочитано 09.04.2016, 09:23
#88
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Red Nova, Да, похоже по содержимому архива). Просто даже не знаю, есть ли в лиспе возможность создавать палитры программно, как в NET API/ObjectARX.
VVA можно дополнить ссылкой на панель шапку ветки?
Сергей812 вне форума  
 
Автор темы   Непрочитано 09.04.2016, 22:08
#89
VVA

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


Дополнил
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.03.2022, 12:10
#90
Bi57


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


VVA, доброго дня.
Спасибо огромное за LISP. Очень часто пользуюсь командой LTREN. Но когда переименовываю листы, старые названия пропадают.
Пример:
"ОД" "ПЛАН" "СПЕЦ" -> "1" "2" "3"
Возможно ли добавить функцию аналогичную LTREN, которая оставляет старые названия листов и добавляет префикс с увеличением порядкового цифрового номера?
Пример:
"ОД" "ПЛАН" "СПЕЦ" -> "1 ОД" "2 ПЛАН" "3 СПЕЦ"
Bi57 вне форума  
 
Непрочитано 20.03.2022, 18:22
1 | 1 #91
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,298
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Bi57 Посмотреть сообщение
Возможно ли добавить функцию аналогичную LTREN, которая оставляет старые названия листов и добавляет префикс с увеличением порядкового цифрового номера?
Не лисп конечно, но может
https://doctorraz.blogspot.com/2016/...ename.html?m=1
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 21.03.2022, 00:08
#92
Bi57


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


doctorraz, интересная программа. Функционал намного больше, только выделение нужны страниц удобно было бы выполнять через shift.
Но я не смог найти в ней решение моего вопроса, а именно возможность добавления префикса, который будет увеличивать свой порядок.
Пример:
"ОД" "ПЛАН" "СПЕЦ" -> "1 ОД" "2 ПЛАН" "3 СПЕЦ"
Возможно добавить постоянный префикс/суффикс нашел.
Bi57 вне форума  
 
Автор темы   Непрочитано 23.03.2022, 18:05
1 | #93
VVA

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


Цитата:
Сообщение от Bi57 Посмотреть сообщение
Возможно ли добавить функцию аналогичную LTREN, которая оставляет старые названия листов и добавляет префикс с увеличением порядкового цифрового номера?
Пример:
"ОД" "ПЛАН" "СПЕЦ" -> "1 ОД" "2 ПЛАН" "3 СПЕЦ"
Добавил в команду LTREN запрос на сохранение названия листа. Скачай файл layout2013.lsp заново и пробуй
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.03.2022, 13:21
#94
Bi57


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


VVA, Попробовал, все отлично работает. Спасибо огромное, теперь и нумерация есть, и ориентироваться по листам можно быстро.
Bi57 вне форума  
 
Непрочитано 08.12.2023, 13:15
#95
Archeo

архитектор
 
Регистрация: 02.04.2006
Беларусь
Сообщений: 349


Здравствуйте. К вопросу о сортировке (в какой-то степени). Поиском не нашёл. Есть ли какой-нибудь LISP для ВЫБОРА произвольного количества вкладок листов через диалоговое окно? Нередко количество вкладок таково, что не помещается в границы экрана. Да и визуально в окошке более понятно было бы. Просто цвет выделенных и невыделенных вкладок почти не отличается, а перекрасить возможности нет, насколько я знаю.
Archeo вне форума  
 
Непрочитано 08.12.2023, 13:59
#96
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Archeo Посмотреть сообщение
Есть ли какой-нибудь LISP для ВЫБОРА произвольного количества вкладок листов через диалоговое окно? Нередко количество вкладок таково, что не помещается в границы экрана. Да и визуально в окошке более понятно было бы. Просто цвет выделенных и невыделенных вкладок почти не отличается, а перекрасить возможности нет, насколько я знаю.
подшивка, однако) это если без программирования.
Сергей812 вне форума  
 
Непрочитано 08.12.2023, 14:11
#97
Archeo

архитектор
 
Регистрация: 02.04.2006
Беларусь
Сообщений: 349


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
подшивка
Для меня - да) Для большинства других пользователей, которые только знакомятся с пространством листа и изо всех сил сопротивляются - нет...
Archeo вне форума  
 
Непрочитано 29.05.2024, 13:34
#98
Walkmax


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


VVA, можно дополнить вашу layout.lsp функцией группового экспорта выбранных вкладок в файлы модели (по аналогии с кодом из https://forum.dwg.ru/showpost.php?p=...3&postcount=17), с соблюдением уже реализованного вами стиля работы с окнами выбора листов?
Walkmax вне форума  
 
Непрочитано 26.07.2024, 21:25
#99
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA, Доброго и надеюсь у тебя все в порядке! ։)
Имею следующие листы в файле։
CS1.1a, CS1.1b, CS1.1c, CS2.1
При активном листе CS1.1a требуется создать новый лист с именем CS1.2a и при этом он должен быть между CS1.1c и CS2.1. То есть список листов должен получится такой։
CS1.1a, CS1.1b, CS1.1c, CS1.2a, CS2.1
(LTINC nil) создает лист CS1.2a, однако он оказывается не на том месте. Получаю такой результат։
CS1.1a, CS1.2a, CS1.1b, CS1.1c, CS2.1
Прошу глянуть если будет возможность.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 29.07.2024, 21:34
#100
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Разобрался... Добавил следующее в код до копирования листа.

Код:
[Выделить все]
(while
	(<= j 3)
	(if
	  (wcmatch (nth i layout_names)(strcat "*" (LM:rtos (car (LM:parsenumbers old_layout_name))2 1) "*"))
	  (setq i (1+ i)))
	(setq j (1+ j))
	  )
__________________
Блог
Red Nova вне форума  
 
Непрочитано 04.09.2024, 21:32
#101
S_Vitaliy


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


Откорректировал русифицированный VVA Lee Mac`овский Tabsort из шапки для удобства работы с длинными наименованиями листов. Правила оформления своих изменений в чужом коде не знаю, поэтому прошу не закидывать меня помидорами и не считать данные изменения нарушением авторских прав.

Код:
[Выделить все]
 ;;;url http://lee-mac.com/tabsort.html
;; Translate fo russian - Vladimir Azarko (VVA)
;;--------------------=={ TabSort.lsp }==---------------------;;
;;                                                            ;;
;;  A program designed with the intention to aid in the       ;;
;;  organisation of layout tabs in a drawing.                 ;;
;;                                                            ;;
;;  The program enables the user to organise each layout tab  ;;
;;  using buttons to move the tabs up, down, to the top, and  ;;
;;  to the bottom of a list.                                  ;;
;;                                                            ;;
;;  The user may rename any layout by double clicking on it,  ;;
;;  and can also add a Prefix and/or Suffix to selected/every ;;
;;  layout tab.                                               ;;
;;                                                            ;;
;;  The program offers the facility to add and delete a       ;;
;;  layout tab, and also sort the tabs alphabetically,        ;;
;;  numerically, architecturally; or reverse the order in     ;;
;;  which they appear.                                        ;;
;;                                                            ;;
;;  A Find and Replace function is incorporated to allow the  ;;
;;  user to quickly replace a text string in multiple tabs.   ;;
;;                                                            ;;
;;  The user can also Copy a layout tab, and set the Selected ;;
;;  layout tab as the current tab.                            ;;
;;                                                            ;;
;;  The Help Dialog can be access by pressing "H" at the Main ;;
;;  Dialog.                                                   ;;
;;                                                            ;;
;;------------------------------------------------------------;;
;;                                                            ;;
;;  FUNCTION SYNTAX:  TABSORT                                 ;;
;;                                                            ;;
;;  Notes:-                                                   ;;
;;  The Reset button will reset Tab Order and Tab Names, but  ;;
;;  will not affect newly created tabs and will not recreate  ;;
;;  deleted tabs.                                             ;;
;;                                                            ;;
;;  In the case that multiple tabs are selected, the Current  ;;
;;  button will set the tab with the lowest index (highest in ;;
;;  the list) as the current tab.                             ;;
;;                                                            ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;                                                            ;;
;;  With Thanks To:                                           ;;
;;  --------------------                                      ;;
;;  Gilles Chanteau (Gile)                                    ;;
;;                                                            ;;
;;  For his fantastic contribution to the list manipulation   ;;
;;  required for multiple DCL selections, and effort towards  ;;
;;  the Architectural Sort functions.                         ;;
;;                                                            ;;
;;------------------------------------------------------------;;
;;  Charles Alan Butler (CAB)                                 ;;
;;                                                            ;;
;;  For his excellent idea to incorporate the Help button for ;;
;;  those who need it.                                        ;;
;;                                                            ;;
;;------------------------------------------------------------;;
;;  Version:                                                  ;;
;;                                                            ;;
;;  1.0    -  13th September 2009                             ;;
;;                                                            ;;
;;  First Release                                             ;;
;;------------------------------------------------------------;;
;;  1.1    -  14th September 2009                             ;;
;;                                                            ;;
;;  Added Mnemonics to Tiles                                  ;;
;;  Added text to notify of double-click availability         ;;
;;  Added option to only pref/suff selected tab               ;;
;;------------------------------------------------------------;;
;;  1.2    -  15th September 2009                             ;;
;;                                                            ;;
;;  Added Numerical Sort                                      ;;
;;  General Bug Fixes                                         ;;
;;------------------------------------------------------------;;
;;  1.3    -  15th September 2009                             ;;
;;                                                            ;;
;;  Multi-tab Selection Functionality                         ;;
;;------------------------------------------------------------;;
;;  1.4    -  16th September 2009                             ;;
;;                                                            ;;
;;  Added Button to Set Current Tab                           ;;
;;  Added Copy Tab Functionality                              ;;
;;------------------------------------------------------------;;
;;  1.5    -  17th September 2009                             ;;
;;                                                            ;;
;;  Fixed Bug to Copy Layout Plot Settings                    ;;
;;------------------------------------------------------------;;
;;  1.6    -  18th September 2009                             ;;
;;                                                            ;;
;;  Modified Action_Tile Stmts ~ Thanks VovKa                 ;;
;;  Added Architectural Sort Button                           ;;
;;------------------------------------------------------------;;
;;  1.6.1  -  19th September 2009                             ;;
;;                                                            ;;
;;  Fixed Bugs ~ Thanks for feedback CAB                      ;;
;;------------------------------------------------------------;;
;;  1.7    -  20th September 2009                             ;;
;;                                                            ;;
;;  Added Find & Replace Functionality                        ;;
;;  Organised buttons/Added Sort Dialog                       ;;
;;------------------------------------------------------------;;
;;  1.7.1  -  20th September 2009                             ;;
;;                                                            ;;
;;  Replaced StrBrk sub with SplitStr (Gile)                  ;;
;;------------------------------------------------------------;;
;;  1.8    -  21st September 2009                             ;;
;;                                                            ;;
;;  Added hidden Help Button (CAB)                            ;;
;;  Added Help Dialog Definition                              ;;
;;------------------------------------------------------------;;
;;  1.8.1  -  22nd September 2009                             ;;
;;                                                            ;;
;;  General Bug Fixes                                         ;;
;;------------------------------------------------------------;;
;;  1.8.2  -  23rd September 2009                             ;;
;;                                                            ;;
;;  Fixed Bug causing crash when Deleting all                 ;;
;;  Tabs ~ thanks VovKa                                       ;;
;;------------------------------------------------------------;;
;;  1.9    -     2nd October 2009                             ;;
;;                                                            ;;
;;  Modified Reverse function to only apply to selected Tabs. ;;
;;  Altered Help Dialog to ok_only button                     ;;
;;------------------------------------------------------------;;
;;  2.0    -       22nd July 2010                             ;;
;;                                                            ;;
;;  Fixed Bug with Find/Replace.                              ;;
;;------------------------------------------------------------;;
;;  2.1    -    9th December 2010                             ;;
;;                                                            ;;
;;  Fixed Bug with Double Reversal                            ;;
;;------------------------------------------------------------;;
;;  2.2    -        16th May 2011                             ;;
;;                                                            ;;
;;  Program completely rewritten to update formatting.        ;;
;;  Upgraded Find & Replace engine to allow for               ;;
;;  self-referencing find and replace terms and improved      ;;
;;  visual feedback.                                          ;;
;;  Updated list manipulation subfunctions.                   ;;
;;------------------------------------------------------------;;

(setq TabSortVersion# "2-2a_SV")
(setq IsRus# (= (getvar "DWGCODEPAGE") "ANSI_1251"))

;;------------------------------------------------------------;;

(defun c:TabSort

  ( /

   ;; --={  Local Functions  }=--

   *error*
   _addtab
   _archsort
   _copytab
   _deletetabs
   _endundo
   _findreplacetab
   _getlayouts
   _getsavepath
   _list->value
   _listdown
   _listtobottom
   _listtotop
   _listup
   _makelist
   _numsort
   _removeitems
   _removenth
   _renametab
   _reverseitems
   _splitstr
   _startundo
   _tabprefixsuffix
   _tabsort
   _tabsorthelp
   _value->list
   _writedcl

   ;; --={  Local Variables  }=--

   acdoc
   aclay
   aclays
   dch
   dclfname
   dclst
   dcltitle
   express
   found
   fstr
   i
   idx
   l
   lst
   name
   ofile
   pref
   ptr
   reslst
   rstr
   savepath
   suff
   x

   ;; --={  Global Variables  }=--
 
   ;  *prefdef*  -  Setting to Apply a Prefix/Suffix to All Tabs
   ;  *SortTyp*  -  Sort Type Settings
   ;  *SortOrd*  -  Sort Order Settings

  )

;;------------------------------------------------------------;;
;;                       Local Functions                      ;;
;;------------------------------------------------------------;;

  (defun *error* ( msg )
    (if acdoc (_EndUndo acdoc))
    (if (and dch (< 0 dch)) (unload_dialog dch))
    (if (and ofile (eq 'FILE (type ofile))) (setq ofile (close ofile)))
    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
        (princ (strcat "\n** Error: " msg " **")))
    (princ)
  )

;;------------------------------------------------------------;;

  (defun _StartUndo ( doc ) (_EndUndo doc)
    (vla-StartUndoMark doc)
  )

  (defun _EndUndo ( doc )
    (if (= 8 (logand 8 (getvar 'UNDOCTL)))
      (vla-EndUndoMark doc)
    )
  )

;;------------------------------------------------------------;;

  (defun _value->list ( val ) (read (strcat "(" val ")")))

  (defun _list->value ( lst ) (vl-string-trim "()" (vl-princ-to-string lst)))

;;------------------------------------------------------------;;

  (defun _GetLayouts ( layouts / lst )
    (vlax-for l layouts
      (if (not (eq "MODEL" (strcase (vla-get-Name l))))
        (setq lst (cons l lst))
      )
    )    
    (vl-sort lst '(lambda ( a b ) (< (vla-get-TabOrder a) (vla-get-TabOrder b))))
  )

;;------------------------------------------------------------;;

  (defun _MakeList ( key lst )
    (start_list key) (mapcar 'add_list lst) (end_list)
  )

;;------------------------------------------------------------;;

  (defun _GetSavePath ( / tmp )
    (cond      
      ( (setq tmp (getvar 'ROAMABLEROOTPREFIX))

        (strcat (vl-string-right-trim "\\" (vl-string-translate "/" "\\" tmp)) "\\Support")
      )
      ( (setq tmp (findfile "ACAD.pat"))

        (vl-string-right-trim "\\" (vl-string-translate "/" "\\" (vl-filename-directory tmp)))
      )
    )
  )

;;------------------------------------------------------------;;

  (defun _WriteDCL ( fname / ofile )
    (cond
      (
        (findfile fname)
      )
      ( (setq ofile (open fname "w"))
       
(if IsRus#
  (foreach line
         '(
            "//---------------------=={ TabSort.dcl }==--------------------//"
            "//                                                            //"
            "//  Dialog Definition file for use in conjunction with        //"
            "//  TabSort.lsp                                               //"
            "//------------------------------------------------------------//"
            "//  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       //"
            "//------------------------------------------------------------//"
            ""
            "dcl_settings : default_dcl_settings { audit_level = 1; }"
            ""
            "//------------------------------------------------------------//"
            "//                   SubAssembly Definitions                  //"
            "//------------------------------------------------------------//"
            ""
            "button13 : button   { width = 21; alignment = centered; fixed_width = true; }"
            "button16 : button   { width = 21; alignment = centered; fixed_width = true; }"
            "    eBox : edit_box { alignment = centered; fixed_width = true; allow_accept = true; is_tab_stop = true; }"
            "    fBox : edit_box { alignment = left; fixed_width = true; is_tab_stop = true; }"
            "   title : text     { alignment = centered; is_bold = true; fixed_width = false;}"
            "     txt : text     { alignment = centered; fixed_width = false; }"
            "    ltxt : text     { alignment = left;     fixed_width = false; }"
            ""
            "//------------------------------------------------------------//"
            "//                        Main Dialog                         //"
            "//------------------------------------------------------------//"
            ""
            "tabsort : dialog { key = \"dcltitle\";"
            ""
            "  : image_button { key = \"help\"; label = \"&help\"; color = -15; height = 0.1; width = 0.1; fixed_width = false; }"
            "  spacer;"
            "  "
            "  : row {"
            "    : button13 { key = \"mtop\"; label = \"Вверх\"  ; mnemonic = \"В\"; }"
            "    : button13 { key = \"up\"  ; label = \"Выше\"   ; mnemonic = \"ы\"; }"
            "    : button13 { key = \"down\"; label = \"Ниже\"   ; mnemonic = \"Н\"; }"
            "    : button13 { key = \"mbot\"; label = \"Вниз\"   ; mnemonic = \"и\"; }"
            "  }"
            "  "
            "  : list_box { key = \"tabs\"; width = 120; fixed_width = false; height = 40; alignment = centered;  multiple_select = true; }"
            "  "
            "  : row {"
            "    : button13 { key = \"sort\"; label = \"Сортировать...\"  ; mnemonic = \"С\"; }"
            "    : button13 { key = \"rev\" ; label = \"Реверс\"          ; mnemonic = \"Р\"; }"
            "    : button13 { key = \"p_s\" ; label = \"Префикс/Суффикс\" ; mnemonic = \"П\"; }"
            "    : button13 { key = \"cur\" ; label = \"Текущий\"         ; mnemonic = \"Т\"; }"
            "  }"
            "  "
            "  spacer;"
            "  "
            "  : row { fixed_width = false;"
            "    : button13 { key = \"add\"   ; label = \"Добавить\"    ; mnemonic = \"Д\"; }"
            "    : button13 { key = \"del\"   ; label = \"Удалить\"     ; mnemonic = \"У\"; }"
            "    : button13 { key = \"copy\"  ; label = \"Копировать\"  ; mnemonic = \"К\"; }"
            "    : button13 { key = \"fnr\"   ; label = \"Найти\"       ; mnemonic = \"Н\"; }"
            "  }"
            "  "
            "  : text { label = \"Double-click для Переименования листа, Нажмите H (лат) для помощи\" ; alignment = centered; }"
            "  "
            "  : row  { fixed_width = true ; alignment = centered;"
            "    : button13 { key = \"accept\"; label = \"Выполнить\"   ; mnemonic = \"о\"; is_default = true; is_cancel = true; }"
            "    : button13 { key = \"res\"   ; label = \"Сброс\"       ; mnemonic = \"С\"; }               "
            "  }"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        Rename Dialog                       //"
            "//------------------------------------------------------------//"
            ""
            "rename : dialog { label = \"Переименовать Лист\"; spacer;"
            "  : eBox { key = \"name\"; edit_width = 120; edit_limit = 255; label = \"Новое имя:\"; }"
            "  : errtile { } "
            "  spacer; ok_cancel;"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                    Delete Warning Dialog                   //"
            "//------------------------------------------------------------//"
            ""
            "delwarn : dialog { label = \"Внимание\"; spacer;"
            "  : text { alignment = centered; label = \"Выбранные листы будут удалены\"; }"
            "  : text { alignment = centered; label = \"Продолжить?\"; }"
            "  spacer; ok_cancel;"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                    Prefix/Suffix Dialog                    //"
            "//------------------------------------------------------------//"
            ""
            "prefsuff : dialog { label = \"Добавить префикс - суффикс\"; spacer;"
            ""
            "  : row {"
            "    : column {"
            "      : text { alignment = centered; label = \"Префикс\"; }"
            "      : eBox { key = \"pref\"; edit_width = 15; edit_limit = 255; }"
            "    }"
            "    : column {"
            "      : spacer { alignment = centered; width = 10; }"
            "      : text   { alignment = centered; label = \"< Имя листа >\"; }"
            "    }"
            "    : column {"
            "      : text { alignment = centered; label = \"Суффикс\"; }"
            "      : eBox { key = \"suff\"; edit_width = 15; edit_limit = 255; }"
            "    }"
            "  }  "
            "  spacer;"
            "  "
            "  : row { spacer;"
            "    : toggle { key = \"all\"; label = \"Применить ко всем листам\"; mnemonic = \"П\"; alignment = right; is_tab_stop = true; }"
            "  }"
            "  : errtile { } ok_cancel;"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        Find Dialog                         //"
            "//------------------------------------------------------------//"
            ""
            "find : dialog { label = \"Найти и заменить\"; spacer;"
            ""
            "  : row {"
            "    : column { fixed_height = true;"
            "      : text { key = \"fw\"  ; label = \"Найти:\"           ; }"
            "      : fBox { key = \"fstr\"; edit_width = 30; mnemonic = \"Н\"; }"
            "      : text { key = \"rw\"  ; label = \"Заменить:\"        ; }"
            "      : fBox { key = \"rstr\"; edit_width = 30; mnemonic = \"З\"; }"
            "    }"
            "    : spacer { width = 4; }"
            "    : column { fixed_height = true;"
            "      : spacer   { height = 0.2   ; }"
            "      : button16 { key = \"fnd\"  ; label = \"Найти\"       ; mnemonic = \"Н\"; }"
            "      : button16 { key = \"rep\"  ; label = \"Заменить\"    ; mnemonic = \"З\"; }"
            "      : button16 { key = \"repa\" ; label = \"Заменить ВСЕ\"; mnemonic = \"В\"; }"
            "    }"
            "  }"
            "  "
            "  spacer;"
            "  : text { key = \"ftxt\"; alignment = left; label = \"Строка не найдена!\"; value = \"\"; }"
            "  spacer;"
            "  : button13 { key = \"accept\";    label = \"Выполнить\"    ; mnemonic = \"о\"; is_default = true; is_cancel = true  ; }"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        Sort Dialog                         //"
            "//------------------------------------------------------------//"
            ""
            "sort : dialog { label = \"Сортировка\"; spacer;"
            ""
            "  : boxed_column { label = \"Тип сортировки\";"
            "  "
            "    : popup_list { key = \"typ\"; alignment = centered; }"
            "    "
            "    spacer;"
            "    "
            "    : radio_row { children_alignment = centered;"
            "      : radio_button { key = \"asc\"; label = \"по Возрастанию\" ; }"
            "      : radio_button { key = \"des\"; label = \"по Убыванию\"; }"
            "    }"
            "    spacer;"
            "  }"
            "  "
            "  spacer;"
            "  "
            "  : row { fixed_width = false; alignment = centered;"
            "    : button13 { key = \"accept\"; label = \"Сортируй\"  ; mnemonic = \"С\"; is_default = true; }"
            "    : button13 { key = \"cancel\"; label = \"Отмена\"; mnemonic = \"О\"; is_cancel  = true; }"
            "  }"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        Help Dialog                         //"
            "//------------------------------------------------------------//"
            ""
            "help : dialog { key = \"htitle\";"
            "  spacer; : title { label = \"  ---------------------=={ TabSort.lsp }==---------------------  \" ; }"
            "  spacer; : title { label = \"Designed and Created by Lee Mac 2011\" ; }"
            "  spacer; : title { label = \"Translation of Vladimir Azarko (VVA) 2012\" ; }"
            "  spacer; : ltxt  { label = \"   Program Controls:\" ; }"
            "  spacer;"
            "  : row { fixed_width = true; alignment = centered;"
            "    : column {"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"-->\"   ; }"
            "       : txt { label = \"-->\"   ; }"
            "       : txt { label = \"-->\"   ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "    }"
            "    : column {"
            "       : txt { label = \"Вверх\"          ; }"
            "       : txt { label = \"Выше\"           ; }"
            "       : txt { label = \"Ниже\"         ; }"
            "       : txt { label = \"Вниз\"       ; }"
            "       : txt { label = \"Сортировка\"         ; }"
            "       : txt { label = \"Тексовый\" ; }"
            "       : txt { label = \"Цифровой\"    ; }"
            "       : txt { label = \"Архитектурный\"; }"
            "       : txt { label = \"Реверс\"      ; }"
            "       : txt { label = \"Префикс/Суффикс\"    ; }"
            "       : txt { label = \"Добавь\"          ; }"
            "       : txt { label = \"Удали\"       ; }"
            "       : txt { label = \"Копируй\"         ; }"
            "       : txt { label = \"Текущий\"      ; }"
            "       : txt { label = \"Найти\"         ; }"
            "       : txt { label = \"Выполнить\"         ; }"
            "       : txt { label = \"Сброс\"        ; }"           

            "    }"
            "    : column {"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"<--\"   ; }"
            "       : txt { label = \"<--\"   ; }"
            "       : txt { label = \"<--\"   ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "    }"
            "    spacer;"
            "    : column {"
            "      : ltxt { label = \"Переместить выделенные листы на верх списка листов.\"   ; }"
            "      : ltxt { label = \"Переместить выделенные листы на позицию выше списка листов.\"           ; }"
            "      : ltxt { label = \"Переместить выделенные листы на позицию ниже списка листов.\"         ; }"
            "      : ltxt { label = \"Переместить выделенные листы вниз списка листов.\"          ; }"
            "      : ltxt { label = \"Открыть диалог сортировки листов.\"                                 ; }"
            "      : ltxt { label = \"Сортировать листы как текст ( 1.1 1.10 1.2).\"                          ; }"
            "      : ltxt { label = \"Сортировать листы как числа ( 1.1 1.2 1.10).\"                             ; }"
            "      : ltxt { label = \"Сортировать используя архитектурный метод сортировки.\"   ; }"
            "      : ltxt { label = \"Реверсировать выделенные листы.\"                                 ; }"
            "      : ltxt { label = \"Открыть диалог добавления префикса/суффикса.\"                        ; }"
            "      : ltxt { label = \"Добавить новый лист.\"   ; }"
            "      : ltxt { label = \"Удалить выделенные листы.\"                             ; }"
            "      : ltxt { label = \"Копировать выделенные листы.\"                              ; }"
            "      : ltxt { label = \"Установить выбранный лист текущим.\"                ; }"
            "      : ltxt { label = \"Открыть диалог Найти/Заменить.\"                     ; }"
            "      : ltxt { label = \"Выполнить сортировку листов.\"         ; }"
            "      : ltxt { label = \"Сбросить действия - листы не удаляются и не добавляются\"; }"
            "    }"
            "  }"
            "  spacer_1;"
            "  : title { label = \"-------------------------------------------------------------\" ; }"
            "  spacer_1; ok_only;"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        End of File                         //"
            "//------------------------------------------------------------//"
          )
          (write-line line ofile)
        )
        (foreach line
         '(
            "//---------------------=={ TabSort.dcl }==--------------------//"
            "//                                                            //"
            "//  Dialog Definition file for use in conjunction with        //"
            "//  TabSort.lsp                                               //"
            "//------------------------------------------------------------//"
            "//  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       //"
            "//------------------------------------------------------------//"
            ""
            "dcl_settings : default_dcl_settings { audit_level = 1; }"
            ""
            "//------------------------------------------------------------//"
            "//                   SubAssembly Definitions                  //"
            "//------------------------------------------------------------//"
            ""
            "button13 : button   { width = 13; alignment = centered; fixed_width = true; }"
            "button16 : button   { width = 16; alignment = centered; fixed_width = true; }"
            "    eBox : edit_box { alignment = centered; fixed_width = true; allow_accept = true; is_tab_stop = true; }"
            "    fBox : edit_box { alignment = left; fixed_width = true; is_tab_stop = true; }"
            "   title : text     { alignment = centered; is_bold = true; fixed_width = false;}"
            "     txt : text     { alignment = centered; fixed_width = false; }"
            "    ltxt : text     { alignment = left;     fixed_width = false; }"
            ""
            "//------------------------------------------------------------//"
            "//                        Main Dialog                         //"
            "//------------------------------------------------------------//"
            ""
            "tabsort : dialog { key = \"dcltitle\";"
            ""
            "  : image_button { key = \"help\"; label = \"&help\"; color = -15; height = 0.1; width = 0.1; fixed_width = true; }"
            "  spacer;"
            "  "
            "  : row {"
            "    : button13 { key = \"mtop\"; label = \"Top\"      ; mnemonic = \"T\"; }"
            "    : button13 { key = \"up\"  ; label = \"Up\"       ; mnemonic = \"U\"; }"
            "    : button13 { key = \"down\"; label = \"Down\"     ; mnemonic = \"D\"; }"
            "    : button13 { key = \"mbot\"; label = \"Bottom\"   ; mnemonic = \"B\"; }"
            "  }"
            "  "
            "  : list_box { key = \"tabs\"; width = 20; fixed_width = false; alignment = centered;  multiple_select = true; }"
            "  "
            "  : row {"
            "    : button13 { key = \"sort\"; label = \"Sort...\"  ; mnemonic = \"S\"; }"
            "    : button13 { key = \"rev\" ; label = \"Reverse\"  ; mnemonic = \"R\"; }"
            "    : button13 { key = \"p_s\" ; label = \"Pref/Suff\"; mnemonic = \"P\"; }"
            "    : button13 { key = \"cur\" ; label = \"Current\"  ; mnemonic = \"n\"; }"
            "  }"
            "  "
            "  spacer;"
            "  "
            "  : row { fixed_width = false;"
            "    : button13 { key = \"add\"   ; label = \"Add\"    ; mnemonic = \"A\"; }"
            "    : button13 { key = \"del\"   ; label = \"Delete\" ; mnemonic = \"e\"; }"
            "    : button13 { key = \"copy\"  ; label = \"Copy\"   ; mnemonic = \"C\"; }"
            "    : button13 { key = \"fnr\"   ; label = \"Find\"   ; mnemonic = \"F\"; }"
            "  }"
            "  "
            "  : text { label = \"Double-click to Rename a Tab, Press H for Help\" ; alignment = centered; }"
            "  "
            "  : row  { fixed_width = true ; alignment = centered;"
            "    : button13 { key = \"accept\"; label = \"Done\"   ; mnemonic = \"o\"; is_default = true; is_cancel = true; }"
            "    : button13 { key = \"res\"   ; label = \"Reset\"  ; mnemonic = \"s\"; }               "
            "  }"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        Rename Dialog                       //"
            "//------------------------------------------------------------//"
            ""
            "rename : dialog { label = \"Rename Tab\"; spacer;"
            "  : eBox { key = \"name\"; edit_width = 20; edit_limit = 255; label = \"Tab Name:\"; }"
            "  : errtile { } "
            "  spacer; ok_cancel;"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                    Delete Warning Dialog                   //"
            "//------------------------------------------------------------//"
            ""
            "delwarn : dialog { label = \"Warning\"; spacer;"
            "  : text { alignment = centered; label = \"The Selected Tab(s) will be Permanently Deleted\"; }"
            "  : text { alignment = centered; label = \"Proceed?\"; }"
            "  spacer; ok_cancel;"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                    Prefix/Suffix Dialog                    //"
            "//------------------------------------------------------------//"
            ""
            "prefsuff : dialog { label = \"Add Prefix/Suffix\"; spacer;"
            ""
            "  : row {"
            "    : column {"
            "      : text { alignment = centered; label = \"Prefix\"; }"
            "      : eBox { key = \"pref\"; edit_width = 15; edit_limit = 255; }"
            "    }"
            "    : column {"
            "      : spacer { alignment = centered; width = 10; }"
            "      : text   { alignment = centered; label = \"< Tab Name >\"; }"
            "    }"
            "    : column {"
            "      : text { alignment = centered; label = \"Suffix\"; }"
            "      : eBox { key = \"suff\"; edit_width = 15; edit_limit = 255; }"
            "    }"
            "  }  "
            "  spacer;"
            "  "
            "  : row { spacer;"
            "    : toggle { key = \"all\"; label = \"Apply to all Tabs\"; mnemonic = \"A\"; alignment = right; is_tab_stop = true; }"
            "  }"
            "  : errtile { } ok_cancel;"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        Find Dialog                         //"
            "//------------------------------------------------------------//"
            ""
            "find : dialog { label = \"Find and Replace\"; spacer;"
            ""
            "  : row {"
            "    : column { fixed_height = true;"
            "      : text { key = \"fw\"  ; label = \"Find What:\"           ; }"
            "      : fBox { key = \"fstr\"; edit_width = 30; mnemonic = \"W\"; }"
            "      : text { key = \"rw\"  ; label = \"Replace With:\"        ; }"
            "      : fBox { key = \"rstr\"; edit_width = 30; mnemonic = \"R\"; }"
            "    }"
            "    : spacer { width = 4; }"
            "    : column { fixed_height = true;"
            "      : spacer   { height = 0.2   ; }"
            "      : button16 { key = \"fnd\"  ; label = \"Find\"       ; mnemonic = \"F\"; }"
            "      : button16 { key = \"rep\"  ; label = \"Replace\"    ; mnemonic = \"p\"; }"
            "      : button16 { key = \"repa\" ; label = \"Replace All\"; mnemonic = \"A\"; }"
            "    }"
            "  }"
            "  "
            "  spacer;"
            "  : text { key = \"ftxt\"; alignment = left; label = \"String not Found!\"; value = \"\"; }"
            "  spacer;"
            "  : button13 { key = \"accept\";    label = \"Done\"    ; mnemonic = \"o\"; is_default = true; is_cancel = true  ; }"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        Sort Dialog                         //"
            "//------------------------------------------------------------//"
            ""
            "sort : dialog { label = \"Sort\"; spacer;"
            ""
            "  : boxed_column { label = \"Sort Type\";"
            "  "
            "    : popup_list { key = \"typ\"; alignment = centered; }"
            "    "
            "    spacer;"
            "    "
            "    : radio_row { children_alignment = centered;"
            "      : radio_button { key = \"asc\"; label = \"Ascending\" ; }"
            "      : radio_button { key = \"des\"; label = \"Descending\"; }"
            "    }"
            "    spacer;"
            "  }"
            "  "
            "  spacer;"
            "  "
            "  : row { fixed_width = false; alignment = centered;"
            "    : button13 { key = \"accept\"; label = \"Sort\"  ; mnemonic = \"S\"; is_default = true; }"
            "    : button13 { key = \"cancel\"; label = \"Cancel\"; mnemonic = \"C\"; is_cancel  = true; }"
            "  }"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        Help Dialog                         //"
            "//------------------------------------------------------------//"
            ""
            "help : dialog { key = \"htitle\";"
            "  spacer; : title { label = \"  ---------------------=={ TabSort.lsp }==---------------------  \" ; }"
            "  spacer; : title { label = \"Designed and Created by Lee Mac 2011\" ; }"
            "  spacer; : ltxt  { label = \"   Program Controls:\" ; }"
            "  spacer;"
            "  : row { fixed_width = true; alignment = centered;"
            "    : column {"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"-->\"   ; }"
            "       : txt { label = \"-->\"   ; }"
            "       : txt { label = \"-->\"   ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "       : txt { label = \"[\"     ; }"
            "    }"
            "    : column {"
            "       : txt { label = \"Top\"          ; }"
            "       : txt { label = \"Up\"           ; }"
            "       : txt { label = \"Down\"         ; }"
            "       : txt { label = \"Bottom\"       ; }"
            "       : txt { label = \"Sort\"         ; }"
            "       : txt { label = \"Alphabetical\" ; }"
            "       : txt { label = \"Numerical\"    ; }"
            "       : txt { label = \"Architectural\"; }"
            "       : txt { label = \"Reverse\"      ; }"
            "       : txt { label = \"Pref/Suff\"    ; }"
            "       : txt { label = \"Add\"          ; }"
            "       : txt { label = \"Delete\"       ; }"
            "       : txt { label = \"Copy\"         ; }"
            "       : txt { label = \"Current\"      ; }"
            "       : txt { label = \"Find\"         ; }"
            "       : txt { label = \"Done\"         ; }"
            "       : txt { label = \"Reset\"        ; }"

            "    }"
            "    : column {"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"<--\"   ; }"
            "       : txt { label = \"<--\"   ; }"
            "       : txt { label = \"<--\"   ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "       : txt { label = \"]\"     ; }"
            "    }"
            "    spacer;"
            "    : column {"
                       "      : ltxt { label = \"Move selected Tabs to the top of the list.\"             ; }"
            "      : ltxt { label = \"Move selected Tabs up one notch in the list.\"           ; }"
            "      : ltxt { label = \"Move selected Tabs down one notch in the list.\"         ; }"
            "      : ltxt { label = \"Move selected Tabs to the bottom of the list.\"          ; }"
            "      : ltxt { label = \"Opens the Sort Dialog.\"                                 ; }"
            "      : ltxt { label = \"Sort the Tabs Alphabetically.\"                          ; }"
            "      : ltxt { label = \"Sort the Tabs Numerically.\"                             ; }"
            "      : ltxt { label = \"Sort the Tabs using an Architectural sorting method.\"   ; }"
            "      : ltxt { label = \"Reverse the Tab Order.\"                                 ; }"
            "      : ltxt { label = \"Opens the Prefix/Suffix Dialog.\"                        ; }"
            "      : ltxt { label = \"Adds a new layout Tab using the next available name.\"   ; }"
            "      : ltxt { label = \"Deletes the selected Tabs.\"                             ; }"
            "      : ltxt { label = \"Copies the selected Tabs.\"                              ; }"
            "      : ltxt { label = \"Makes the selected Tab the Current Tab.\"                ; }"
            "      : ltxt { label = \"Opens the Find and Replace Dialog.\"                     ; }"
            "      : ltxt { label = \"Finished sorting Tabs, will implement sorting.\"         ; }"
            "      : ltxt { label = \"Will reset Tab names and order - not deleted/added Tabs\"; }"
            "    }"
            "  }"
            "  spacer_1;"
            "  : title { label = \"-------------------------------------------------------------\" ; }"
            "  spacer_1; ok_only;"
            "}"
            ""
            "//------------------------------------------------------------//"
            "//                        End of File                         //"
            "//------------------------------------------------------------//"
          )
          (write-line line ofile)
        )
  )
        (setq ofile (close ofile))

        (while (not (findfile fname))) fname
      )
    )
  )

;;------------------------------------------------------------;;

  (defun _RemoveNth ( n l )
    (if (and l (< 0 n))
      (cons (car l) (_RemoveNth (1- n) (cdr l)))
      (cdr l)
    )
  )

;;------------------------------------------------------------;;

  (defun _RenameTab ( dchand n lst / name )
    (cond
      (
        (not (new_dialog "rename" dchand))

        (cond
          (Express
            (acet-ui-message "Error Loading Rename Dialog" "Warning" 16)
          )
          (t
            (princ "\n** Error Loading Rename Dialog **")
          )
        )
       
        lst
      )
      (t
        (set_tile  "name" (setq name (nth n lst)))
        (mode_tile "name" 2)

        (action_tile "name" "(setq name $value)")

        (action_tile "accept"
          (vl-prin1-to-string
            (quote
              (progn (set_tile "error" "")
                (cond
                  (
                    (eq "" name)

                    (set_tile "error" "Please Enter a Tab Name")
                  )
                  (
                    (wcmatch (strcase name) "*[<>\\/\\\":;`?`*|`,=]*")

                    (set_tile "error" "Invalid Symbol in Tab Name")
                    (mode_tile "name" 2)
                  )
                  (
                    (vl-position (strcase name) (mapcar 'strcase (_RemoveNth n lst)))

                    (set_tile "error" (strcat name " already exists!"))
                    (mode_tile "name" 2)
                  )
                  ( (done_dialog 1) )
                )
              )
            )
          )
        )

        (if (= 1 (start_dialog))
          (cond
            (
              (eq name (nth n lst))

              lst
            )
            (
              (vl-catch-all-error-p
                (vl-catch-all-apply 'vla-put-Name (list (vla-item aclay (nth n lst)) name))
              )
              (cond
                (Express
                  (acet-ui-message "Error Renaming Tab" "Warning" 16)
                )
                (t
                  (alert "\n** Error Renaming Tab **")
                )
              )
              lst
            )
            ( (subst name (nth n lst) lst) )
          )
          lst
        )
      )
    )
  )

;;------------------------------------------------------------;;

  (defun _ListUp ( ind lst ) ; (Gile)
    (cond
      ( (or (null ind) (null lst))

        lst
      )
      ( (= 0  (car ind))

        (cons (car  lst) (_ListUp (cdr (mapcar '1- ind)) (cdr lst)))
      )
      ( (= 1  (car ind))

        (cons (cadr lst) (_ListUp (cdr (mapcar '1- ind)) (cons (car lst) (cddr lst))))
      )
      ( t

        (cons (car  lst) (_ListUp (mapcar '1- ind) (cdr lst)))
      )
    )
  )

;;------------------------------------------------------------;;

  (defun _ListDown ( idx lst )
    (reverse
      (_ListUp
        (reverse
          (mapcar '(lambda ( x ) (- (1- (length lst)) x)) idx)
        )
        (reverse lst)
      )
    )
  )

;;------------------------------------------------------------;;

  (defun _RemoveItems ( idx lst / i )
    (setq i -1)
    (vl-remove-if '(lambda ( x ) (member (setq i (1+ i)) idx)) lst)
  )

;;------------------------------------------------------------;;

  (defun _ListToTop ( idx lst )
    (append (mapcar '(lambda ( i ) (nth i lst)) idx) (_RemoveItems idx lst))
  )

;;------------------------------------------------------------;;

  (defun _ListToBottom ( idx lst ) 
    (append (_RemoveItems idx lst) (mapcar '(lambda ( i ) (nth i lst)) idx))
  )

;;------------------------------------------------------------;;

  (defun _ReverseItems ( idx lst )
    (
      (lambda ( i l )
        (mapcar
          (function
            (lambda ( x )
              (if (member (setq i (1+ i)) idx)
                (setq x (nth (car l) lst)
                      l (cdr l)
                )
              )
              x
            )
          )
          lst
        )
      )
      -1 (reverse (vl-sort idx '<))
    )
  )

;;------------------------------------------------------------;;

  (defun _TabSort ( dchand lst )
    
    (or *SortTyp* (setq *SortTyp*   "0"))
    (or *SortOrd* (setq *SortOrd* "asc"))

    (cond
      (
        (not (new_dialog "sort" dchand))

        (cond
          (Express
            (acet-ui-message "Error Loading Sort Dialog" "Warning" 16)
          )
          (t
            (princ "\n** Error Loading Sort Dialog **")
          )
        )
        lst
      )
      (t
       (if IsRus#
         (_MakeList "typ" '("Alphabetical" "Numerical" "Architectural"))
         (_MakeList "typ" '("Текстовый" "Цифровой" "Архитектурный"))
         )
       
        (set_tile "typ" *SortTyp*)
        (set_tile *SortOrd*   "1")

        (action_tile "typ" "(setq *SortTyp* $value)")
        (action_tile "asc" "(setq *SortOrd*   $key)")
        (action_tile "des" "(setq *SortOrd*   $key)")

        (if (zerop (start_dialog)) lst
          (progn
            (cond
              ( (eq "0" *SortTyp*)

                (setq lst (acad_strlsort lst))
              )
              ( (eq "1" *SortTyp*)

                (setq lst (_NumSort lst))
              )
              ( (eq "2" *SortTyp*)

                (setq lst (_ArchSort lst))
              )
            )
            (if (eq "asc" *SortOrd*)
              lst
              (reverse lst)
            )
          )
        )
      )
    )
  )

;;------------------------------------------------------------;;

  (defun _SplitStr ( str / lst test rslt num tmp ) ; (Gile)

    (setq lst  (vl-string->list str)
          test (chr (car lst))
    )    
    (if (< 47 (car lst) 58)
      (setq num T)
    )
    (while (setq lst (cdr lst))
      (if num
        (cond
          ( (= 46 (car lst))

            (if
              (and
                (cadr lst)
                (setq tmp (strcat "0." (chr (cadr lst))))
                (numberp (read tmp))
              )
              (setq rslt (cons (read test) rslt)
                    test tmp
                    lst  (cdr lst)
              )
              (setq rslt (cons (read test) rslt)
                    test "."
                    num nil
              )
            )
          )
          ( (< 47 (car lst) 58)

            (setq test (strcat test (chr (car lst))))
          )
          ( t

            (setq rslt (cons (read test) rslt)
                  test (chr (car lst))
                  num  nil
            )
          )
        )
        (if (< 47 (car lst) 58)
          (setq rslt (cons test rslt)
                test (chr (car lst))
                num  T
          )
          (setq test (strcat test (chr (car lst))))
        )
      )
    )
    
    (if num
      (setq rslt (cons (read test) rslt))
      (setq rslt (cons test rslt))
    )    
    (reverse rslt)
  )

;;------------------------------------------------------------;;

  (defun _ArchSort ( lst / comparable ) ; (Gile)
    
    (defun comparable ( e1 e2 )
      (or
        (and (numberp e1) (numberp e2))
        (= 'STR (type e1) (type e2))
        (not e1)
        (not e2)
      )
    )
    
    (mapcar '(lambda ( x ) (nth x lst))      
      (vl-sort-i (mapcar '_SplitStr lst)
        (function
          (lambda ( x1 x2 / n1 n2 comp )
            (while
              (and
                (setq comp
                  (comparable (setq n1 (car x1)) (setq n2 (car x2)))
                )
                (= n1 n2)
              )
              (setq x1 (cdr x1) x2 (cdr x2))
            )            
            (if comp (< n1 n2) (numberp n1))
          )
        )
      )
    )
  )

;;------------------------------------------------------------;;

  (defun _NumSort ( lst )

    (mapcar '(lambda ( x ) (nth x lst))    
      (vl-sort-i (mapcar '(lambda ( x ) (vl-remove-if-not 'numberp (_SplitStr x))) lst)
        (function
          (lambda ( a b )
            (while (and a b (= (car a) (car b)))
              (setq a (cdr a)
                    b (cdr b)
              )
            )
            (if (or a b) (< (car a) (car b)) t)
          )
        )
      )
    )
  )

;;------------------------------------------------------------;;

  (defun _DeleteTabs ( dchand idx lst / x )
    (cond
      (Express
        (setq x
          (acet-ui-message "The Selected Tab(s) Will be Permanently Deleted.\n\nProceed?" "Delete Tab(s)?" 52)
        )
      )
      ( (not (new_dialog "delwarn" dchand))

        (princ "\n** Error Loading Delete Dialog **")
      )
      (t
        (action_tile "accept" "(setq x 6) (done_dialog)")
        (start_dialog)
      )
    )

    (if (= 6 x)
      (if
        (vl-catch-all-error-p
          (vl-catch-all-apply
           '(lambda nil
              (foreach i idx (vla-delete (vla-item aclay (nth i lst))))
            )
          )
        )
        (cond
          (Express
            (acet-ui-message "Error Deleting Tab(s)" "Warning" 16)
          )
          (t
            (alert "\n** Error Deleting Tab(s) **")
          )
        )
        (setq lst (_RemoveItems idx lst))
      )
    )
    lst
  )

;;------------------------------------------------------------;;

  (defun _TabPrefixSuffix ( dchand idx lst / pref suff item tmp i )
    
    (or *prefdef* (setq *prefdef* 0))
    
    (cond
      ( (not (new_dialog "prefsuff" dchand))

        (cond
          (Express
            (acet-ui-message "Error Loading Prefix/Suffix Dialog" "Warning" 16)
          )
          (t
            (princ "\n** Error Loading Prefix/Suffix Dialog **")
          )
        )
        lst
      )
      (t

        (set_tile "all" (itoa *prefdef*))

        (action_tile "accept"
          (vl-prin1-to-string
            (quote
              (progn
                (cond
                  (
                    (and
                      (not (eq "" (setq pref (get_tile "pref"))))
                      (wcmatch (strcase pref) "*[<>\\/\\\":;`?`*|`,=]*")
                    )

                    (set_tile "error" "Invalid Symbol in Prefix")
                    (mode_tile "pref" 2)
                  )
                  (
                    (and
                      (not (eq "" (setq suff (get_tile "suff"))))
                      (wcmatch (strcase suff) "*[<>\\/\\\":;`?`*|`,=]*")
                    )

                    (set_tile "error" "Invalid Symbol in Suffix")
                    (mode_tile "suff" 2)
                  )
                  (
                    (and (zerop *prefdef*) (setq tmp (mapcar 'strcase (_RemoveItems idx lst)))
                      (vl-some
                        (function
                          (lambda ( x )
                            (vl-position (strcase (strcat pref x suff)) tmp)
                          )
                        )
                        (mapcar '(lambda ( x ) (nth x lst)) idx) 
                      )
                    )

                    (set_tile "error" "Amendment would create Duplicate tab")
                    (mode_tile "pref" 2)
                  )
                  ( (done_dialog 1) )
                )
              )
            )
          )
        )

        (action_tile "all" "(setq *prefdef* (atoi $value))")

        (if (= 1 (start_dialog))
          (cond
            (
              (zerop *prefdef*)

              (setq i -1)

              (setq lst
                (mapcar
                  (function
                    (lambda ( x )
                      (if (member (setq i (1+ i)) idx)
                        (progn
                          (vla-put-name (vla-item aclay x) (strcat pref x suff))
                          (strcat pref x suff)
                        )
                        x
                      )
                    )
                  )
                  lst
                )
              )
            )
            (
              t

              (setq lst
                (mapcar
                  (function
                    (lambda ( x )
                      (vla-put-name (vla-item aclay x) (strcat pref x suff))
                      (strcat pref x suff)
                    )
                  )
                  lst
                )
              )
            )
          )
        )
      )
    )
    lst
  )
  
;;------------------------------------------------------------;;
  
  (defun _AddTab ( lst / tmp i upp )

    (setq tmp "Layout1" i 1 upp (mapcar 'strcase lst))
    
    (while (member (strcase tmp) upp)
      (setq tmp (strcat "Layout" (itoa (setq i (1+ i)))))
    )
    (vla-add aclay tmp)
    (append lst (list tmp))
  )

;;------------------------------------------------------------;;

  (defun _CopyTab ( idx lst / upp oldname oldlay newname i objlst newlay newblk )
    
    (setq upp (mapcar 'strcase lst))

    (foreach x idx
      (setq oldname (nth x lst)
            oldlay  (vla-item aclay oldname)
            newname (strcat oldname " (2)")
            i       2
            objlst  nil
      )
      (while (member (strcase newname) upp)
        (setq newname (strcat oldname " (" (itoa (setq i (1+ i))) ")"))
      )
      (setq newlay (vla-add aclay newname)
            newblk (vla-get-block newlay)
            lst    (append lst (list newname))
      )
      (vla-copyfrom newlay oldlay)

      (if
        (vlax-for o (vla-get-block oldlay)
          (setq objlst (cons o objlst))
        )
        (vla-copyobjects acdoc
          (vlax-make-variant
            (vlax-safearray-fill
              (vlax-make-safearray vlax-vbobject (cons 0 (1- (length objlst)))) (reverse objlst)
            )
          )
          newblk
        )
      )
    )

    lst
  )
  
;;------------------------------------------------------------;;

  (defun _FindReplaceTab ( dchand lst / fstr rstr found tab idx flen i nstr rlen m n )

    (cond
      (
        (not (new_dialog "find" dchand))

        (cond
          (Express
            (acet-ui-message "Error Loading Find and Replace Dialog" "Warning" 16)
          )
          (t
            (princ "\n** Error Loading Find & Replace Dialog **")
          )
        )
        lst
      )
      (t

        (set_tile "ftxt" "")
        (set_tile "fstr" (setq fstr ""))
        (set_tile "rstr" (setq rstr ""))

        (action_tile "fstr" "(set_tile \"ftxt\" \"\") (setq found nil fstr $value)")
        (action_tile "rstr" "(setq rstr $value)")

        (action_tile "fnd"
          (vl-prin1-to-string
            (quote
              (progn
                (cond
                  (
                    found
                   
                    (set_tile "ftxt" (caar found))
                    (setq tab   (cadar  found)
                          idx   (caddar found)
                          found (cdr    found)
                    )
                  )
                  (
                    t
                    (cond
                      (
                        (eq fstr "")

                        (set_tile "ftxt" "Please Enter a String to Find.")
                        (setq found nil tab nil idx nil)
                      )
                      (t
                        (setq flen (strlen fstr) i 0)
                       
                        (foreach x lst
                          (while (setq i (vl-string-search (strcase fstr) (strcase x) i))
                            (setq found
                              (cons
                                (list
                                  (strcat (substr x 1 i) "[" (substr x (1+ i) flen) "]" (substr x (+ i flen 1)))
                                  x
                                  i
                                )
                                found
                              )
                              i (+ i flen)
                            )
                          )
                        )
                        (setq found (reverse found))

                        (cond
                          (
                            found
                           
                            (set_tile "ftxt" (caar found))
                            (setq tab   (cadar  found)
                                  idx   (caddar found)
                                  found (cdr    found)
                            )
                          )
                          (
                            t

                            (set_tile "ftxt" "String not Found.")
                            (setq tab nil idx nil)
                          )
                        )
                      )
                    )
                  )
                )
              )
            )
          )
        )

        (action_tile "rep"
          (vl-prin1-to-string
            (quote
              (progn
                (cond
                  (
                    (not tab)

                    (set_tile "ftxt" "String not Found.")
                  )
                  (
                    (wcmatch rstr "*[<>\\/\\\":;`?`*|`,=]*")

                    (set_tile "ftxt" "Invalid Symbol in Replace String.")
                  )
                  (
                    (member
                      (vl-string-trim " "
                        (strcase
                          (setq nstr
                            (strcat (substr tab 1 idx) rstr (substr tab (+ 1 idx flen)))
                          )
                        )
                      )
                      (mapcar 'strcase lst)
                    )

                    (set_tile "ftxt" "Replacement would create Duplicate Tab.")
                  )
                  (
                    t
                    (vla-put-Name (vla-item aclay tab) nstr)
                   
                    (set_tile "ftxt" (strcat (get_tile "ftxt") "  ->  " nstr))
                    (setq lst (subst nstr tab lst))

                    (setq found
                      (mapcar
                        (function
                          (lambda ( x )
                            (if (eq tab (cadr x))
                              (progn
                                (if (< idx (setq i (caddr x)))
                                  (setq i (+ (caddr x) (- (strlen rstr) flen)))
                                )
                                (setq i (vl-string-search (strcase fstr) (strcase nstr) i))
                                (list
                                  (strcat (substr nstr 1 i) "[" (substr nstr (1+ i) flen) "]" (substr nstr (+ i flen 1)))
                                  nstr
                                  i
                                )
                              )
                              x
                            )
                          )
                        )
                        found
                      )
                    )
                  )
                )
              )
            )
          )
        )

        (action_tile "repa"
          (vl-prin1-to-string
            (quote
              (progn
                (set_tile "ftxt" "")

                (cond
                  (
                    (eq fstr "")

                    (set_tile "ftxt" "Please Enter a String to Find.")
                    (setq found nil)
                  )
                  (
                    (wcmatch rstr "*[<>\\/\\\":;`?`*|`,=]*")

                    (set_tile "ftxt" "Invalid Symbol in Replace String.")
                  )
                  (
                    t
                    (setq n 0
                          flen (strlen fstr)
                          rlen (strlen rstr)
                    )

                    (foreach tab lst
                      (setq m n
                            i 0
                            nstr tab
                      )                      
                      (while (setq i (vl-string-search (strcase fstr) (strcase nstr) i))
                        (setq nstr (strcat (substr nstr 1 i) rstr (substr nstr (+ 1 i flen)))
                                 i (+ i rlen)
                                 m (1+ m)
                        )
                      )
                      (if (not (member (strcase nstr) (mapcar 'strcase lst)))
                        (progn
                          (vla-put-name (vla-item aclay tab) nstr)
                          (setq n   m
                                lst (subst nstr tab lst)
                          )
                        )
                      )
                    )

                    (set_tile "ftxt"
                      (if (< 0 n)
                        (strcat (itoa n) " Replacements Made.")
                        "String not Found."
                      )
                    )
                  )
                )
              )
            )
          )
        )

        (start_dialog)
      )
    )
    lst
  )

;;------------------------------------------------------------;;

  (defun _TabSortHelp ( dchand title )
    (cond
      (
        (not (new_dialog "help" dchand))

        (cond
          (Express
            (acet-ui-message "Error Loading Help Dialog" "Warning" 16)
          )
          (t
            (princ "\n** Error Loading Help Dialog **")
          )
        )
      )
      (t
        (set_tile "htitle" title)
        (start_dialog)
      )
    )
  )

;;------------------------------------------------------------;;

  (defun _ListDupes ( l )
    (if l
      (if (vl-position (car l) (cdr l))
        (cons (car l) (_ListDupes (vl-remove (car l) (cdr l))))
        (_ListDupes (vl-remove (car l) (cdr l)))
      )
    )
  )

;;------------------------------------------------------------;;

  (setq acdoc (vla-get-activedocument (vlax-get-acad-object))
        aclay (vla-get-layouts acdoc)
  )

  (if (not (vl-file-directory-p (setq SavePath (_GetSavePath))))
    (progn
      (princ "\n** Save Path not Valid **") (exit)
    )
  )

  (setq dclfname (strcat SavePath "\\LMAC_TabSort_V" TabSortVersion# ".dcl")
        dcltitle (strcat "TabSort V" (vl-string-translate "-" "." TabSortVersion#))
  )
  
  (setq Express
    (and (vl-position "acetutil.arx" (arx))
      (not
        (vl-catch-all-error-p
          (vl-catch-all-apply
            (function (lambda nil (acet-sys-shift-down)))
          )
        )
      )
    )
  )

;;------------------------------------------------------------;;
  
  (cond
    (
      (not (_WriteDCL dclfname))

      (cond
        (Express
          (acet-ui-message "DCL File Could not be Written" "Warning" 16)
        )
        (t
          (princ "\n** DCL File Could not be Written **")
        )
      )
    )
    (
      (< (setq dch (load_dialog dclfname)) 0)

      (cond
        (Express
          (acet-ui-message "DCL File not Found" "Warning" 16)
        )
        (t
          (princ "\n** DCL File not Found **")
        )
      )
    )
    (
      (not (new_dialog "tabsort" dch))

      (cond
        (Express
          (acet-ui-message "Error Loading TabSort Dialog" "Warning" 16)
        )
        (t
          (princ "\n** Error Loading TabSort Dialog **")
        )
      )
    )
    (t

      (_StartUndo acdoc)

      (setq dclst  (mapcar 'vla-get-Name (_GetLayouts aclay))
            resLst dclst
      )
      (set_tile "dcltitle" dcltitle)

      (_MakeList "tabs" dclst)
     
      (set_tile "tabs"
        (setq ptr
          (if (zerop (getvar 'TILEMODE))
            (itoa (vl-position (getvar 'CTAB) dclst))
            "0"
          )
        )
      )

      (action_tile "tabs"
        (vl-prin1-to-string
          (quote
            (progn (setq ptr $value)
              (if (= 4 $reason)
                (progn
                  (_MakeList "tabs" (setq dclst (_RenameTab dch (atoi ptr) dclst)))
                  (set_tile "tabs" ptr)
                )
              )
            )
          )
        )
      )

      (action_tile "up"
        (vl-prin1-to-string
          (quote
            (progn
              (setq
                idx (_value->list ptr)
                old (mapcar '(lambda ( x ) (nth x dclst)) idx)
              )
              (_MakeList "tabs" (setq dclst (_ListUp idx dclst)))
              (set_tile  "tabs"
                (setq ptr
                  (_list->value (mapcar '(lambda ( x ) (vl-position x dclst)) old))
                )
              )
            )
          )
        )
      )
         
      (action_tile "down"
        (vl-prin1-to-string
          (quote
            (progn
              (setq
                idx (_value->list ptr)
                old (mapcar '(lambda ( x ) (nth x dclst)) idx)
              )
              (_MakeList "tabs" (setq dclst (_ListDown idx dclst)))
              (set_tile  "tabs"
                (setq ptr
                  (_list->value (mapcar '(lambda ( x ) (vl-position x dclst)) old))
                )
              )
            )
          )
        )
      )

      (action_tile "mtop"
        (vl-prin1-to-string
          (quote
            (progn
              (_MakeList "tabs" (setq dclst (_ListToTop (setq idx (_value->list ptr)) dclst)))

              (setq i -1)
              (set_tile "tabs"
                (setq ptr
                  (_list->value (mapcar '(lambda ( x ) (setq i (1+ i))) idx))
                )
              )
            )
          )
        )
      )

      (action_tile "mbot"
        (vl-prin1-to-string
          (quote
            (progn
              (_MakeList "tabs" (setq dclst (_ListToBottom (setq idx (_value->list ptr)) dclst)))
              
              (setq i (length dclst))
              (set_tile "tabs"
                (setq ptr
                  (_list->value (reverse (mapcar '(lambda ( x ) (setq i (1- i))) idx)))
                )
              )
            )
          )
        )
      )

      (action_tile "sort"
        (vl-prin1-to-string
          (quote
            (progn
              (setq
                idx (_value->list ptr)
                old (mapcar '(lambda ( x ) (nth x dclst)) idx)
              )
              (_MakeList "tabs" (setq dclst (_TabSort dch dclst)))
              (set_tile  "tabs"
                (setq ptr
                  (_list->value (mapcar '(lambda ( x ) (vl-position x dclst)) old))
                )
              )
            )
          )
        )
      )
     
      (action_tile "rev"
        (vl-prin1-to-string
          (quote
            (progn
              (_MakeList "tabs" (setq dclst (_ReverseItems (_value->list ptr) dclst)))
              (set_tile  "tabs" ptr)
            )
          )
        )
      )
         
      (action_tile "del"
        (vl-prin1-to-string
          (quote
            (progn
              (setq
                idx (_value->list ptr)
                old (mapcar '(lambda ( x ) (nth x dclst)) idx)
                tmp dclst
              )
              (setq newres
                (_RemoveItems
                  (mapcar '(lambda ( x ) (1- (vla-get-TabOrder (vla-item aclay x)))) old)
                  resLst
                )
              )
              (_MakeList "tabs"
                (setq dclst
                  (cond
                    ( (_DeleteTabs dch idx dclst) )
                    ( (mapcar 'vla-get-Name (_GetLayouts aclay)) )
                  )
                )
              )
              (if (not (equal tmp dclst)) (setq resLst (cond ( newres ) ( dclst ))))

              (set_tile "tabs"
                (setq ptr
                  (if (zerop (getvar 'TILEMODE))
                    (itoa (vl-position (getvar 'CTAB) dclst))
                    "0"
                  )
                )
              )
            )
          )
        )
      )
         
      (action_tile "p_s"
        (vl-prin1-to-string
          (quote
            (progn
              (_MakeList "tabs" (setq dclst (_TabPrefixSuffix dch (_value->list ptr) dclst)))
              (set_tile  "tabs" ptr)
            )
          )
        )
      )

      (action_tile "res"
        (vl-prin1-to-string
          (quote
            (progn
              (cond
                (
                  (_ListDupes (mapcar 'strcase resLst))

                  (cond
                    (Express
                      (acet-ui-message "Resetting would create Duplicate Tabs" "Warning" 48)
                    )
                    (t
                      (alert "Resetting would create Duplicate Tabs")
                    )
                  )
                )
                (
                  t
                 
                  (_MakeList "tabs" (setq dclst resLst))
                  (mapcar 'vla-put-Name (_GetLayouts aclay) resLst)
                  
                  (set_tile "tabs"
                    (setq ptr
                      (if (zerop (getvar 'TILEMODE))
                        (itoa (vl-position (getvar 'CTAB) dclst))
                        "0"
                      )
                    )
                  )
                )
              )
            )
          )
        )
      )

      (action_tile "add"
        (vl-prin1-to-string
          (quote
            (progn
              (_MakeList "tabs" (setq dclst (_AddTab dclst)))
              (setq resLst (append resLst (list (last dclst))))
              (set_tile "tabs" (setq ptr (itoa (1- (length dclst)))))
            )
          )
        )
      )

      (action_tile "cur"
        (vl-prin1-to-string
          (quote
            (progn
              (setvar "CTAB" (nth (setq ptr (car (_value->list ptr))) dclst))
              (set_tile "tabs" (setq ptr (itoa ptr)))
            )
          )
        )
      )

      (action_tile "copy"
        (vl-prin1-to-string
          (quote
            (progn
              (setq
                idx (_value->list ptr)
                tmp dclst
                i   (1- (length dclst))
                j   i                      
              )
              (_MakeList "tabs" (setq dclst (_CopyTab idx dclst)))
              (setq resLst
                (append resLst
                  (mapcar '(lambda ( x ) (nth (setq i (1+ i)) dclst)) idx)
                )
              )              
              (set_tile "tabs"
                (setq ptr
                  (_list->value (mapcar '(lambda ( x ) (setq j (1+ j))) idx))
                )
              )
            )
          )
        )
      )

      (action_tile "fnr"
        (vl-prin1-to-string
          (quote
            (progn
              (_MakeList "tabs" (setq dclst (_FindReplaceTab dch dclst)))
              (set_tile "tabs" ptr)
            )
          )
        )
      )

      (action_tile "help" "(_TabSortHelp dch (strcat dcltitle \" - Help\"))")

      (start_dialog)
      (setq dch (unload_dialog dch))

      (cond
        (
          (equal (setq dclst (mapcar 'strcase dclst))
            (mapcar 'strcase
              (mapcar 'vla-get-Name
                (setq aclays (_GetLayouts aclay))
              )
            )
          )
        )
        (t
          (foreach lay aclays
            (vla-put-TabOrder lay
              (1+ (vl-position (strcase (vla-get-Name lay)) dclst))
            )
          )
        )
      )
      (_EndUndo acdoc)
    )
  )

  (princ)
)

;;------------------------------------------------------------;;

(vl-load-com) (princ)

(princ
  (strcat
    "\n:: TabSort.lsp | Version " (vl-string-translate "-" "." TabSortVersion#) " | © Lee Mac 2011 www.lee-mac.com ::"
    "\n:: Type \"TabSort\" to Invoke ::"
  )
)
(princ)

;;------------------------------------------------------------;;
;;                         End of File                        ;;
;;------------------------------------------------------------;;
Миниатюры
Нажмите на изображение для увеличения
Название: image.png
Просмотров: 76
Размер:	32.0 Кб
ID:	264550  
S_Vitaliy вне форума  
 
Автор темы   Непрочитано 12.09.2024, 09:01
#102
VVA

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


Добавил ссылку в 1-й пост
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.09.2024, 12:10
#103
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 319
Отправить сообщение для petro_f с помощью Skype™


Цитата:
Сообщение от S_Vitaliy Посмотреть сообщение
удобства работы с длинными наименованиями листов
А Вы сделали обработку ширины окна в зависимости от ширины исходного разрешения? Или у некоторых на ноуте это может не открыться, так как кад не позволяет открывать окна больше чем выделено у него разрешение на экране.
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума  
 
Непрочитано 16.09.2024, 19:43
#104
S_Vitaliy


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


Цитата:
Сообщение от petro_f Посмотреть сообщение
А Вы сделали обработку ширины окна в зависимости от ширины исходного разрешения?
Нет, вручную подбирал размеры для своих задач на экране FHD. Скрин пропорций к FHD экрану прикладываю.
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок1.jpg
Просмотров: 67
Размер:	25.4 Кб
ID:	264731  
S_Vitaliy вне форума  
 
Непрочитано 17.01.2025, 09:25
#105
elovkov

ПОС наше всё
 
Регистрация: 06.08.2009
Симферополь
Сообщений: 274


Цитата:
Сообщение от S_Vitaliy Посмотреть сообщение
Откорректировал русифицированный VVA Lee Mac`овский Tabsort
Что-то у меня кракозябры какие-то((
Чего не хватает моему компу?
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot_1.png
Просмотров: 130
Размер:	16.3 Кб
ID:	266349  
__________________
Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
elovkov вне форума  
 
Непрочитано 17.01.2025, 09:40
#106
Кулик Алексей aka kpblc
Moderator

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


Версия ACAD? Значение LISPSYS?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.01.2025, 09:55
#107
elovkov

ПОС наше всё
 
Регистрация: 06.08.2009
Симферополь
Сообщений: 274


версия 2020 чистый
LISPSYS - неизвестная команда 0_о
__________________
Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
elovkov вне форума  
 
Непрочитано 17.01.2025, 10:01
#108
Кулик Алексей aka kpblc
Moderator

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


Проблема 100% связана с кодировкой lsp / dcl. Она должна быть Windows-1251, без вариантов.
Попробуй перекачать архив и не вноси изменения в файлы.
P.S. Код не смотрел
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.01.2025, 10:26
#109
elovkov

ПОС наше всё
 
Регистрация: 06.08.2009
Симферополь
Сообщений: 274


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй перекачать архив
А это я из 101 сообщения код взял, из шапки архив отлично запустился, все в порядке
__________________
Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
elovkov вне форума  
 
Непрочитано 17.01.2025, 10:29
#110
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от elovkov Посмотреть сообщение
я из 101 сообщения код взял
Это не отменяет требований по кодировке.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.01.2025, 11:12
#111
elovkov

ПОС наше всё
 
Регистрация: 06.08.2009
Симферополь
Сообщений: 274


Кодировка, как я понимаю, в лиспе задается? Я код не трогал, просто в блокнот вставил и сохранил. Лисп из шапки запускается корректно, из 101 сообщения с кракозябрами.
Вот это ведь задание кодировки?:
Код:
[Выделить все]
 (setq IsRus# (= (getvar "DWGCODEPAGE") "ANSI_1251"))
__________________
Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
elovkov вне форума  
 
Непрочитано 17.01.2025, 11:47
#112
name02


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


Не в лиспе. Открой лисп в блокноте и посмотри тут:
Нажмите на изображение для увеличения
Название: Рисунок1.png
Просмотров: 31
Размер:	7.4 Кб
ID:	266354
name02 вне форума  
 
Непрочитано 17.01.2025, 11:58
#113
elovkov

ПОС наше всё
 
Регистрация: 06.08.2009
Симферополь
Сообщений: 274


Цитата:
Сообщение от name02 Посмотреть сообщение
посмотри тут:
Все точно так же
__________________
Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
elovkov вне форума  
 
Непрочитано 17.01.2025, 12:13
#114
name02


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


Как менять кодировку - смотри тут:
https://windoro.ru/kak-pomenyat-kodi...-windows-1251/

Лучше использовать Notepad++
name02 вне форума  
 
Непрочитано 28.03.2025, 20:53
#115
S_Vitaliy


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


Цитата:
Сообщение от elovkov Посмотреть сообщение
Все точно так же
Offtop: У меня оказывается почта в профиле не действующая указана, не получаю уведомления форума об ответах. Если ещё актуально, то смотрите следующее сообщение.

Последний раз редактировалось S_Vitaliy, 28.03.2025 в 21:05.
S_Vitaliy вне форума  
 
Непрочитано 28.03.2025, 20:59
#116
SVitaliy


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


Цитата:
Сообщение от elovkov Посмотреть сообщение
Все точно так же
Lee Mac любит dcl создавать прямо из лиспа, а если он уже существует, то заново не создаётся. Поэтому чтобы увидеть изменение после смены кодировки файла, нужно удалить созданный при первом запуске лиспа dcl. Ищите поиском по AppData файлы LMAC_TabSort_V2-2a_SV.dcl и удалите их. После этого уже можно запускать лисп с правильной кодировкой. Либо в самом лиспе поменяйте имя dcl - в строке 0146 (setq TabSortVersion# "2-2a_SV")
SVitaliy вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Копирование, сортировка, переименование листов (layout)