Перейти к содержимому


Вопросы по McCOM2

nanoCAD5 СПДС СПДС8 СПДС9 McCOM2 VBA

Сообщений в теме: 6

#1 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 714 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 03 Март 2015 - 14:59

К сожалению после прочтения справки по McCOM2 остались вопросы :
1. как видно в Locals отладчика VBA : универсальный маркер имеет
: ClassName : "Универсальный маркер" : String
на такой запрос:
Set МаркерСпец = spdsApplication.Query("Универсальный маркер")
в МаркерСпец возвращается некоторое количество объектов
но вот если добавить еще условие выбора по полю маркера
Set МаркерСпец = spdsApplication.Query("Универсальный маркер", "flag=""1""")
то МаркерСпец Nothing
в то же время если сделать выборку по всем объектам чертежа:
Set МаркерСпец = spdsApplication.Query("Object", "flag=""1""")
то запрос возвращает объекты с данным свойством, но согласитесь, это не совсем верно и удобно.
Собственно вопрос к гуру, как правильно выбрать объект по имени класса если класс представлен таким образом?
2. Таблицы и поиск СПДС могут делать выборку по всему документу.
Вопрос возможно ли через Query собрать объекты со всего документа за один проход (без перебора листов, модели)?
3. В справке очень лаконично описан объект BOM, однако заинтересовало, что если его получить и заполнить данными, то возможно производить в нем сортировку и пр.
Вопрос: Как? Возможно у кого то из уважаемых All есть рабочий боевой пример и их не затруднит любезно поделиться.

Сообщение отредактировал raz: 03 Март 2015 - 15:46


#2 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 714 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 16 Март 2015 - 21:37

По ходу написания скрипта возник еще вопрос.
В McCOM2 есть класс BOM, имеетсе большое подозрение, что он сильно может облегчить жизнь при сортировке и группировке объектов.
К сожалению моих знаний VBA сильно недостаточно и получить этот объект мне не удалось.
Вопрос к Гуру, как получить BOM

#3 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 714 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 31 Март 2015 - 22:34

Просмотр сообщенияraz (03 Март 2015 - 14:59) писал:

2. Таблицы и поиск СПДС могут делать выборку по всему документу.
Вопрос возможно ли через Query собрать объекты со всего документа за один проход (без перебора листов, модели)?
Ответ: тупо перебором всех листов, тормозит конечно при регенерации листов, но пока ничего умнее никто не подсказал
Sub МСсборСоВсехЛистов(SPDS, МаркерСпец)
	Dim Layouts As AcadLayouts, Layout As AcadLayout
	Dim МаркерСпецTemp As McCOM2.ObjectsCollection
	Dim АдресМодели As String
'----------------------------------
'	ThisDrawing.SetVariable "regenmode", 0
	Set Layouts = ThisDrawing.Layouts
	АдресМодели = ThisDrawing.ActiveLayout.Name '  запоминаем лист где находимся
	Set МаркерСпец = SPDS.Query(ОбъектПоиска, УсловияПоиска)  'собираем с текущего
	For Each Layout In Layouts
'	добавить
		If Layout.Name <> АдресМодели Then 'проверочка что с него начали, что б с него не собирать
			ThisDrawing.ActiveLayout = ThisDrawing.Layouts.Item(Layout.Name)
			Set МаркерСпецTemp = SPDS.Query(ОбъектПоиска, УсловияПоиска)
			If МаркерСпецTemp.Count > 0 Then Set МаркерСпец = МаркерСпец.Or(МаркерСпецTemp) 'разобраться как добавить к коллекции
		End If
	Next Layout
	ThisDrawing.ActiveLayout = ThisDrawing.Layouts.Item(АдресМодели) '	вернемся откуда пришли
'	ThisDrawing.SetVariable "regenmode", 1
End Sub


#4 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 714 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 07 Апрель 2015 - 13:16

у сервера КОМ есть такой метод:
object.Query ([bstrClasses], [vProps], [rBoundBlock])
rBoundBlock- Необязательный. Значение Variant. Габариты в пространстве чертежа, в которых нужно искать объекты.
вопрос как эти габариты корректно задать???
т.е. такая конструкция
Set Frmt = SPDS.Query("McCOM2.SymFrame")(1)
Set Objs = SPDS.Query("Object", "strTheType=""vaPipe""", Frmt.Bounds)
коректно ищет объекты если точка вставки формата 0,0,0. Стоит сдвинуть ао XY начинаются чудеса.
Значения чего подставляются в rBoundBlock (координаты, размеры, вес)))

#5 Lion2032

    Активист

  • Пользователи
  • PipPipPipPip
  • 1 344 сообщений

Отправлено 27 Май 2015 - 10:38

Где можно найти хелп по mcCom2.dll?

#6 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 714 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 27 Май 2015 - 13:07

Просмотр сообщенияLion2032 (27 Май 2015 - 10:38) писал:

Где можно найти хелп по mcCom2.dll?
тут

#7 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 714 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 13 Ноябрь 2015 - 15:29

Извините, что апаю тему, но осмелюсь опять задать тот же вопрос, может, что изменилось:
===========================
Каким образом через СОМ собрать объекты СПДС (выноски, маркеры, форматы) со всего документа (модели и листов)?
В быстром выборе СПДС это реализовано кнопками: во всем документе, в текущем листе, в текущем наборе.
Как программно (VB&VBA) реализовать выбор во всем документе?





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей