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

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

GetBoundingBox для набора объектов на VBA

Ответ
Поиск в этой теме
Непрочитано 29.10.2021, 05:54 #1
GetBoundingBox для набора объектов на VBA
МишаИнженер
 
Регистрация: 14.12.2008
Сообщений: 841

Существует ли функция GetBoundingBox для набора объектов на VBA?
Как определить общие габаритные точки для набора объектов чертежа?
Просмотров: 1114
 
Непрочитано 29.10.2021, 07:44
1 | #2
trir


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


можно просто их сложить
trir вне форума  
 
Автор темы   Непрочитано 29.10.2021, 14:50
#3
МишаИнженер


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


Получились вот такие функции на VBA:
Код:
[Выделить все]
Public Sub ПолучитьГабаритыОбъектовМассив(objAcadDoc As AcadDocument, vmОбъекты As Variant, vТMin As Variant, vТMax As Variant)
'Функция получает общие габаритные точки объектов заданные в массиве
Dim objОбъект As AcadEntity, vMinЧ As Variant, vMaxЧ As Variant, vMinО As Variant, vMaxО As Variant
Dim dMin(0 To 2) As Double, dMax(0 To 2) As Double, I As Integer
   Set objОбъект = vmОбъекты(0)
   Call objОбъект.GetBoundingBox(vMinО, vMaxО)
   For I = 1 To UBound(vmОбъекты)
      Set objОбъект = vmОбъекты(I)
      Call objОбъект.GetBoundingBox(vMinЧ, vMaxЧ)
      If vMinО(0) > vMinЧ(0) Then
         vMinО(0) = vMinЧ(0)
      ElseIf vMaxО(0) < vMaxЧ(0) Then
         vMaxО(0) = vMaxЧ(0)
      End If
      If vMinО(1) > vMinЧ(1) Then
         vMinО(1) = vMinЧ(1)
      ElseIf vMaxО(1) < vMaxЧ(1) Then
         vMaxО(1) = vMaxЧ(1)
      End If
   Next I
'Присвоим ответные значения функции
   vТMin = vMinО: vТMax = vMaxО
End Sub

Public Sub ПолучитьГабаритыОбъектовСписок(objAcadDoc As AcadDocument, vmОбъекты As Variant, vТMin As Variant, vТMax As Variant)
'Функция получает общие габаритные точки объектов заданные в списке
Dim objОбъект As AcadEntity, vMinЧ As Variant, vMaxЧ As Variant, vMinО As Variant, vMaxО As Variant
Dim dMin(0 To 2) As Double, dMax(0 To 2) As Double, I As Integer
   Set objОбъект = vmОбъекты(1)
   Call objОбъект.GetBoundingBox(vMinО, vMaxО)
   For I = 2 To vmОбъекты.Count
      Set objОбъект = vmОбъекты(I)
      Call objОбъект.GetBoundingBox(vMinЧ, vMaxЧ)
      If vMinО(0) > vMinЧ(0) Then
         vMinО(0) = vMinЧ(0)
      ElseIf vMaxО(0) < vMaxЧ(0) Then
         vMaxО(0) = vMaxЧ(0)
      End If
      If vMinО(1) > vMinЧ(1) Then
         vMinО(1) = vMinЧ(1)
      ElseIf vMaxО(1) < vMaxЧ(1) Then
         vMaxО(1) = vMaxЧ(1)
      End If
   Next I
'Присвоим ответные значения функции
   vТMin = vMinО: vТMax = vMaxО
End Sub
Вместо сложения использовал булево сравнение
МишаИнженер вне форума  
 
Непрочитано 29.10.2021, 14:56
#4
Кулик Алексей aka kpblc
Moderator

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


А почему сравниваются только две координаты? Это раз.
Второе - использовать русские имена в программировании (если это, конечно, не 1С) - так себе идея.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.10.2021, 15:05
#5
trir


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


https://github.com/triroakenshield/R...ometry/TMBR.cs

Код:
[Выделить все]
         public override TMBR GetMBR()
        {
            TMBR res = null;
            foreach (var p in Geometries)
            {
                if (res == null) res = p.GetMBR();
                else res.AddMBR(p.GetMBR());
            }
            return res;
        }
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > GetBoundingBox для набора объектов на VBA

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для выбора объектов по заданным характеристикам modest-bp Программирование 16 28.04.2020 13:07
JavaScript. nanoCAD 5. Округление координат объектов с учетом ПСК Нубий-IV Готовые программы 6 04.05.2019 10:04
Исключение объектов из набора Violent MITCHELL AutoCAD 22 10.08.2016 12:09
Изменение влажности бетона в процессе набора им прочности Picnic Технология и организация строительства 6 20.01.2014 10:27
VBA, Определение набора текущих выделенных объектов чертежа. Vildar Программирование 7 28.07.2008 17:35