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

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

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

Ответ
Поиск в этой теме
Непрочитано 02.05.2008, 12:26 5 |
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 Кб, 1789 просмотров)
Тип файла: lsp layout2013.lsp (31.2 Кб, 893 просмотров)

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

Последний раз редактировалось VVA, 12.09.2024 в 09:02. Причина: добавил ссылку на #101
Просмотров: 72479
 
Непрочитано 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
Просмотров: 78
Размер:	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
Просмотров: 71
Размер:	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
Просмотров: 138
Размер:	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,426


Версия 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,426


Проблема 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,426


Цитата:
Сообщение от 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
Сообщений: 420


Не в лиспе. Открой лисп в блокноте и посмотри тут:
Нажмите на изображение для увеличения
Название: Рисунок1.png
Просмотров: 35
Размер:	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
Сообщений: 420


Как менять кодировку - смотри тут:
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)