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

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

VBA - получить параметры примитива

Ответ
Поиск в этой теме
Непрочитано 18.02.2020, 13:07 #1
VBA - получить параметры примитива
baksconstructor
 
Регистрация: 05.11.2014
Сообщений: 978

В лиспе работает
(entget (car (entsel)) '("*"))
Можно получить все параметры, а есть ли аналог этого на VBA ?
Понятно что через объектную модель можно искать отдельные свойства, но чувствую что здесь что то другое.
Просмотров: 2616
 
Непрочитано 18.02.2020, 13:15
#2
Кулик Алексей aka kpblc
Moderator

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


По-моему, нет, не было и вряд ли будет. Тут подход принципиально иной.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.02.2020, 13:19
#3
baksconstructor


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


Хотел через GetXData получить такие свойства от СПДС Сисофта, но почему то не определяет вообще.
Поэтому и ищу как подобраться к СПДС объектам.
baksconstructor вне форума  
 
Непрочитано 18.02.2020, 13:22
#4
trir


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


https://www.spds.ru/download/object-...bler-2020.html
trir вне форума  
 
Непрочитано 18.02.2020, 13:25
#5
Кулик Алексей aka kpblc
Moderator

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


Для работы с объектами СПДС GraphiCS необходимо (если не ошибаюсь) подключать какие-то библиотеки. Кажется, в Download где-то была документация по работе с объектами СПДС GraphiCS - старая, но лучше чем ничего.
И без (как минимум) подключенного ObjectEnabler'a ты просто получишь прокси-объекты. А что с ними можно сделать? Чутка поменять свойства, может, удалить. Если повезет - разбить. И... и все
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.02.2020, 13:31
#6
baksconstructor


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


McCOM2.dll муторно использовать, да и подглючивает она в 12 СПДС, хотел напрямую получить.
baksconstructor вне форума  
 
Непрочитано 18.02.2020, 13:39
#7
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


А зачем дамп, если в отладчике свойства посмотреть можно...
Boxa вне форума  
 
Непрочитано 18.02.2020, 13:39
#8
Кулик Алексей aka kpblc
Moderator

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


Напрямую не получится: объекты "не родные", необходим обработчик. Если через лисп идти, то, кажется, там приходится вместо (vla-get-ИмяСвойства ENtity) использовать (vlax-get-property Entity ИмяСвойства), да и с методами аналогичная ситуация была. Не знаю, есть ли подобное в VBA.
По крайней мере, мне так каэцца. Может, спецы по СПДС что-то и иное скажут - спорить не стану, я с СПДС GraphiCS не работал уже лет 10, наверное.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.02.2020, 13:44
#9
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Это само собой, что свойства какие нить в отладчике будут, только при наличии енаблера...
Boxa вне форума  
 
Непрочитано 18.02.2020, 14:52
#10
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,293
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от baksconstructor Посмотреть сообщение
McCOM2.dll муторно использовать, да и подглючивает она в 12 СПДС, хотел напрямую получить.
напрямую ты не получишь, если через энаблер, то СОМ доступ заблокирован, только через лисп выдернуть, а вот дальше как полученное разбирать ХЗ, но имха это тупик
(если есть нужда работать с объектами СПДС. значит и СПДС имеется)
но средствами McCOM2, в автокаде можно из набора SelectionSet получить "родные" объекты СПДС (даже с блоками работает)))
и потом уже средствами McCOM2 без извращений получить СПДС свойства.
Плюс этого подхода используя dxf коды и условия внутри запроса можно творить из VB классные вещи, не мелькая файлами и листами перед пользователем и не используя перебор, в итоге получая в набор только те объекты которые попадают под критерии, сразу из всего документа. Работает очень шустро.
Цикл будет только один.. получение объекта СПДС по указателю АК и выдергивание нужных свойств.
Маленькая ложка дегтя... это не работает в нанопродуктах
------------
Ты сто раз видел это
Код:
[Выделить все]
Public ThisDrawing As Object
Sub method_not_implemented_under_this_platform()
Dim intType(0) As Integer '(2)
Dim varDat(0)  As Variant
Dim objSelSet  As Object
Dim objNanoCAD As Object
'<Сбор таблиц селсетом
    Set spds = CreateObject("McCOM2.Server")
On Error Resume Next
    Set objNanoCAD = GetObject(, "AutoCAD.Application")
    If Err.Number <> 0 Then
        Err.Number = 0
        Debug.Print Err.Number
        Set objNanoCAD = GetObject(, "NanoCAD.Application")
        If Err.Number <> 0 Then
            MsgBox "Не запущен CAD" 
            Exit Sub
        End If
    End If
On Error GoTo 0
    Set ThisDrawing = objNanoCAD.ActiveDocument
    intType(0) = 0
    varDat(0) = "spdstable2" 'таблицы СПДС от 8,0 и младше, за СПДС 11, 12 не скажу _
    старые версии СПДС, старше 8,0 "spdstable" 
    Set objSelSet = vbdPowerSet("seTEST")
    objSelSet.Select 5, , , intType, varDat
    Debug.Print "spdstable-" & objSelSet.Count
Dim objAK As Object
Dim ObjMC As Object
    For Each objAK In objSelSet
        Set ObjMC = spds.Object(objAK) 'имеем полный доступ к свойствам СПДС в АК но в нане "method not implemented under this platform" 
        namee = ObjMC("Name")
    'или
        nameeee = ObjMC!Name
        Debug.Print "Имя таблицы-" & namee
    'работаем с ним дальше
    Next
End Sub
Public Function vbdPowerSet(strName As String) As Object 'AcadSelectionSet
Dim objSelSet As Object ' AcadSelectionSet
Dim objSelCol As Object ' AcadSelectionSets
    Set objSelCol = ThisDrawing.SelectionSets
    For Each objSelSet In objSelCol
        If objSelSet.Name = strName Then
            objSelSet.Delete
            Exit For
        End If
    Next
    Set objSelSet = ThisDrawing.SelectionSets.Add(strName)
    Set vbdPowerSet = objSelSet
End Function
----- добавлено через ~7 мин. -----
Цитата:
Сообщение от Boxa Посмотреть сообщение
Это само собой, что свойства какие нить в отладчике будут, только при наличии енаблера...
при наличии энаблера до свойств объектов СПДС средствами VB не дотянуться, только lisp
Одна из функций энаблера блокировать доступ, иначе нашелся бы умник который с энаблером частично восстановил функционал движка mcad))) без денег по любви))
__________________
Мастерская СПДС
doctorraz вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA - получить параметры примитива

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Ревит получить объём и высоту колонны ? Tyhig Revit 1 07.05.2017 22:04
Как получить конечные точки занимаемой области? prajdziswet LISP 3 08.02.2017 12:19
LISP. Как сохранить имя примитива при смене сеанса AutoCADa Main Urod LISP 3 14.01.2011 10:56
Быстро получить Набор объектов попадающих в Сферу [N.S] Программирование 10 09.08.2009 11:04
как получить параметры бумаги принтеров? ASLYS Программирование 1 21.04.2008 19:04