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

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

VBA - как узнать закрытый ли контур

Ответ
Поиск в этой теме
Непрочитано 25.05.2007, 16:29 #1
VBA - как узнать закрытый ли контур
To Thuc
 
Регистрация: 12.07.2006
Сообщений: 14

Здравствуйте, участники форума.
У меня один вопрос. Если я выбираю одну точку (медтодом pickpoint), как я могу узнать, что в закрытом ли контуре точка находится ?
И если это закрытый контур, как я могу взять характеристики контура ? (площадь,координаты вершин, уравнения граней).
Помогите, пожалуйста!
За раннее благодарю.
Просмотров: 3196
 
Непрочитано 25.05.2007, 20:29
#2
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Посмотри здесь:
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=35811uo

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 17.06.2007, 15:22
#3
To Thuc


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


Спасибо Fatty! Но мне еще надо знать характеристики контура, который можетбыть создан количеством полилиний и сплайнов. Подскажите, пожалуйства, как это получится ?
To Thuc вне форума  
 
Непрочитано 17.06.2007, 21:19
#4
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от To Thuc
Спасибо Fatty! Но мне еще надо знать характеристики контура, который можетбыть создан количеством полилиний и сплайнов. Подскажите, пожалуйства, как это получится ?
To Thuc
Уточни что тебе нужно точнее
Координаты вершин контура и радиусы
криволинейных сегментов и координаты
образующих сплайнов?

Будет лучше если ты прикрепишь сюда
свой чертеж с пояснениями

~'J'~
fixo вне форума  
 
Непрочитано 18.06.2007, 16:55
#5
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Если у тебя контур создан из нескольких
примитивов, можешь попробовать такую
процедуру
Не очень красиво но работает, для того
чтобы определить данные составляющих
этот контур можно потом пройтись циклом
через созданный selection set (pfs)

~'J'~

Код:
[Выделить все]
Option Explicit

Sub CheckForClosedContour()

Dim oEnt As AcadEntity
Dim oPline As AcadLWPolyline
Dim intPt As Variant
Dim cnt As Integer, i As Integer, j As Integer
Dim osm As Variant

osm = ThisDrawing.GetVariable("OSMODE")
ThisDrawing.SetVariable "OSMODE", 0
On Error GoTo Error_Trapp
cnt = ThisDrawing.ModelSpace.Count - 1
intPt = ThisDrawing.Utility.GetPoint(, vbCr & "Pick point inside: ")
Dim pstr As String
pstr = Replace(CStr(intPt(0)), ",", ".") & "," & Replace(CStr(intPt(1)), ",", ".")
ThisDrawing.SendCommand "-BOUNDARY" & Chr(32) & pstr & vbCr & vbCr

'ThisDrawing.SendCommand Chr(3) & Chr(3) & "-BOUNDARY" & vbCr & pstr & vbCr & vbCr
On Error Resume Next
Set oEnt = ThisDrawing.ModelSpace.Item(cnt + 1)
On Error GoTo 0
If TypeOf oEnt Is AcadLWPolyline Then
Set oPline = oEnt
Dim coors As Variant
coors = oPline.Coordinates
Dim elev As Double
elev = oPline.Elevation
If elev <> 0 Then
MsgBox "Can't to create region" & vbCr & "with this elevation"
Exit Sub
End If
Dim ub As Integer
ub = ((UBound(coors) + 1) \ 2) * 3 - 1
ReDim pts(0 To ub) As Double
j = 0
For i = 0 To UBound(coors) Step 2
pts(j) = coors(i)
pts(j + 1) = coors(i + 1)
pts(j + 2) = elev
j = j + 3
Next i
oPline.Delete
Dim pfs As AcadSelectionSet
Set pfs = ThisDrawing.PickfirstSelectionSet
pfs.Clear
pfs.SelectByPolygon acSelectionSetCrossingPolygon, pts
MsgBox "Selected: " & pfs.Count & " objects"
ReDim objs(0 To pfs.Count - 1) As AcadEntity
For i = 0 To pfs.Count - 1
Set objs(i) = pfs.Item(i)
Next
' Create the region
Dim regobj As Variant
On Error Resume Next
regobj = ThisDrawing.ModelSpace.AddRegion(objs)
If Err.Number <> 0 Then
MsgBox "Contour is opened" & vbCr & "Can't to create region"
Exit Sub
Else
Dim reg As AcadRegion
Set reg = regobj(0)
reg.Delete
MsgBox "Contour is closed, enjoy"
End If

End If
ThisDrawing.SetVariable "OSMODE", osm
Error_Trapp:
MsgBox Err.Description

End Sub
fixo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA - как узнать закрытый ли контур