|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
14.12.2009, 19:32 | #1 | |
Как через COM интерфейс Автокада прочесть значение переменной?
Руководитель фирмы
Москва
Регистрация: 28.03.2007
Сообщений: 1,831
|
||
Просмотров: 6758
|
|
||||
а откуда у тебя берется строка в переменной?
Может проще эту строку засунуть в другое место, откуда ее легко взять из других прог... Как пример, переменная окружения: Код:
Код:
Другой метод - переменные приложения USERI1...USERI5 - целые числа USERR1...USERR5 - реальные числа USERS1...USERS5 - строки Код будет выглядеть: Код:
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
|
||||
Понимаешь, я хочу сделать интерфейс на AutoIT.
Как на картинке. Мне надо все названия блоков перегнать в дерево и рядом будет окно со свойствами и атрибутами. Выделяешь блок на дереве, а рядом его свойства и атрибуты появляются. Я хочу, чтобы это дерево само расширялось и сужалось. Сделал блок - он там появился, убил - он и там исчез. Реестр тут совсем не катит. С системной переменной тоже как-то криво. Это надо каждый список поштучно туда загонять. Бр-р-р. |
||||
|
||||
для такого меню, можно сразу генерировать xml файл или если сложно, просто текстовый файл с необходимыми тебе разделителями вложенности строк итд...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
|
||||
У меня есть два метода в COM-е AutoIT
; ClipGet () Вернуть текущий текст буфера обмена. ; ClipPut (1) Записать текст в буфер обмена. Придется все превращать в текст и перегонять через буфер. Стремно как-то. А через файлы не катит. Моя панель завязана на события Автокада и когда просходит изменение базы рисунка должна обновлять содержимое панели. Через файлы будет сбоить, пути искать, долго писать и вообще не известно как это все синхронизировать. А может кто специальный COM сварганит? Всего пару методов. Записать и прочесть. Вот было бы здорово. Vov.Ka, спасибо за замечательный материал, только в VBA я не силен и есть пару вопросов. Код:
Код:
Есть у меня метод GetInterfaceObject, но что ему совать - не пойму. Как мне добраться до Functions? Все, добрался до Functions Код:
Set sym = VLF.Item("read").funcall(symbolName) Я создал в рисунке переменную (setq A1 "123") Я уже и "\"A1\"" и сяк - никак ; error: too few actual parameters Последний раз редактировалось Supermax, 15.12.2009 в 13:15. |
||||
|
||||
Ничего не получается..
Я нашел у себя в реестре "VL.Application.16" Вот его дамп: Код:
тоже не имеет доступа к пространству имен. Строка Код:
Применение метода GetInterfaceObject к AutoCAD.Application дает то же самое, что и просто (vlax-get-or-create-object "VL.Application.16"). У него как небыло доступа, к пространству имен, так и нет. Вот поэтому я и не могу получить данные о переменной. Ее просто нет в VL.Application.16. Но все функции Автолиспа - есть. Задаю прямой вопрос: Что это за СОМ VL.Application.16 ??????? |
||||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Цитата:
Код:
Похожий пример
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Да мне уже это советовали.
Цитата:
А про "VL.Application.16" всеж интересно. Я попробовал пойти от обратного и немного продвинулся. Я решил не читать значение переменной, а записать в переменную что-нибудь. Код:
; error: lisp value has no coercion to VARIANT with this type: A1 Ага думаю и стал перебирать все vlax-make-variant, но не тут-то было. Есть целые числа, длинные и не очень, есть строки, есть массивы и пустышки - ничего не катит. Хочет только символ. А варианта с символом-то и нема. И где его взять? Может из-за этого не мог прочесть? Первая удача! Код:
А с eval, setq, vl-symbol-value и пр. Цитата:
Последний раз редактировалось Supermax, 15.12.2009 в 19:12. |
||||
|
||||
Supermax, тогда, много проще идти через словари...
Они гарантированно имеют доступ через СОМ и удобны в использовании. просто создавай свой словарь, в нем объекты, в объектах данные. Цитата:
Код:
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Спасибо VVA, но все это я уже перепробовал.
Интересно, а на VBA удается вот так читать переменные? Тут все VBA-шные примеры мелькают, а как на счет их проверить? Читают эти функции переменные или нет? Если читают, то почему я не могу? К стати все арифметические функции работают. Тоже варианты возвращает с результатом. Чего-то не хватает... А, Код:
Последний раз редактировалось Supermax, 15.12.2009 в 20:00. |
||||
|
||||
#<VLA-OBJECT DVlFunction 0b323098>
; error: Automation Error. Member not found: funcall проверяю в autocad 2008 (en) sp1
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Supermax, скажи, а зачем вообще использовать Lisp-функции, если ты работаешь со сторонним скриптовым языком?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Как оптом сохранить все чертежи в формате 14-го автокада? | Соня | AutoCAD | 26 | 20.03.2011 14:59 |
как изменить интерфейс Autocad 2009 | Electra | AutoCAD | 2 | 15.06.2009 00:16 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
как задать тип переменной | Александер | Программирование | 5 | 17.10.2005 15:32 |