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

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

Lisp выполняемый в нескольких рисунках

Ответ
Поиск в этой теме
Непрочитано 24.12.2010, 18:00 #1
Lisp выполняемый в нескольких рисунках
Iory
 
инженер-конструктор
 
г. Казань
Регистрация: 24.04.2010
Сообщений: 19

На лиспе пишу с удовольствием, но не так часто как хотелось бы.
возник вопрос:
подгруженная Lisp программа работает в конкретном файле рисунка (то есть имеет свои глобальные переменные и т.д.)
в другом же, она уже имеет отличные глобальные переменные, даже если была загружена в оба "одновременно"
Код:
[Выделить все]
(vl-load-all...)
1) можно ли организовать передачу переменных типа вариант (ну и других так же) из одного рисунка в другой?

2) как организовать работу программы для работы в разных рисунках одновременно? менять их, нарпимер, с помощью
Код:
[Выделить все]
(VLAX-Put-PROPERTY (vlax-get-or-create-object "AutoCAD.Application") "ActiveDocument" <имя рисунка>)
__________________
чертежи - когда не хватает слов, чтобы описать "чувства"
Просмотров: 2188
 
Непрочитано 24.12.2010, 18:21
1 | #2
Кулик Алексей aka kpblc
Moderator

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


Используй внедокументные переменные (см. функции vl-bb-ref и vl-bb-set). Ну или работа с файлами. или с реестром. Вариантов тьма
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.12.2010, 08:56
#3
Iory

инженер-конструктор
 
Регистрация: 24.04.2010
г. Казань
Сообщений: 19
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Используй внедокументные переменные (см. функции vl-bb-ref и vl-bb-set).
о! точно! совершенно про это забыл. огромное спасибо

а есть ли пример организации кода (именно Lisp), который не закончит своё выполнение при переводе в активное состояние другого рисунка?
__________________
чертежи - когда не хватает слов, чтобы описать "чувства"
Iory вне форума  
 
Непрочитано 25.12.2010, 09:22
1 | #4
Лиспер


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


lisp работает только в контексте документа, в котором он запущен. Достаточно вспомнить танцы с бубнами, которые начинались после программного открытия другого файла...
Можно, конечно, попробовать использовать скрипты (scr), но я с ними как-то не работал. Более подробно - см. В.Свет, "Язык макрокоманд и создание макросов"; Д.Эббот "Секреты, которые должен знать каждый пользователь" (книг сейчас перед глазами нет, поэтому названия примерные).
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 25.12.2010, 10:30
#5
Iory

инженер-конструктор
 
Регистрация: 24.04.2010
г. Казань
Сообщений: 19
<phrase 1=


Цитата:
Сообщение от Лиспер Посмотреть сообщение
lisp работает только в контексте документа, в котором он запущен. Достаточно вспомнить танцы с бубнами, которые начинались после программного открытия другого файла...
ну, чтож, нет так нет, ничего страшного) спасибо, что остановили. думаю, пока нет особого смысла так углубляться.
тогда такой вопрос:
подскажите, пожалуйста, какой из методов AutoCAD.Application или же его "детей" отвечает за выполнение команд? кмк, будет легче организовать что-то вроде имитации ввода в командную строку с помощью, скажем, С++.

спасибо
__________________
чертежи - когда не хватает слов, чтобы описать "чувства"
Iory вне форума  
 
Непрочитано 25.12.2010, 10:45
1 | #6
Лиспер


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


Про С++ не скажу, т.к. просто не знаю. А так можно попробовать нечто типа SendCommand - это если обращаться именно к командным методам. Но, будь у меня выбор, я бы подумал об обработке сторонних файлов через ObjectDBX (поскольку этот механизм я на лиспе "прокрутил", и знаю его подводные камни). Для C# / VB.NET насчет подобных вещей не в курсе
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 25.12.2010, 11:03
#7
Iory

инженер-конструктор
 
Регистрация: 24.04.2010
г. Казань
Сообщений: 19
<phrase 1=


рекомендованная в сообщении #4 данной темы литература как раз на тему ObjectDBX?
встроенный в aCad редактор удобен для написания программ на данном языке?
с чего порекомендуете начать изучение?
__________________
чертежи - когда не хватает слов, чтобы описать "чувства"
Iory вне форума  
 
Непрочитано 25.12.2010, 11:07
1 | #8
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Считаю, что вопрос
Цитата:
как организовать работу программы для работы в разных рисунках одновременно?
задан не корректно, потому и ответы на него кривые.

Даже Windows все делает последовательно (шины в единственном экземпляре, хотя процессоров много).

Лисп - это сценарий. Того, что выполнено уже нет. Нельзя говорить про сценарий как про что-то единое и неделимое.
Сценарий можно начать выполнять в одном файле, а продолжать в другом.
Можно написать сценарий, который будет генерировать дочерние сценарии и запускать их в других файлах.
Можно сделать схему типа звезда, когда один документ - ведущий, а все остальные ведомые, а можно сделать кольцо, когда сценарий перед окончанием работы запускает следующий в другом документе, а тот закрывает предидущий и открывает следующий документ передавая эстафету.

Много чего можно.

Цитата:
а есть ли пример организации кода (именно Lisp), который не закончит своё выполнение при переводе в активное состояние другого рисунка?
Конечно есть, но его действие при активации другого документа просто приостанавливается и продолжается когда документу возвращают активность.
Supermax вне форума  
 
Автор темы   Непрочитано 25.12.2010, 11:12
#9
Iory

инженер-конструктор
 
Регистрация: 24.04.2010
г. Казань
Сообщений: 19
<phrase 1=


Цитата:
Сообщение от Supermax Посмотреть сообщение
Можно написать сценарий, который будет генерировать дочерние сценарии и запускать их в других файлах.
Можно сделать схему типа звезда, когда один документ - ведущий, а все остальные ведомые, а можно сделать кольцо, когда сценарий перед окончанием работы запускает следующий в другом документе, а тот закрывает предидущий и открывает следующий документ передавая эстафету.
на данном этапе меня устроит любой способ.
для организации "звезды", если я правильно понял, как раз бы и хотелось знать какой метод позволит передать команду на выполнение подпрограммы.
очень интересна и передача эстафеты после того как активным становится другой документ.
буду признателен за подсказки
__________________
чертежи - когда не хватает слов, чтобы описать "чувства"
Iory вне форума  
 
Непрочитано 25.12.2010, 11:28
#10
Лиспер


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


Нет, там не по ObjectDBX. Про ObjectDBX вообще мало информации, но то ли на этом форуме, то ли на caduser.ru она мелькала.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp выполняемый в нескольких рисунках

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) Red Nova LISP 4555 24.03.2024 13:44
Произведение нескольких чисел на чертеже? Нужен Lisp по типу sum.lsp UnAtom LISP 2 24.11.2010 20:18
Запуск Lisp команды в новом документе BlackHarp LISP 1 26.03.2009 23:06
Lisp для редактирования нескольких мтекстов сразу Red Nova LISP 5 17.03.2008 21:28
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19