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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нужно немодальное окно для редактора блоков, показывающее текущий Visibility Set

Нужно немодальное окно для редактора блоков, показывающее текущий Visibility Set

Ответ
Поиск в этой теме
Непрочитано 07.11.2008, 15:29 #1
Нужно немодальное окно для редактора блоков, показывающее текущий Visibility Set
Ddjo
 
архитектор
 
СПб
Регистрация: 01.04.2008
Сообщений: 296

Собственно нужно немодальное окно для редактора блоков, показывающее текущий Visibility Set, для того чтобы можно было пользоваться наработками Supermax для добавления в динамические блоки дополнительных параметров видимости.
В данный момент, понять в каком ты в данный момент параметре видимости довольно проблематично (для меня вообще невозможно)
вот что по этому поводу говорят Supermax и Volodich:
http://forum.dwg.ru/showpost.php?p=307275&postcount=322
http://forum.dwg.ru/showpost.php?p=307377&postcount=323
Но мне все же, кажется, что идеально было бы:
http://forum.dwg.ru/showpost.php?p=307500&postcount=330
Если бы кто-нибудь занялся созданием такого....эээээ..., не знаю как выразиться ...."удобства". Думаю все настоящие и потенциальные пользователи нескольких параметров видимости в динамических блоках прыгали бы до потолка от счастья.
Просмотров: 7206
 
Непрочитано 09.11.2008, 00:17
#2
Supermax

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


Как оказывается, я уже сделал функцию определения текущего Visibility Set-a, но она не немодальная. Все время надо давить на кнопку,чтобы сориентироваться где ты сейчас находишся. Кроме постоянного слежения за текущим Visibility Set-ом нужно иметь возможность выделив элемент знать к какому он Visibility Set-у принадлежит. Если кто-нибудь не сочтет за труд помочь это сделать, я тоже подключусь в плане соединения VBA и AutoLISP.
Supermax вне форума  
 
Непрочитано 09.11.2008, 15:14
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Цитата:
Все время надо давить на кнопку,чтобы сориентироваться где ты сейчас находишся
Я еще динамические блоки на таком уровне как Supermax не ковырял, но в порядке бреда:
Есть переменная MODEMACRO Так вот та функция, которая сидит на кнопке помимо вывода диалогового окна текущего Visibility Set-a пишет его имя в переменную MODEMACRO. Соответственно и ф-ции, меняющие Visibility Set, после смены тоже пишут его название в MODEMACRO. Глянул в статусную сточку и все видишь.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.11.2008, 10:55
#4
Supermax

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


Почему же бред? Очень здравая мысль. Благодарствую. Я так и сделаю. Я уже почти сделал новую версию Visibility ADD2, туда и вставлю.

Только это не решает насущных проблем. Уже давно, на разных форумах народ обсуждает необходимость создания COM объектов - немодальных окон, разного назначения, только воз и ныне там.
Вместо такого СОМ объекта вполне может сойти макрос на VBA с таким окном, только надо организовать связь VBA и AutoLISP. Меня больше интересует вопрос решения связи, чем сами окна. Я в VBA не силен, хотя книг на эту тему уже много имею. VBScript с AutoLISP связывается, так почему VBA связать никто не пытается?

У меня есть идеи как это сделать.
Supermax вне форума  
 
Непрочитано 10.11.2008, 11:04
#5
Кулик Алексей aka kpblc
Moderator

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


Связь VBA <-> LISP существует уже очень давно. Ищи vlax.cls (кстати, и на этом форуме он выкладывался - лично мне просто искать лениво).
Немодальные окна, как мне кажется, будет проще все же создавать через ObjectARX (по крайней мере в книгах Полещука этот вопрос освещен). Только С++ надо знать
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.11.2008, 12:35
#6
Supermax

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


А как этим файлом пользоваться? Я VBA не знаю, но знаю лисп. Допустим кто-то написал макрос на VBA с диалоговым окном в виде окна с текстом. Как мне достучаться до этого окна и передать туда данные, а после того, как я там выбрал пару пунктов и нажал кнопку, получить эти данные? Файл твой я скачал и смотрю на него как баран на новые ворота. В теме тоже нет никаких пояснений, только ссылка на форум где все на английском.
Supermax вне форума  
 
Непрочитано 10.11.2008, 12:59
#7
Кулик Алексей aka kpblc
Moderator

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


Честно скажу - я задачами передачи данных VBA<->LISP не занимался. Вечером попробую расковырять код, если чего получится - сообщу.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.11.2008, 09:19
#8
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686


Цитата:
Сообщение от Supermax Посмотреть сообщение
Допустим кто-то написал макрос на VBA с диалоговым окном в виде окна с текстом. Как мне достучаться до этого окна и передать туда данные, а после того, как я там выбрал пару пунктов и нажал кнопку, получить эти данные?
А нельзя, к примеру, через запись-чтение файла? Т.е. в Lisp создать текстовой файл (...\temp.txt), записать в него нужную информацию, затем вызвать макрос VBA, который при запуске этот файл прочитает, при необходимости внесет в него изменения, которые в свою очередь прочитает Lisp.
AlexV вне форума  
 
Непрочитано 11.11.2008, 09:46
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


AlexV, Тогда уж лучше черер USER* переменные, например USERS1-USERS5
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 11.11.2008, 10:05
#10
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686


Цитата:
Сообщение от VVA Посмотреть сообщение
AlexV, Тогда уж лучше через USER* переменные, например USERS1-USERS5
Ну да, если передается строка не более 256 знаков (по моему, в USERS1-USERS5 больше не влезет)
AlexV вне форума  
 
Непрочитано 11.11.2008, 12:04
#11
Supermax

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


Для того, чтобы передавать данные через переменные или файл, надо следить и Автолиспу и VBA за событиями в файле или переменных, да и указатель на объект, к примеру, через файл не передашь. Записать туда конечно можно, но читать не будет. Можно метки передавать, но это не всегда подойдет.
Я мыслю так: можно попробовать общаться через СОМ объект MSScriptControl.ScriptControl. Поскольку на VBA пишется окно, то значит макрос на VBA - ведомый, а на Автолиспе - ведущий.
Макрос на Автолиспе создает СОМ MSScriptControl.ScriptControl и запускает макрос на VBA с аргументом в виде указателя на этот объект. Затем, макрос на VBA, в процессе развертывания, запихивает в MSScriptControl.ScriptControl скрипт связи со своим окном (тем самым окном, которое создано в VBA) и с Автокадом. Макрос на Автолиспе тоже может запихивать скрипты в MSScriptControl.ScriptControl, но надо ли это не знаю пока.
Далее, макрос на Автолиспе создает и запускает реактор на событие изменения объекта MSScriptControl.ScriptControl, такой же реактор должен быть написан и на VBA.
Далее дело техники, что надо, то и передавай. Как только кто либо из сторон меняют что либо в MSScriptControl.ScriptControl, так сразу это становится известно второй стороне. Через MSScriptControl.ScriptControl можно передавать указатели на объекты. VBScript, это упрощенный VBA, так что тому, кто знает VBA проблем не создаст.
Supermax вне форума  
 
Непрочитано 11.11.2008, 12:08
#12
Кулик Алексей aka kpblc
Moderator

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


vl-vbarun уже не катит?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.11.2008, 12:36
#13
Supermax

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


Я ж говорю - не шарю я в 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
Код:
[Выделить все]
Set AutoCAD = GetObject(, \"AutoCAD.Application\")
  Set ActiveDocument = AutoCAD.ActiveDocument
  ActiveDocument.SendCommand \"(setq string-select "123456") \"
может запросто туда передавать выбранные значения. Только надо через сцепление строк "(setq string-select "123456") передавать.
Supermax вне форума  
 
Непрочитано 11.11.2008, 12:39
#14
Supermax

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


Kpblc, ты это читал?
http://forum.dwg.ru/showpost.php?p=308336&postcount=79
Supermax вне форума  
 
Непрочитано 11.11.2008, 13:20
#15
Кулик Алексей aka kpblc
Moderator

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


Supermax, ты ж прекрасно знаешь, что я с VBA не дружу ни разу. Мне намного проще в сегодняшних условиях сделать dll-ку, зарегистрировать ее и работать с ее объектами через СОМ-интерфейс. Ну не было у меня задач создания немодальных окон. Не было.
А то, что из VBA можно тупо запускать любой лисп - так это давно известно, конструкция SendCommand стара как VBA.
"От случая к случаю" у меня не получится: вечером хотел сесть за разбор vlax.cls, но так и не получилось. Вот тебе и все случаи...
Насчет http://forum.dwg.ru/showpost.php?p=308336&postcount=79:
Код <OBJECT ID="WebBrowser" и дальше может элементарно не сработать, если а) браузер по умолчанию не MSIE и (или) б) у него другой ClassID.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.11.2008, 14:22
#16
Supermax

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


Ты прекрасно знаешь, что нет такого Windows где нет MSIE. Без него просто ничего работать не будет. Другое дело, что ему иногда "в эфир" выходить не дают, но он всегда есть, а значит есть и объект WebBrowser.
По умолчанию MSIE совсем не обязательно быть, поскольку MSIE и WebBrowser, хоть и братья близнецы, но каждый сам по себе.
Но я проверю.
Второе - приведи мне пример, где этот объект имеет другой классификатор. ClassID он также имеет и ProgID Shell.Explorer.
Supermax вне форума  
 
Непрочитано 11.11.2008, 16:26
#17
Кулик Алексей aka kpblc
Moderator

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


Ты мне предлагаешь снести Windows XP и поставить Vista? Или 2000?
Хотя, пожалуйста (для Windows XP Pro SP2), тоже вариант: HKEY_CLASSES_ROOT\CLSID\{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}
Виртуалка с 2000-ми накрылась, так что сказать насчет Win2k ничего не могу.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.11.2008, 18:58
#18
Supermax

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


Есть вполне приемлемое решение (хотя, убей меня бог, не понимаю твоих опасений). Страница HTML закачивается не браузером, а Автокадовской функцией получения файла из сети. Затем в этот файл вставляем какой угодно СОМ объект (можем даже этот файл переименовать на HTA). Или открывается лежащий в компе пользователя файл. А уж затем, мы этот файл передаем любому браузеру для его представления.
В таком варианте, что у пользователя имеется для работы со страницами, то и откроется. Определение наличия и предоставление выбора из имеющегося впаяно в макрос.
Но я могу на midoma.ru попросить вставить в одну из страниц этот объект и посмотреть как у пользователей будет баг выскакивать или нет. Можно и тут в теме его впихнуть и понаблюдать. Ты можешь такое сделать, или попросить это сделать?
Supermax вне форума  
 
Непрочитано 11.11.2008, 19:15
#19
Supermax

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


И ничего я снести не предлагаю. У самого XP SP2 и я его снесу, только если Vista умрет, а вместо нее появится что-нибудь более достойное. Да и то, куплю новую мать и корпус и второй комп сделаю. И мне фиолетово, если на каких-то конфигурациях что-то не пойдет. Я уже свыкся с мыслью, что выбирая даже железо, надо понимать, что такое совместимость и не брызгать слюной, когда какие-то проги не пашут, или сбоят.
Потом, допустим сделали крутую прогу, но она не идет под 2000 или 2003 кадом - ну и что? Если народ плакать начнет, то тогда можно будет искать выход. Вот сделал я вебмакрос под IE - народ застонал, поскольку многие влюблены в криатив - Я репу почесал, и пытаюсь найти решение для других браузеров, включая и Автокадовский.

Интересно, будут те браузеры, типа Оперы энд компани, говорить, что этот СОМ объект им не знаком?
Supermax вне форума  
 
Непрочитано 11.11.2008, 23:41
#20
Кулик Алексей aka kpblc
Moderator

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


Давай я тебе расскажу о своих опасениях, связанных не с внедрением объектов куда бы то ни было, а с несколько другими вопросами.
Допустим, такое окно существует. Создали, запустили, радуемся. Многодокументный режим работы. Открыто сразу 6 файлов. Уже задача: повторно не открыть окно после перехода из одного документа в другой.
Задача 2: в файле 1 идет работа в пространстве модели, в файле 2 - открыт редактор дин.блоков, в файле 3 - работа в пространстве модели, в файле 4 - редактирование блока по месту; в файле 5 - редактируется внешняя ссылка, в файле 6 - опять же редактор дин.блоков. Задача - отследить, где окно должно быть открыто, где - закрыто. При возврате в режим редактирования дин.блоков окно открыть.
Задача 3: отобразить актуальную информацию.
Все действия выполнять автоматически, не требуя от пользователя принудительного открытия / закрытия окна.
На предмет "использования не MSIE в качестве дефолтного браузера". Фантазия у меня больная, так что терпи
Дефолтный браузер - Mozilla. На момент последнего закрытия в Mozilla было открыто 62 вкладки. Включен режим сохранения последних вкладок. Ты открываешь браузер, создаешь в нем новую закладку, работаешь 10 секунд и вырубаешь его (кстати, не забудь свою закладку "снести"). А странички-то не загрузились... При последующем штатном открытии их содержимое может не отображаться (а иногда и адрес "слетает"). Спасибо пользователи тебе точно не скажут. Особенно те, кто сидит не на безлимитке.
Вариант в развитие: два монитора, браузер по умолчанию выводится на второй (на данный момент выключенный или занятый просмотром очередного фильма). Ваши действия, мистер ?
Почему я так говорю - так только потому, что на работе попытка вызова браузера из-под acad.exe привела к открытию вкладки в Mozilla.
P.S. в веб-программировании я дуб дубом, и вполне допускаю, что я пишу "не о том".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нужно немодальное окно для редактора блоков, показывающее текущий Visibility Set

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сейсмозащита и сейсмоизоляция существующих, построенных зд. 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