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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > СПДС и VBA

СПДС и VBA

Закрытая тема
Поиск в этой теме
Непрочитано 30.03.2009, 11:56 #1
СПДС и VBA
LAPA
 
Регистрация: 30.03.2009
Сообщений: 5

Возможно ли с помощью VBA вытащить параметры объектов, которые созданы в СПДС?
Просмотров: 13960
 
Непрочитано 30.03.2009, 12:30
#2
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Проще через DXF и LISP но опять же не все параметры эбъектов можно определить, по крайней мере мои попытки не увенчались успехом.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 30.03.2009, 12:36
#3
LAPA


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


Вот что я откопал если в VBA подключить библеотеки McCom1 Type library и MechaniCS Com 2.0 Type library, то можно использовать VBA Но опять же там нету типа объекта, который я создал сам mcsDbObjectStandartPart

подскажите как это сделать с помощью DXF и LISP
LAPA вне форума  
 
Непрочитано 30.03.2009, 14:08
1 | #4
MCAD


 
Блог
 
Регистрация: 05.01.2005
Сообщений: 1,694


Цитата:
Сообщение от LAPA Посмотреть сообщение
Возможно ли с помощью VBA вытащить параметры объектов, которые созданы в СПДС?
Да, смотри аттач:
Вложения
Тип файла: dwg
DWG 2007
Доступ к свойствам объектов СПДС.dwg (86.3 Кб, 2828 просмотров)
MCAD вне форума  
 
Автор темы   Непрочитано 30.03.2009, 18:06
#5
LAPA


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


Скажи пожалуйста, где взял этот файлик?
LAPA вне форума  
 
Непрочитано 31.03.2009, 06:21
#6
MCAD


 
Блог
 
Регистрация: 05.01.2005
Сообщений: 1,694


Цитата:
Сообщение от LAPA Посмотреть сообщение
Скажи пожалуйста, где взял этот файлик?
Хороший вопрос. Сделан для ответа на Ваш запрос.
MCAD вне форума  
 
Автор темы   Непрочитано 31.03.2009, 12:33
#7
LAPA


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


Ладно, а как тогда получить доступ к свойствам объекта, который я сам создал с помощью мастра объектов? что тогда прописывать в spdsApplication.Query()?
LAPA вне форума  
 
Непрочитано 31.03.2009, 13:11
1 | #8
MCAD


 
Блог
 
Регистрация: 05.01.2005
Сообщений: 1,694


Цитата:
Сообщение от LAPA Посмотреть сообщение
что тогда прописывать в spdsApplication.Query()?
Для кого писали коментарии???

'В методе Query первый параметр - одно или несколько (через точку с запятой) имён классов.
'Второй параметр - имена и значения свойств. Если он определён, будут выбраны только те
'объекты, в которых есть такие свойства, а их значения совпадают с введёнными в Query.
'
'Значения параметров можно посмотреть в скрипте объекта:
' strTheName = "19425-74";
' strTheType = "Profile";
' strTheSubType = "I-Shape";

Общий случай получения свойств с объектов:
Вложения
Тип файла: dwg
DWG 2004
Пример получения свойств объекта и запись в таблицу.dwg (103.8 Кб, 2704 просмотров)

Последний раз редактировалось MCAD, 31.03.2009 в 14:47. Причина: Добавил пример
MCAD вне форума  
 
Автор темы   Непрочитано 31.03.2009, 17:21
#9
LAPA


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


Спасибо большое! Это как раз, то что нада!
LAPA вне форума  
 
Непрочитано 26.10.2010, 13:46
#10
lacinho


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


А не подскажите, где можно почитать по-подробнее о том, как работать с этой библиотекой mcCom2.dll?
lacinho вне форума  
 
Непрочитано 27.10.2010, 06:33
#11
MCAD


 
Блог
 
Регистрация: 05.01.2005
Сообщений: 1,694


Цитата:
Сообщение от lacinho Посмотреть сообщение
где можно почитать по-подробнее о том, как работать с этой библиотекой mcCom2.dll?
Например тут
MCAD вне форума  
 
Непрочитано 27.10.2010, 21:32
#12
Кулик Алексей aka kpblc
Moderator

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


Вот так вот, да?
Кстати, из лиспа обратиться к объектам СПДС GraphiCS можно, и это оказалось настолько забавно...
P.S. По похожей методе лиспом можно добраться и до SheetSet'a, но я пока не могу выделить время на то, чтобы с программированием в ней разобраться...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.10.2010, 06:50
#13
MCAD


 
Блог
 
Регистрация: 05.01.2005
Сообщений: 1,694


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
и это оказалось настолько забавно...
Ну так позабавь :-) А то пропал на неделю, ни слуху ни духу
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вот так вот, да?
Кстати, из лиспа обратиться к объектам СПДС GraphiCS можно
А кто то говорил, что добраться нельзя? правда есть ограничения. В своё время DEM этим занимался. Спроси у него.
PS: Но это для СПДС > 5 релиза

Последний раз редактировалось MCAD, 28.10.2010 в 06:58.
MCAD вне форума  
 
Непрочитано 28.10.2010, 09:07
#14
Кулик Алексей aka kpblc
Moderator

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


Яков я сделал это для 4.1.558 - и работает!
P.S. Если сегодня вечером получится, выложу код
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.10.2010, 10:11
#15
MCAD


 
Блог
 
Регистрация: 05.01.2005
Сообщений: 1,694


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Яков я сделал это для 4.1.558 - и работает!
P.S. Если сегодня вечером получится, выложу код
Я имел ввиду не доступ к лиспу а то что Хелп выложенный в даун лоад относится к более старшим версиям.
А чтение / запись кодов dxf всегда был.
MCAD вне форума  
 
Непрочитано 28.10.2010, 12:05
#16
Кулик Алексей aka kpblc
Moderator

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


А я работаю не через DXF
Код:
[Выделить все]
(defun _kpblc-autoload-create-spds-server (/ reg f)
                                          ;|
*    Создает указатель на сервер СПДС GraphiCS, если он установлен.
* Также импортирует dll, отвечающую именно за него.
* В случае ошибки возвращает nil
|;
  (if (and (not *kpblc-spds-server*)
           (setq reg
                  (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\CLSID\\"
                                           (vl-registry-read "HKEY_CLASSES_ROOT\\McCOM.McCOMServer\\CLSID")
                                            "\\LocalServer32"
                                            ) ;_ end of strcat
                                    ) ;_ end of vl-registry-read
                 ) ;_ end of setq
           (not (vl-remove-if-not
                  (function
                    (lambda (x)
                      (wcmatch (strcase x) "SPDS_METHOD-*,SPDS_PROP-*,SPDS_CONST-*")
                      ) ;_ end of lambda
                    ) ;_ end of function
                  (atoms-family 1)
                  ) ;_ end of vl-remove-if-not
                ) ;_ end of not
           ) ;_ end of and
    (vlax-import-type-library :tlb-filename        reg                  :methods-prefix      "spds_method-"
                              :properties-prefix   "spds_prop-"         :constants-prefix    "spds_cont-"
                              ) ;_ end of vlax-import-type-library
    ) ;_ end of if
  (if (vl-remove-if-not
        (function
          (lambda (x)
            (wcmatch (strcase x) "SPDS_METHOD-*,SPDS_PROP-*,SPDS_CONST-*")
            ) ;_ end of lambda
          ) ;_ end of function
        (atoms-family 1)
        ) ;_ end of vl-remove-if-not
    (setq *kpblc-spds-server* (vlax-get-or-create-object "McCOM.McCOMServer"))
    ) ;_ end of if
  *kpblc-spds-server*
  ) ;_ end of defun
Единственное требование: СПДС уже должна быть загружена. Если СОМ-сервер был успешно получен, то потом выполнить его дамп и понять, кто к чему относится - уже не проблема
P.S. На версиях 5 и 6 не проверял.
Offtop: P.P.S. Если код на более новых версиях сработает корректно, можно будет задуматься о том, чтобы засунуть код в "Готовые".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 29.10.2010 в 00:56.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.10.2010, 23:34
1 | #17
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


лучше
Код:
[Выделить все]
(wcmatch (strcase x) "SPDS_METHOD-*,SPDS_PROP-*,SPDS_CONST-*")
gomer вне форума  
 
Непрочитано 28.10.2010, 23:47
#18
Кулик Алексей aka kpblc
Moderator

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


Исправил, спасибо.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.10.2010, 00:06
#19
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Исправил, спасибо.
не все... Алексей, зачем проверять дважды одно и тоже...
Код:
[Выделить все]
(vl-remove-if-not
                  (function
                    (lambda (x)
                      (wcmatch (strcase x) "SPDS_METHOD-*,SPDS_PROP-*,SPDS_CONST-*")
                      ) ;_ end of lambda
                    ) ;_ end of function
                  (atoms-family 1)
                  ) ;_ end of vl-remove-if-not
И где ваши любимые vl-catch-all-apply?
Если СПДС не установлен функция вылетает с ошибкой
gomer вне форума  
 
Непрочитано 29.10.2010, 00:56
#20
Кулик Алексей aka kpblc
Moderator

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


Сейчас логика такова: если и СОМ-сервера не существует, и в реестре можно найти указание на библиотеку СПДС, и импорта еще не было - выполняется импорт dll. А потом уже, если был выполнен импорт, тогда в atoms-family можно найти защищенные символы, и становится возможным создание СОМ-сервера. Без всего этого работать не будет. Стандартные vl-catch-* тут не работали.
И я ж говорил, что для работы необходимо, чтобы СПДС уже была загружена в кад. А как ее загрузить, если она не установлена?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > СПДС и VBA

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СПДС Graphics. Интеграция с AutoCAD. Нет панелек СПДС Sn4ke ПО от CSoft 40 31.07.2020 11:52
Изменения системы СПДС. ГОСТ 21.101-97 и не только! Red_line Архитектура 19 05.08.2010 18:01
Спдс 5 сетевой сервер bonus AutoCAD 2 16.01.2009 11:47
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов Red Nova Программирование 177 08.12.2008 11:35