Тема: LISP. Загрузка типа линии. Универсальная.

возвращает t при успешной загрузке и nil при ошибке загрузки. Без расшифровки ошибки выполнения.

;|=============================================================================
*    Функция подгрузки типа линии в текущий файл. Учитывает возможную
* локализацию системы.
*    Параметры вызова:
*  ltype-name  имя типа линии для английской версии
*  ltype-file  имя файла описания типа линии. nil -> "acadiso.lin"ю
*      Если файл с описанием типа линии не лежит по путям
*      поддержки када, надо указывать полный путь к нему.
*    Примеры вызова:
(_kpblc-linetype-load "center" nil)  ; для русской версии подгружает Осевая и возвращает
                                     ; t при успехе
***  Соответствие наименований линий обеспечивается огромным списком ltype_list
*** который можно и нужно дополнять :) Только надо либо все делать мелкими
*** буквами, либо жестко соблюдать регистр в моменты вызовов.
***  Тип линии "Continuous" обработке не подвергается - он есть во всех версиях
=============================================================================|;
(defun _kpblc-linetype-load
       (ltype-name ltype-file / ltype_normal ltype_list result)
  (vl-load-com)
  (setq ltype_list '(("center" . "осевая")
                     ("center2" . "осевая2")
                     ("hidden" . "скрытая")
                     ("hidden2" . "скрытая2")
                     )
        ltype-name (strcase ltype-name t)
        ) ;_ end of setq
  (if (not ltype-file)
    (setq ltype-file "acadiso.lin")
    ) ;_ end of if
  (if (vl-string-search "419" (vlax-product-key))
    ;; Русская версия, меняем имя типа линии
    (setq ltype_normal (cdr (assoc ltype-name ltype_list)))
    (setq ltype_normal ltype-name)
    ) ;_ end of if
  (if (not (tblsearch "ltype" ltype_normal))
    ;; тип линии не найден, надо его загрузить. Тип линии должен быть
    ;; описан в файле
    (setq result (not (vl-catch-all-error-p
                        (vl-catch-all-apply
                          'vla-load
                          (list
                            (vlax-get-property
                              (vla-get-activedocument (vlax-get-acad-object))
                              'linetypes
                              ) ;_ end of vlax-get-property
                            ltype_normal
                            ltype-file
                            ) ;_ end of list
                          ) ;_ end of vl-catch-all-apply
                        ) ;_ end of vl-catch-all-error-p
                      ) ;_ end of not
          ) ;_ end of setq
    ) ;_ end of if
  result
  ) ;_ end of defun

Re: LISP. Загрузка типа линии. Универсальная.

Дополню список ltype_list. Взято из acadiso.lin русского и английского Автокада

 (setq    ltype_list '(("border" . "рант")
             ("border2" . "рант2")
             ("borderX2" . "рантX2")
             ("center" . "осевая")
             ("center2" . "осевая2")
             ("centerX2" . "осеваяX2")
             ("dashdot" . "штрихпунктирная")
             ("dashdot2" . "штрихпунктирная2")
             ("dashdotX2" . "штрихпунктирнаяX2")
             ("dashed" . "штриховая")
             ("dashed2" . "штриховая2")
             ("dashedX2" . "штриховаяX2")
             ("divide" . "линия_сгиба")
             ("divide2" . "линия_сгиба2")
             ("divideX2" . "линия_сгибаX2")
             ("dot" . "пунктирная")
             ("dot2" . "пунктирная2")
             ("dotX2" . "пунктирнаяX2")
             ("hidden" . "невидимая")
             ("hidden2" . "невидимая2")
             ("hiddenX2" . "невидимаяX2")
             ("phantom" . "фантом")
             ("phantom2" . "фантом2")
             ("phantomX2" . "фантомX2")
             ("fenceline1" . "ограждение1")
             ("fenceline2" . "ограждение2")
             ("tracks" . "пути")
             ("batting" . "изоляция")
             ("hot_water_supply" . "горячая_вода")
             ("gas_line" . "газопровод")
             ("zigzag" . "зигзаг")
             )
    ltype-name (strcase ltype-name t)
    ) ;_ end of setq