Jump to content

bgtools 3.11b_Nc_22.lsp 19.03.2023

   (1 review)

1 Screenshot

About This File

bgtools 3.11b_Nc_22.lsp

 

04-05-2013 Предупреждение: команда удаления фильтров слоев AllFilterDel  сработает только, если НЕ открывать менеджер слоев, сохранить и закрыть чертеж

Edited by lidia.antipina.ru


What's New in Version 19.03.2023   See changelog

Released

Добавила вызов функции обработки ошибок (la:ru-error-catch) для обхода #47195 при вызове Odax.AcadAcCmColor в командах BGCOLOR, BGCOLORCMD, BGCOLORXREF, BGAll2RGB

  • Like 1
  • Thanks 2
 Share


User Feedback

Recommended Comments

То ли я не отправил отзыв, то ли он не прошел модерацию...

В качестве варианта для сохранения / чтения настроек:

(vl-load-com)

(defun _kpblc-dir-create (path / tmp)
                         ;|
  *    Гарантированное создание каталога
  *    Параметры вызова:
    path  ; создаваемый каталог
  |;
  (cond ((vl-file-directory-p path) path)
        ((setq tmp (_kpblc-dir-create (vl-filename-directory path)))
         (vl-mkdir (strcat tmp
                           "\\"
                           (vl-filename-base path)
                           (cond ((vl-filename-extension path))
                                 (t "")
                           ) ;_ end of cond
                   ) ;_ end of strcat
         ) ;_ end of vl-mkdir
         (if (vl-file-directory-p path)
           path
         ) ;_ end of if
        )
  ) ;_ end of cond
) ;_ end of defun

(defun _kpblc-get-settings-filename ()
  (strcat (_kpblc-dir-create (strcat (vl-string-right-trim "\\" (getenv "appdata")) "\\NCad\\AddOnSetings"))
          "\\TabCoord.ini"
  ) ;_ end of strcat
) ;_ end of defun

(defun _kpblc-settings-save (settings / file handle)
                            ;|
  *    Выполняет запись настроек в файл
  *    Параметры вызова:
    settings ; список вида
      '(("mode" . <Режим разметки>) ; t-> цифры, nil -> буквы
        ("prec" . <Точность координат>)
        ("notitle" . <Удалять заголовок таблицы>)
        ("textheight" . <Высота текста таблицы>)
        ("titleheight" . <Высота заголовка таблицы>)
        ("height" . <Размер текста>)
        ("pointwidth" . <Ширина столбца Точка>)
        ("xwidth" . <Ширина стобца X>)
        ("radiuswidth" . <Ширина столбца Y>)
        ("perim" . <Добавлять строку периметра>)
        ("area" . <Добавлять строку площади>)
        ("centroid" . <Добавлять строку центра тяжести>)
        ("scale" . <Масштаб измерения>)
        ("nohead" . <Удалять заголовок таблицы>)
        )
  |;
  (setq file   (_kpblc-get-settings-filename)
        handle (open file "w")
  ) ;_ end of setq
  (foreach item settings
    (write-line (strcat (strcase (car item) t) "=" (vl-princ-to-string (cdr item))) handle)
  ) ;_ end of foreach
  (close handle)
  file
) ;_ end of defun

(defun _kpblc-settings-read (/ file handle str lst pos default)
                            ;|
  *    Выполняет чтение настроек из ini-файла
  |;
  (setq default '(
          ;("mode" . <Режим разметки>)
                  ("prec" . 4) ; <Точность координат>
          ;("notitle" . <Удалять заголовок таблицы>)
                  ("textheight" . -2.) ;<Высота текста таблицы>
                  ("titleheight" . -3.) ;<Высота заголовка таблицы>
                  ("height" . -2.) ;<Размер текста>
                  ("pointwidth" . -10.) ;<Ширина столбца Точка>
                  ("xwidth" . -20.) ;<Ширина стобца X>
                  ("ywidth" . -20.) ;<Ширина столбца Y>
                  ("perim" . t) ;<Добавлять строку периметра>
                  ("area" . t) ;<Добавлять строку площади>
                  ("centroid" . t) ;<Добавлять строку центра тяжести>
                  ("scale" . 1e-3) ;<Масштаб измерения>
                 )
  ) ;_ end of setq
  (if (findfile (setq file (_kpblc-get-settings-filename)))
    (progn
      (setq handle (open file "r"))
      (while (setq str (read-line handle))
        (if (setq pos (vl-string-search "=" str))
          (progn
            (setq lst (cons (cons (substr str 1 pos) (read (substr str (+ 2 pos)))) lst))
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of while
      (close handle)
      (if lst
        (reverse lst)
        default
      ) ;_ end of if
    ) ;_ end of progn
    default
  ) ;_ end of if
) ;_ end of defun

И тогда строки

    (setq mType T) ;;LA Режим разметки. T - цифры, NIL - буквы
    (setq tHt -1.0) ;;LA Размер текста таблицы. Положительный - абсолютный, отрицательный - зависит от TEXTSIZE
    (setq mHt -2.0) ;;LA Указывает размер текста. Положительный - абсолютный, отрицательный - зависит от TEXTSIZE
    (setq cAcu 4) ;;LA Точность координат (от 0 до 8) ;LA см. версию с форума nanocad.ru
    (setq dHead nil) ;;LA Если T удалить заголовок таблицы, если NIL не удалять
    (setq hStr (if IsRus "Каталог координат" "Land # ")) ;;LA Стандартный заголовок  (если dHead не равен T)
    (setq hHt -3) ;;LA Размер текста заголовка. Положительный - абсолютный, отрицательный - зависит от TEXTSIZE
    (setq w1 -10.0) ;;LA Ширина колонки 'Точка'. Положительный - абсолютный, отрицательный - зависит от TEXTSIZE
    (setq w2 -20.0) ;;LA Ширина столбцов 'X' и 'Y'. Положительный - абсолютный, отрицательный - зависит от TEXTSIZE
    (setq w3 -12.0) ;;LA Ширина столбца 'Радиус'. Положительный - абсолютный, отрицательный - зависит от TEXTSIZE
    (setq isPer T) ;;LA isPer - Если T, добавляет строку периметра
    (setq isAre T) ;;LA isAre - Если T, добавляет строку площади
    (setq isGCen T) ;;LA isGCen - Если T, добавляет строку центра тяжести
    (setq pMul 0.001) ;;LA pMul - Масштаб измнрения периметра
    (setq aMul (expt pMul 2)) ;;LA aMul - Масштаб измерения площади. В принципе достаточно просто задать ОДИН масштаб измерения длин

Можно будет заменить на:

((lambda (/ cur_settings)
   (setq cur_settings (_kpblc-settings-read)
         mtype        (cdr (assoc "mode" cur_settings))
         tht          (cdr (assoc "textheight" cur_settings))
         mht          (cdr (assoc "height" cur_settings))
         cacu         (cdr (assoc "prec" cur_settings))
         dhead        (cdr (assoc "nohead" cur_settings))
         hstr         (if isrus
                        "Êàòàëîã êîîðäèíàò"
                        "Land # "
                      ) ;_ end of if
         hht          (cdr (assoc "titleheight" cur_settings))
         w1           (cdr (assoc "pointwidth" cur_settings))
         w2           (cdr (assoc "xwidth" cur_settings))
         w3           (cdr (assoc "radiuswidth" cur_settings))
         isper        (cdr (assoc "perim" cur_settings))
         isare        (cdr (assoc "area" cur_settings))
         isgcen       (cdr (assoc "centroid" cur_settings))
         pmul         (cdr (assoc "scale" cur_settings))
         amul         (expt pmul 2)
   ) ;_ end of setq
 ) ;_ end of lambda
)

Ну и сохранение будет примерно так (где уж его будете выполнять - без понятия):
 

(_kpblc-settings-save
  (list (cons "mode" mtype)
        (cons "textheight" tht)
        (cons "height" mht)
        (cons "prec" cacu)
        (cons "nohead" dhead)
        (cons "titleheight" hht)
        (cons "pointwidth" w1)
        (cons "xwidth" w2)
        (cons "radiuswidth" w3)
        (cons "perim" isper)
        (cons "area" isare)
        (cons "centroid" isgcen)
        (cons "scale" pmul)
  ) ;_ end of list
) ;_ end of _kpblc-settings-save

Кстати, в базовом коде есть одно нарушение: в одной из функций (в которой - не скажу, разбираться не было времени) нарушено недокументированное ограничение автолиспа в 255 логических операций внутри одного progn / lambda / defun.

  • Like 2
Link to comment
Share on other sites

kpblc 57

Опубликовано Суббота в 01:34

 Версия 1.0.0

"То ли я не отправил отзыв, то ли он не прошел модерацию...

В качестве варианта для сохранения / чтения настроек:"

 

Спасибо, но комментарий  опять не туда похоже. Я так поняла, что его надо переместить отсюда в отзывы к AsmiTools TABCORD

 

 

Link to comment
Share on other sites

Да, скорее всего. Я тут в этой системе пока еще не разобрался. А поток информации приличный, путаюсь. Сорри.

Link to comment
Share on other sites

Под Nc >= 22.0 тоже вываливается? 

Целью была адаптация под нану, а под acad и без всяких переделок должно было работать как есть, см. под acad dwg.ru, caduser.ru и прочих.

Переделки  - это попутно и чисто энтузиазм без проверок под acad. 

Link to comment
Share on other sites

4 минуты назад, kpblc сказал:

в этой системе пока еще не разобрался

в загрузках файлов достаточно неочевидно сделано((((

Спойлер

image.png.f3c208cdb6e3cc2bfe199b40d9fcfe17.png

с телефона я вообще не сразу понял, что куда писать

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...