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

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

Autolisp внесение дополнений в дескриптер файла

Ответ
Поиск в этой теме
Непрочитано 17.07.2015, 07:51 #1
Autolisp внесение дополнений в дескриптер файла
DENBASS2004
 
Регистрация: 24.06.2009
Сообщений: 94

Добрый день. Пишу программу для облегчения своей работы. Дошел до места когда нужно открывать деталь и делать на нее чертеж. Пытался через sdi делать только одно окно активное, файл открывался программа продолжала работать, но Алексей крЫс подсказал что после этого он теряет глобальные и локальные переменные. Проверил, так и получилось. Можно конечно в программе снова вставить строчки в которой определяются все переменные, но это придеться делать при открытие каждого файла, а их иногда по 500-700. Решил открывать дескриптер файла, но программа почему то дальше работает с активным окном. Почитал Полещука, но что то я совсем не нашел как сделать, что бы программа работала не в активном окне, а вносила дополнения в открытом дескрипторе файла. Подскажите как это заставить сделать?

Последний раз редактировалось DENBASS2004, 17.07.2015 в 07:52. Причина: дополнение описания
Просмотров: 2185
 
Непрочитано 17.07.2015, 08:15
#2
Psyakrev


 
Регистрация: 17.06.2010
Сообщений: 438


Работа с неактивным документом
http://autolisp.ru/2010/04/08/procee...tive-document/

ObjectDBX Wrapper
http://www.lee-mac.com/odbxbase.html
Psyakrev вне форума  
 
Автор темы   Непрочитано 17.07.2015, 08:29
#3
DENBASS2004


 
Регистрация: 24.06.2009
Сообщений: 94


Цитата:
Сообщение от Psyakrev Посмотреть сообщение
Работа с неактивным документом
http://autolisp.ru/2010/04/08/procee...tive-document/

ObjectDBX Wrapper
http://www.lee-mac.com/odbxbase.html
я нашел в просторах интернета, что для внесения изменений в дескриптор спереди ставиться write а в конце переменная дескриптора. Через нее можно сделать?
DENBASS2004 вне форума  
 
Непрочитано 17.07.2015, 09:20
#4
Psyakrev


 
Регистрация: 17.06.2010
Сообщений: 438


Забудьте про дескриптор - в autolisp он нужен только для простых операций с файлом типа считать/записать строку, для работы с документом dwg он абсолютно не подходит. В ссылках выше указано, как работать с неактивным документом через odbx и vla-объект документа. Что можно сделать с этим объектом и как через него работать с примитивами чертежа читайте в Autocad ActiveX Reference.

Насчет переменных. Lisp приложение всегда выполняется в контексте активного документа, соответственно, все переменные будут определены только в нем. Чтобы переносить переменные и данные между активными документами, надо использовать функции vla-bb-set, vla-bb-ref - эти переменные будут доступны, пока не будет закрыт сам Autocad.
Psyakrev вне форума  
 
Автор темы   Непрочитано 17.07.2015, 09:25
#5
DENBASS2004


 
Регистрация: 24.06.2009
Сообщений: 94


Цитата:
Сообщение от Psyakrev Посмотреть сообщение
Насчет переменных. Lisp приложение всегда выполняется в контексте активного документа, соответственно, все переменные будут определены только в нем. Чтобы переносить переменные и данные между активными документами, надо использовать функции vla-bb-set, vla-bb-ref - эти переменные будут доступны, пока не будет закрыт сам Autocad.
Вот это как раз бы меня и спасло. Спасибо за подсказку, сейчас разберусь с этим. Это удобнее будет чем работа с неактивным документом, так могу видеть что делается в новом активном. Еще раз спасибо.

----- добавлено через ~5 ч. -----
Цитата:
Сообщение от Psyakrev Посмотреть сообщение
Насчет переменных. Lisp приложение всегда выполняется в контексте активного документа, соответственно, все переменные будут определены только в нем. Чтобы переносить переменные и данные между активными документами, надо использовать функции vla-bb-set, vla-bb-ref - эти переменные будут доступны, пока не будет закрыт сам Autocad.
Примерно вот что получилось:
Открываю автокад с пустым файлом
(setq papka3 (getstring T "\n Введите путь к папке3")) ;вводим путь папки шаблонов U:\Автоматизация проекта\Шаблоны форматов
(vl-bb-set 'papka4 papka3) ;даем новое значение для работы в других файлах
(command "_sdi" 1)
(setq Ch1 (command "_open" "_no" (strcat papka1 "\\01-00.00.000 СБ-Опорные элементы.dwg") (strcat papka1 "\\01-01.00.002-Косынка.dwg"))) ;открывается файл косынки и становиться активным
(setq papka5 (vl-bb-ref 'papka4)) ;считываю путь папки и задаю новую ей переменную
(command "_layout" "_template" (strcat papka5 "\\A4v-1.dwt") "A4") а вот тут все встает, он определяет этот путь но ничего не делает, наверное из за того что при открытие этого файла первоначальный принудительно закрылся.

Попробывал иначе:

Открываю автокад с пустым файлом
(setq papka3 (getstring T "\n Введите путь к папке3")) ;вводим путь папки шаблонов U:\Автоматизация проекта\Шаблоны форматов
(vl-bb-set 'papka4 papka3) ;даем новое значение для работы в других файлах
(command "_sdi" 0)
(setq Ch1 (vla-open (vla-get-Documents (vlax-get-acad-object)) (strcat papka1 "\\01-01.00.002-Косынка.dwg") :vlax-false " ")) ;открывается файл косынки но не становится активным
(setq papka5 (vl-bb-ref 'papka4)) ;считываю путь папки и задаю новую ей переменную
(command "_layout" "_template" (strcat papka5 "\\A4v-1.dwt") "A4") и снова не то, он этот шаблон ставит в активный файл. Подскажите что не так?
DENBASS2004 вне форума  
 
Непрочитано 17.07.2015, 14:51
#6
Кулик Алексей aka kpblc
Moderator

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


DENBASS2004, тэги code зачем существуют, как думаешь?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.07.2015, 15:05
#7
DENBASS2004


 
Регистрация: 24.06.2009
Сообщений: 94


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
тэги code
можно перевод для неграмотного
DENBASS2004 вне форума  
 
Непрочитано 17.07.2015, 22:11
#8
Кулик Алексей aka kpblc
Moderator

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


Найди отличия:
(setq papka3 (getstring T "\n Введите путь к папке3")) ;вводим путь папки шаблонов U:\Автоматизация проекта\Шаблоны форматов
Код:
[Выделить все]
(setq papka3 (getstring T "\n Введите путь к папке3")) ;вводим путь папки шаблонов U:\Автоматизация проекта\Шаблоны форматов
Код:
[Выделить все]
 (setq papka3 (getstring T "\n Введите путь к папке3")) ;вводим путь папки шаблонов U:\Автоматизация проекта\Шаблоны форматов
Какой из трех кусков читать проще?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.07.2015, 08:33
#9
DENBASS2004


 
Регистрация: 24.06.2009
Сообщений: 94


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Какой из трех кусков читать проще?
понятно, просто уж описал как смог, далее постараюсь вводить код отдельно описание отдельно но не обещаю в цветах

Последний раз редактировалось Кулик Алексей aka kpblc, 18.07.2015 в 18:38.
DENBASS2004 вне форума  
 
Непрочитано 18.07.2015, 18:38
#10
Кулик Алексей aka kpblc
Moderator

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


Цитирую свой ответ без обработки тэгов:

Найди отличия:
(setq papka3 (getstring T "\n Введите путь к папке3")) ;вводим путь папки шаблонов U:\Автоматизация проекта\Шаблоны форматов
[code](setq papka3 (getstring T "\n Введите путь к папке3")) ;вводим путь папки шаблонов U:\Автоматизация проекта\Шаблоны форматов[/code]
[code][lisp](setq papka3 (getstring T "\n Введите путь к папке3")) ;вводим путь папки шаблонов U:\Автоматизация проекта\Шаблоны форматов[/lisp][/code]
Какой из трех кусков читать проще?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp внесение дополнений в дескриптер файла

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Autolisp. Как вставить блок из файла? riddler LISP 3 07.04.2014 15:18
MS Word Нужен скрипт для копирования с одновременной заменой части текста Солидворкер Прочее. Программное обеспечение 27 27.11.2012 15:52
структурированный список Holon Программирование 22 11.09.2007 14:09