Тема: Проблемы SelectByPolygon
SelectByPolygon не хочет выбирать объекты если количество вершин оч. большое (>1000). Есть способы ето побороть ?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Проблемы SelectByPolygon
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
SelectByPolygon не хочет выбирать объекты если количество вершин оч. большое (>1000). Есть способы ето побороть ?
Вообще интересует следующий вопрос. Попадает ли интересующая точка в полигон?
Public Function PointInPpolyline(po As Variant, ent As AcadEntity) As Boolean
'Function : PointInPpolyline
'LastUpdt : Mar.1,2004.
'
'1. Input - X,Y,Z Point Array and closed LWPolyline
'2. Function create AcadRay and ask inresection between AcadRay and polyline
'3. Output TRUE if inside or FALSE if outside
Dim TempRay As AcadRay
Dim po0, inters As Variant
Dim i As Integer
ReDim po0(2) As Double
Dim Ang As Double
po0(0) = 0: po0(1) = 0: po0(2) = 0
For i = 0 To 10
Set TempRay = ThisDrawing.ModelSpace.AddRay(po, po0) ' Create new AcadRay
Ang = dtr(i * 11.5)
TempRay.Rotate po, Ang
inters = TempRay.IntersectWith(ent, acExtendNone)
TempRay.Delete 'Delete new AcadRay
If UBound(inters) < 0 Then
PointInPpolyline = False
Exit For
ElseIf (UBound(inters) + 1) / 3 Mod 2 = 0 Then
PointInPpolyline = False
Set inters = Nothing
Else
PointInPpolyline = True
Exit For
End If
Next
End Function
' Convert angle in degrees to radians
Public Function dtr(a As Double) As Double
dtr = (a / 180) * pi
End Function
Я сделал свой модуль по выбру полигонов...
Позволяет...
1.Попал полигон в контур или нет.
2.Смежник внутринний
3.Смежник внешний
я работаю в кадастре и очень часто с этим сталкиваюсь...насколько мне удалось форма полигона не влияет на выбор...
обращайся...чем смогу помогу...
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Проблемы SelectByPolygon
Форум работает на PunBB, при поддержке Informer Technologies, Inc