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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > lisp : проверка наличия типа линии в файле

lisp : проверка наличия типа линии в файле

Ответ
Поиск в этой теме
Непрочитано 20.06.2005, 17:16 #1
lisp : проверка наличия типа линии в файле
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 37,382

Проблема: в процессе выполнения lisp'a выполняется команда
Код:
[Выделить все]
      (command "_.-Linetype"
	       "_Load" current-layer-ltype linedef-file "_Yes" ""
	       );
здесь current-layer-ltype - тип линии, который надо загрузить, linedef-file - файл, в котором лежит описание линии. Линия с символами, использует текстовый стиль (естественно, он ранее создан или переопределен). Так вот собственно проблема: при первом вызове лог работы таков:
Код:
[Выделить все]
Command: _.-Linetype
Current line type:  "ByLayer"
Enter an option [?/Create/Load/Set]: _Load
Enter linetype(s) to load: B0 Enter name of linetype file to search 
<gosted.lin>: gosted.lin
Linetype "line_std" loaded.
Enter an option [?/Create/Load/Set]: _Yes
Invalid option keyword.
И выполнение лиспа прекращается. Каким образом можно "отловить", есть ли уже такая линия в файле или нет?
Маленькое уточнение: надо "чистый" лисп, применение vla- vlax- и vlr- функций (за исключением vl-*) надо избегать как огня - функция будет подгружаться в LT + LT Extender, а он держит только vl-*.
Профи в лиспе, прошу помощи!
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 3227
 
Непрочитано 20.06.2005, 18:07
#2
vx

свободный художник (freelancer)
 
Регистрация: 24.04.2005
Сообщений: 58


(tblobjname "ltype" "continuous")
если нет - возвращает nil
vx вне форума  
 
Непрочитано 20.06.2005, 18:12
#3
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,790
<phrase 1=


Как пример.
Код:
[Выделить все]
(setq current-layer-ltype "DASHED")
(if (tblsearch "LTYPE" current-layer-ltype)
    nil
      (command "_.LINETYPE"
	       "_L"
	       current-layer-ltype
;;; с путями
	       linedef-file 
	       ""
      )
    )
  )
Удачи.
Alan вне форума  
 
Непрочитано 20.06.2005, 21:42
#4
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 773


Попробуй так:
Код:
[Выделить все]
(defun demo-linetype-load (linetype file / lines)
  (if (setq lines (vla-get-Linetypes
                    (vla-get-ActiveDocument (vlax-get-acad-object))
                  )
            file  (findfile file)
      )
    (if
      (vl-catch-all-error-p
        (vl-catch-all-apply (function vla-Item) (list lines linetype))
      )
       (princ (if (vl-catch-all-error-p
                    (vl-catch-all-apply
                      (function vla-Load)
                      (list lines linetype file)
                    )
                  )
                "\nLoading failed with error!"
                "\nLoading complete!"
              )
       )
       (princ "\nLoading failed!\nLinetype already exist!")
    )
    (princ "\nLoading failed!\nFile not found!")
  )
  (princ)
)
Код:
[Выделить все]
(demo-linetype-load "DOT2" "acadiso.lin")
Alaspher вне форума  
 
Автор темы   Непрочитано 21.06.2005, 08:04
#5
Кулик Алексей aka kpblc
Moderator

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


Всем спасибо, буду пробовать
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > lisp : проверка наличия типа линии в файле

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск