| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
07.11.2008, 15:29 | #1 | |
Нужно немодальное окно для редактора блоков, показывающее текущий Visibility Set
архитектор
СПб
Регистрация: 01.04.2008
Сообщений: 296
|
||
Просмотров: 7215
|
|
||||
Как оказывается, я уже сделал функцию определения текущего Visibility Set-a, но она не немодальная. Все время надо давить на кнопку,чтобы сориентироваться где ты сейчас находишся. Кроме постоянного слежения за текущим Visibility Set-ом нужно иметь возможность выделив элемент знать к какому он Visibility Set-у принадлежит. Если кто-нибудь не сочтет за труд помочь это сделать, я тоже подключусь в плане соединения VBA и AutoLISP.
|
||||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Цитата:
Есть переменная MODEMACRO Так вот та функция, которая сидит на кнопке помимо вывода диалогового окна текущего Visibility Set-a пишет его имя в переменную MODEMACRO. Соответственно и ф-ции, меняющие Visibility Set, после смены тоже пишут его название в MODEMACRO. Глянул в статусную сточку и все видишь.
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Почему же бред? Очень здравая мысль. Благодарствую. Я так и сделаю. Я уже почти сделал новую версию Visibility ADD2, туда и вставлю.
Только это не решает насущных проблем. Уже давно, на разных форумах народ обсуждает необходимость создания COM объектов - немодальных окон, разного назначения, только воз и ныне там. Вместо такого СОМ объекта вполне может сойти макрос на VBA с таким окном, только надо организовать связь VBA и AutoLISP. Меня больше интересует вопрос решения связи, чем сами окна. Я в VBA не силен, хотя книг на эту тему уже много имею. VBScript с AutoLISP связывается, так почему VBA связать никто не пытается? У меня есть идеи как это сделать. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Связь VBA <-> LISP существует уже очень давно. Ищи vlax.cls (кстати, и на этом форуме он выкладывался - лично мне просто искать лениво).
Немодальные окна, как мне кажется, будет проще все же создавать через ObjectARX (по крайней мере в книгах Полещука этот вопрос освещен). Только С++ надо знать
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
А как этим файлом пользоваться? Я VBA не знаю, но знаю лисп. Допустим кто-то написал макрос на VBA с диалоговым окном в виде окна с текстом. Как мне достучаться до этого окна и передать туда данные, а после того, как я там выбрал пару пунктов и нажал кнопку, получить эти данные? Файл твой я скачал и смотрю на него как баран на новые ворота. В теме тоже нет никаких пояснений, только ссылка на форум где все на английском.
|
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Честно скажу - я задачами передачи данных VBA<->LISP не занимался. Вечером попробую расковырять код, если чего получится - сообщу.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
А нельзя, к примеру, через запись-чтение файла? Т.е. в Lisp создать текстовой файл (...\temp.txt), записать в него нужную информацию, затем вызвать макрос VBA, который при запуске этот файл прочитает, при необходимости внесет в него изменения, которые в свою очередь прочитает Lisp.
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
AlexV, Тогда уж лучше черер USER* переменные, например USERS1-USERS5
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Для того, чтобы передавать данные через переменные или файл, надо следить и Автолиспу и VBA за событиями в файле или переменных, да и указатель на объект, к примеру, через файл не передашь. Записать туда конечно можно, но читать не будет. Можно метки передавать, но это не всегда подойдет.
Я мыслю так: можно попробовать общаться через СОМ объект MSScriptControl.ScriptControl. Поскольку на VBA пишется окно, то значит макрос на VBA - ведомый, а на Автолиспе - ведущий. Макрос на Автолиспе создает СОМ MSScriptControl.ScriptControl и запускает макрос на VBA с аргументом в виде указателя на этот объект. Затем, макрос на VBA, в процессе развертывания, запихивает в MSScriptControl.ScriptControl скрипт связи со своим окном (тем самым окном, которое создано в VBA) и с Автокадом. Макрос на Автолиспе тоже может запихивать скрипты в MSScriptControl.ScriptControl, но надо ли это не знаю пока. Далее, макрос на Автолиспе создает и запускает реактор на событие изменения объекта MSScriptControl.ScriptControl, такой же реактор должен быть написан и на VBA. Далее дело техники, что надо, то и передавай. Как только кто либо из сторон меняют что либо в MSScriptControl.ScriptControl, так сразу это становится известно второй стороне. Через MSScriptControl.ScriptControl можно передавать указатели на объекты. VBScript, это упрощенный VBA, так что тому, кто знает VBA проблем не создаст. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
vl-vbarun уже не катит?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Я ж говорю - не шарю я в VBA! Чтобы мне "зашарить" надо простенький (на сколько это возможно) пример тут расписать. Что такое vl-vbarun? - Выполнение VBA макроса. Ну и что? Как обмениваться?
Вот тут подглядел: http://www.caduser.ru/cgi-bin/f1/board.cgi?t=15950qR и тут: http://forum.dwg.ru/showthread.php?t=9087 С реакторами народ потеет, но мне от этого ни холодно, ни жарко. Неужели так трудно сказать "давай попробуем"? Даже потихоньку, не каждый день, а от случая к случаю? Неужели никому не интересно работать с немодальными окнами VBA? Там ведь такой удобный инструментарий их создания. Всего-то - одно текстовое окно и чтобы из Автолиспа туда попадали строки, а после выбора - в Автолисп передавался результат выбора. Да, к стати, реактор Автолиспа можно настроить и на переменную. А VBA через ActiveDocument.SendCommand Код:
|
||||
|
||||
Kpblc, ты это читал?
http://forum.dwg.ru/showpost.php?p=308336&postcount=79 |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Supermax, ты ж прекрасно знаешь, что я с VBA не дружу ни разу. Мне намного проще в сегодняшних условиях сделать dll-ку, зарегистрировать ее и работать с ее объектами через СОМ-интерфейс. Ну не было у меня задач создания немодальных окон. Не было.
А то, что из VBA можно тупо запускать любой лисп - так это давно известно, конструкция SendCommand стара как VBA. "От случая к случаю" у меня не получится: вечером хотел сесть за разбор vlax.cls, но так и не получилось. Вот тебе и все случаи... Насчет http://forum.dwg.ru/showpost.php?p=308336&postcount=79: Код <OBJECT ID="WebBrowser" и дальше может элементарно не сработать, если а) браузер по умолчанию не MSIE и (или) б) у него другой ClassID.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Ты прекрасно знаешь, что нет такого Windows где нет MSIE. Без него просто ничего работать не будет. Другое дело, что ему иногда "в эфир" выходить не дают, но он всегда есть, а значит есть и объект WebBrowser.
По умолчанию MSIE совсем не обязательно быть, поскольку MSIE и WebBrowser, хоть и братья близнецы, но каждый сам по себе. Но я проверю. Второе - приведи мне пример, где этот объект имеет другой классификатор. ClassID он также имеет и ProgID Shell.Explorer. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Ты мне предлагаешь снести Windows XP и поставить Vista? Или 2000?
Хотя, пожалуйста (для Windows XP Pro SP2), тоже вариант: HKEY_CLASSES_ROOT\CLSID\{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B} Виртуалка с 2000-ми накрылась, так что сказать насчет Win2k ничего не могу.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Есть вполне приемлемое решение (хотя, убей меня бог, не понимаю твоих опасений). Страница HTML закачивается не браузером, а Автокадовской функцией получения файла из сети. Затем в этот файл вставляем какой угодно СОМ объект (можем даже этот файл переименовать на HTA). Или открывается лежащий в компе пользователя файл. А уж затем, мы этот файл передаем любому браузеру для его представления.
В таком варианте, что у пользователя имеется для работы со страницами, то и откроется. Определение наличия и предоставление выбора из имеющегося впаяно в макрос. Но я могу на midoma.ru попросить вставить в одну из страниц этот объект и посмотреть как у пользователей будет баг выскакивать или нет. Можно и тут в теме его впихнуть и понаблюдать. Ты можешь такое сделать, или попросить это сделать? |
||||
|
||||
И ничего я снести не предлагаю. У самого XP SP2 и я его снесу, только если Vista умрет, а вместо нее появится что-нибудь более достойное. Да и то, куплю новую мать и корпус и второй комп сделаю. И мне фиолетово, если на каких-то конфигурациях что-то не пойдет. Я уже свыкся с мыслью, что выбирая даже железо, надо понимать, что такое совместимость и не брызгать слюной, когда какие-то проги не пашут, или сбоят.
Потом, допустим сделали крутую прогу, но она не идет под 2000 или 2003 кадом - ну и что? Если народ плакать начнет, то тогда можно будет искать выход. Вот сделал я вебмакрос под IE - народ застонал, поскольку многие влюблены в криатив - Я репу почесал, и пытаюсь найти решение для других браузеров, включая и Автокадовский. Интересно, будут те браузеры, типа Оперы энд компани, говорить, что этот СОМ объект им не знаком? |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Давай я тебе расскажу о своих опасениях, связанных не с внедрением объектов куда бы то ни было, а с несколько другими вопросами.
Допустим, такое окно существует. Создали, запустили, радуемся. Многодокументный режим работы. Открыто сразу 6 файлов. Уже задача: повторно не открыть окно после перехода из одного документа в другой. Задача 2: в файле 1 идет работа в пространстве модели, в файле 2 - открыт редактор дин.блоков, в файле 3 - работа в пространстве модели, в файле 4 - редактирование блока по месту; в файле 5 - редактируется внешняя ссылка, в файле 6 - опять же редактор дин.блоков. Задача - отследить, где окно должно быть открыто, где - закрыто. При возврате в режим редактирования дин.блоков окно открыть. Задача 3: отобразить актуальную информацию. Все действия выполнять автоматически, не требуя от пользователя принудительного открытия / закрытия окна. На предмет "использования не MSIE в качестве дефолтного браузера". Фантазия у меня больная, так что терпи Дефолтный браузер - Mozilla. На момент последнего закрытия в Mozilla было открыто 62 вкладки. Включен режим сохранения последних вкладок. Ты открываешь браузер, создаешь в нем новую закладку, работаешь 10 секунд и вырубаешь его (кстати, не забудь свою закладку "снести"). А странички-то не загрузились... При последующем штатном открытии их содержимое может не отображаться (а иногда и адрес "слетает"). Спасибо пользователи тебе точно не скажут. Особенно те, кто сидит не на безлимитке. Вариант в развитие: два монитора, браузер по умолчанию выводится на второй (на данный момент выключенный или занятый просмотром очередного фильма). Ваши действия, мистер ? Почему я так говорю - так только потому, что на работе попытка вызова браузера из-под acad.exe привела к открытию вкладки в Mozilla. P.S. в веб-программировании я дуб дубом, и вполне допускаю, что я пишу "не о том".
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Закладные лифтовых приямков | винсент75 | Поиск литературы, чертежей, моделей и прочих материалов | 13 | 11.08.2009 10:16 |
Предложения по расчетным моделям сооружений | aldt | Расчетные программы | 8 | 06.07.2009 17:53 |
Электромагнитная пушка | T-Yoke | Машиностроение | 112 | 06.08.2008 18:48 |
Юмор 2007 | Огурец | Разное | 1172 | 29.12.2007 11:16 |