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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Прямоугольный контур вокруг элемента типа "Блок" / AutoCAD

Прямоугольный контур вокруг элемента типа "Блок" / AutoCAD

Ответ
Поиск в этой теме
Непрочитано 06.02.2014, 20:38 #1
Прямоугольный контур вокруг элемента типа "Блок" / AutoCAD
Ploikin
 
Регистрация: 06.02.2014
Сообщений: 2

Необходимо построить прямоугольную рамку вокруг блока.

Код:
[Выделить все]
Sub Example_GetBoundingBox()
    ' This example creates a line in model space. It then finds the
    ' bounding box for the line and displays the corners of the box.
 
    Dim startPoint(0 To 2) As Double
    Dim endPoint(0 To 2) As Double
    Dim lineObj As AcadLine
 
    ' Create the Line object in model space
    startPoint(0) = 2#: startPoint(1) = 2#: startPoint(2) = 0#
    endPoint(0) = 4#: endPoint(1) = 4#: endPoint(2) = 0#
    Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
    ZoomAll
 
    Dim minExt As Variant
    Dim maxExt As Variant
 
    ' Return the bounding box for the line and return the minimum
    ' and maximum extents of the box in the minExt and maxExt variables.
    lineObj.GetBoundingBox minExt, maxExt
 
    ' Print the min and max extents
    MsgBox "The extents of the bounding box for the line are:" & vbCrLf _
         & "Min Extent: " & minExt(0) & "," & minExt(1) & "," & minExt(2) _
         & vbCrLf & "Max Extent: " & maxExt(0) & "," & maxExt(1) & "," & maxExt(2), vbInformation, "GetBoundingBox Example"
         
End Sub
сказали, что нужно использовать гетбоундингбокс, но пример из "справочника" строит отрезок, а не определяет нижнюю левую и верхнюю правую точки блока

Последний раз редактировалось Кулик Алексей aka kpblc, 06.02.2014 в 20:54.
Просмотров: 2111
 
Непрочитано 06.02.2014, 20:55
#2
Кулик Алексей aka kpblc
Moderator

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


Потому что minExt и maxExt - точки. Посмотри в отладчике.
Ничто и никто не мешает получить дополнительные точки по принципу
Код:
[Выделить все]
Dim apppoint1(0 to 1) As Double
apppoint(0) = minExt(0)
apppoint(1) = maxExt(1)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.02.2014, 21:19
#3
Ploikin


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


Цитата:
Сообщение от Ploikin Посмотреть сообщение
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
Dim lineObj As AcadLine
определяем стартовую, конечную точки (от 0 до 2 - 3 оси координат)
определяем объект линия для дальнейшего построения отрезка

Цитата:
Сообщение от Ploikin Посмотреть сообщение
startPoint(0) = 2#: startPoint(1) = 2#: startPoint(2) = 0#
endPoint(0) = 4#: endPoint(1) = 4#: endPoint(2) = 0#
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
ZoomAll
присваиваем значения координат стартовой и конечной точкам (2-2-0) и (4-4-0), ось ptl не используется
создаем линию, которая соединяет эти точки

Цитата:
Сообщение от Ploikin Посмотреть сообщение
Dim minExt As Variant
Dim maxExt As Variant
вводим точки мин и макс

Цитата:
Сообщение от Ploikin Посмотреть сообщение
lineObj.GetBoundingBox minExt, maxExt
MsgBox "The extents of the bounding box for the line are:" & vbCrLf _
& "Min Extent: " & minExt(0) & "," & minExt(1) & "," & minExt(2) _
& vbCrLf & "Max Extent: " & maxExt(0) & "," & maxExt(1) & "," & maxExt(2), vbInformation, "GetBoundingBox Example"
Выводит координаты в виде сообщения

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Dim apppoint1(0 to 1) As Double
apppoint(0) = minExt(0)
apppoint(1) = maxExt(1)
как я понял, присваиваем точке апппоинт1 координаты Х левой нижней точки и У верхней правой точки, в итоге получаем верхнюю левую точку
[IMG]http://***********/660d7863.jpg[/IMG] месседж, получается за блок принимает линию, которую нарисовали ваше, а у меня есть уже блок надо у него эти координаты определить

Код:
[Выделить все]
Public Function SelectOnlyOnScreen() As AcadSelectionSet
 Dim objSelSet As AcadSelectionSet
 Dim objSelCol As AcadSelectionSets
 Dim intType(0) As Integer
 Dim varData(0) As Variant
 Set objSelCol = ThisDrawing.SelectionSets
 For Each objSelSet In objSelCol
 If objSelSet.Name = "Only" Then
 objSelSet.Delete
 Exit For
 End If
 Next
 Set objSelSet = ThisDrawing.SelectionSets.Add("Only")
 intType(0) = 0  'Фильтры выбора
 varData(0) = "INSERT" '"INSERT"             для выбора блока
 objSelSet.SelectOnScreen intType, varData
 Set SelectOnlyOnScreen = objSelSet
 End Function
 Public Sub BlockCount()
 Dim acSelSet As AcadSelectionSet
 Set acSelSet = SelectOnlyOnScreen
 MsgBox "Найдено блоков: " & CStr(acSelSet.Count) & " шт."
 End Sub
это код, который якобы определяет блоки, но я не до конца представляю как он работает нужен он вообще

Последний раз редактировалось Кулик Алексей aka kpblc, 06.02.2014 в 23:58.
Ploikin вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Прямоугольный контур вокруг элемента типа "Блок" / AutoCAD



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Расчет пространственных стержневых систем и наличие шарниров в расчетных схемах Jenec Лира / Лира-САПР 17 27.09.2013 22:23
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59