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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA AutoCAD передача объекта в функцию

VBA AutoCAD передача объекта в функцию

Ответ
Поиск в этой теме
Непрочитано 12.10.2010, 15:19 #1
VBA AutoCAD передача объекта в функцию
ikambi
 
Регистрация: 12.10.2010
Сообщений: 8

Проблема в том что не получается передать объект AutoCAD в функцию в качестве аргумента.
Программа считывает объекты с листа AutoCAD и помещает ссылки на них в массив через Set. Как мне передать данные из массива в функцию.
Код:
[Выделить все]
Public ObjectsArray() As AcadEntity
.........
Public Sub GetObj(block as AcadEntity) 
.........
End Sub
При вызове функции GetObj(ObjectsArray(0)) ошибка "Object doesn't support this property or methods"
Массив заполнен и доступен везде.
Просмотров: 5453
 
Непрочитано 12.10.2010, 15:25
#2
Лиспер


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


А в каком месте ошибка? Пошагово попробуй пройти. Ну или, на крайний случай, используй On Error.
Лиспер вне форума  
 
Автор темы   Непрочитано 12.10.2010, 15:28
#3
ikambi


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


Ошибка во время вызова функции. В функцию даже не заходит.
ikambi вне форума  
 
Непрочитано 12.10.2010, 15:38
#4
AlexV

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


А процедура GetObj(block as AcadEntity) чего делает? Может, ты пытаешься получить свойство или применить метод, которые не являются общими для всех примитивов.. "Object doesn't support this property or methods", объект то бишь не поддерживает свойство или метод. Поподробней код процедуры и вызова ее напиши.

А что значит "Массив заполнен и доступен везде."? объявлен как Public? Если так, то его и передавать не надо, можно напрямую обращаться..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 12.10.2010, 15:42
#5
Лиспер


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


Ну раз кода не дождаться, то вот работающий вариант:
Код:
[Выделить все]
Option Explicit

Public objArray() As AcadEntity

Public Function funTest() As AcadEntity()
Dim sSelSetName As String
Dim res() As AcadEntity, objCounter As AcadEntity
Dim objSelSet As AcadSelectionSet
  sSelSetName = "MySelect"
  With ThisDrawing.SelectionSets
    On Error Resume Next
    .Item(sSelSetName).Delete
    Set objSelSet = .Add(sSelSetName) '.SelectOnScreen
    objSelSet.SelectOnScreen
    For Each objCounter In objSelSet
      On Error GoTo lErrorReDim
      ReDim Preserve res(UBound(res) + 1)
      Set res(UBound(res)) = objCounter
    Next
    .Item(sSelSetName).Delete
  funTest = res
  End With
  Exit Function
lErrorReDim:
  ReDim res(0)
  Resume Next
End Function

Public Sub GetObj(objRef As AcadEntity)
  MsgBox objRef.ObjectName
End Sub

Public Sub Test()
Dim obj() As AcadEntity
  obj = funTest
  GetObj obj(0)
End Sub
Лиспер вне форума  
 
Автор темы   Непрочитано 12.10.2010, 15:44
#6
ikambi


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


Мне нужно передать "блок" для последующей разбивки его на части, сделать блок.explode ну и обработать потом....
Но дело не в содержании функции. Объект даже в пустую функцию не передается почему-то


Сбасибо большое!!!
GetObj obj(0)
Оказывается надо не в скобках передавать а рядом писать.....
Все работает)))
ikambi вне форума  
 
Непрочитано 12.10.2010, 15:54
#7
AlexV

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


Цитата:
Сообщение от ikambi Посмотреть сообщение
Мне нужно передать "блок" для последующей разбивки его на части, сделать блок.explode ну и обработать потом....
Но дело не в содержании функции. Объект даже в пустую функцию не передается почему-то


Сбасибо большое!!!
GetObj obj(0)
Оказывается надо не в скобках передавать а рядом писать.....
Все работает)))
Либо
Код:
[Выделить все]
Call (GetObj obj(0) )
..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 12.10.2010, 16:13
#8
Сергей Дубина


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


Если блок 1 можно обойтись без набора, к сожалению у меня справки по ВБА нет а так я не помню функция называется примерно GeEntity если нужны будут координаты, тогда в связке с GetPoint.
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 12.10.2010, 16:19
#9
Лиспер


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


Сергей Дубина, ???
Лиспер вне форума  
 
Непрочитано 12.10.2010, 16:26
#10
Сергей Дубина


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


Цитата:
Сообщение от Лиспер Посмотреть сообщение
???
что ???
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 12.10.2010, 16:29
#11
Лиспер


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


Не понял, что за блок1, и почему нет справки по VBA.
Лиспер вне форума  
 
Непрочитано 12.10.2010, 16:35
#12
Сергей Дубина


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


У меня ЛТ. А выбирать один блок нужно, зачем набор примитивов?
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 12.10.2010, 16:43
#13
Лиспер


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


Сергей Дубина, для LT программная обработка возможна только со стороннего полноценного exe-файла через СОМ-интерфейс, насколько я знаю. По крайней мере "внутри" LT сделать программно ничего не удастся...
Лиспер вне форума  
 
Непрочитано 12.10.2010, 16:48
#14
Сергей Дубина


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


Цитата:
Сообщение от Сергей Дубина Посмотреть сообщение
к сожалению у меня справки по ВБА нет
Цитата:
Сообщение от Лиспер Посмотреть сообщение
и почему нет справки по VBA.
потому что ЛТ
Цитата:
Сообщение от Лиспер Посмотреть сообщение
Сергей Дубина, для LT программная обработка возможна только со стороннего полноценного exe-файла через СОМ-интерфейс, насколько я знаю. По крайней мере "внутри" LT сделать программно ничего не удастся...

Мне "внутри" LT программно ничего делать не надо. Я по памяти отвечал, а она у людей, сами понимаете, не надёжная...
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA AutoCAD передача объекта в функцию



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA в AutoCAD alle Программирование 47 03.12.2014 11:26
AutoCad MEP. Применение Virtual Basic в сметах. Argon Программирование 6 07.09.2010 16:42
Останется ли в Autocad 2011 поддержка VBA? AlexV Программирование 8 12.02.2010 03:09
AutoCAD LT 2005 и VBA Macros Vidas Программирование 10 03.05.2005 11:00
подскажите кто может где взять литературу по VBA for AutoCad er Программирование 2 28.10.2003 14:08