![]() | ![]() |
Translate to: |
|||||
Обратная связь | Новости САПР | Программы | Документация | Полезные советы | Обзорные статьи | ||
Заказ и разработка | Каталог САПР | САПР-конференция | Библиотека ГОСТов | Наши соавторы | Коммерческое ПО |
Visual LISP обладает возможностью возвращать текст, сохраненный в .txt - файле, который в свою очередь был скомпилирован в VLX-приложение. VLX-файл представляет собой набор одного или более AutoLISP и DCL файлов, созданых с использованием среды Visual LISP. Однако текстовые файлы возвращаются полностью, а не как биты данных от файла данных. Однако существует метод позволяющий обращатся к дискретным данным, который и будет описан ниже.
Что нужно сделать.
Для файла данных, чтобы бы он был пригодный для использования как данные, возращаемые функцией
(vl-get-resource), данные должны быть сформатированы так чтобы можно было идентифицировать определенные
строки данных и извлечь только требуемые элементы.
Формат подобен формату текстовых данных, котрый я использовал раньше с одним отличием - данные становятся списком из одной строки вместо многострочных списков, как показано ниже:
Для AutoLisp("010" "1.5" "12.75" "0.375") ("020" "3.5" "14.50" "0.675") ("030" "4.5" "16.75" "0.875")Для запаковки в VLX
("010" "1.5" "12.75" "0.375" "020" "3.5" "14.50" "0.675" "030" "4.5" "16.75" "0.875")
Получение данных
После того как файл запакован в VLX-приложение, данные возвращаются с помощью
функции (nth). Прежде всего подпрограмма возвращает список и назначает его переменной:
(setq DATA_LIST (vl-get-resource "datafile"))(vl-get-resource) возвращает список данных как текстовую строку, которую вы должны сконвертировать в доступный для использования список с помощью следующего кода:
(setq DATA_LIST (read DATA_LIST))Теперь вы можете использовать функцию (nth) для обработки списка. Чтобы извлеч данные, ассоциированые с элементом "020" , к примеру, используется следующие операторы:
(setq ITEM_ID (nth 4 DATA_LIST)) (setq ITEM_01 (nth 5 DATA_LIST)) (setq ITEM_02 (nth 6 DATA_LIST)) (setq ITEM_03 (nth 7 DATA_LIST))
Как находить данные, если их расположение неизвестно
Для извлечения данных, если их расположение в списке неизвестно, можно использовать следующий цикл:
(setq IN 0 ID# "020") (while (/= ITEM_ID ID#) (setq ITEM_ID (nth IN DATA_LIST)) (setq IN (1+ IN)) )После того как подпрограмма определила местонахождения элемента и сохранила его местоположение в переменную IN, извлечем нужные нам данные:
(setq ITEM_01 (nth IN DATA_LIST)) (setq ITEM_02 (nth (1+ IN) DATA_LIST)) (setq ITEM_03 (nth (+ 2 IN) DATA_LIST))
Запаковка файла
Чтобы запаковать файл данных в VLX-приложение, откроем New Application wizard в подменю
File/Make Application в меню VLISP. Выберем режим Expert (рис. 1),
и затем добавим файлы ресурсов в панеле Include (рис. 2).
рис. 1
рис. 2
Установим тип файлов Text files, и затем выберем необходимые файлы для включения.
Продолжим выполнение волшебника и создадим наше приложение. Файлы данных сохранятся в результирующем файле VLX-приложения.
Copyright © Сайт поддержки пользователей САПР by Victor Tkachenko