Тема: Как получить все объекты через SelectAtPoint?

Здраствуйте, подскажите кто знает, как мне получить в VBA все объекты в множество SelectSet, когда я знаю одну точку, в которой они есть.
Если сделать "SelectionAtPoint point" то выделяется только верхний объект, насколько я понимаю.
Буду очень признателен за помощь.

Re: Как получить все объекты через SelectAtPoint?

Господа, у меня та же проблема! SelectAtPoint выбирает только "верхний" объект. Из хелпа:

Sub Example_SelectAtPoint()
...
' Add to the selection set all the objects that lie at point(6.8,9.4,0)
    Dim point(0 To 2) As Double
    point(0) = 6.8: point(1) = 9.4: point(2) = 0
    ssetObj.SelectAtPoint point
...

ALL the objects... Но если запустить, то ssetObj.Count упрямо дает 1. Подскажите решение, пожалуйста!

Re: Как получить все объекты через SelectAtPoint?

> Student
На практике чаще используют Crossing selection, хотя фактически выбирается
все в той же самой точке:

Option Explicit
Sub Select_At_Point()
Dim ssetObj As AcadSelectionSet
Dim entObj As AcadEntity
Dim fCode(0) As Integer
Dim fdata(0) As Variant
Dim dxfCodeVar As Variant
Dim dxfDataVar As Variant
Dim ptVar As Variant
fCode(0) = 0
fdata(0) = "*LINE,CIRCLE,ELLIPSE,ARC,INSERT,*TEXT" '// add other types you need
dxfCodeVar = fCode
dxfDataVar = fdata
On Error GoTo Err_Control
ptVar = ThisDrawing.Utility.GetPoint(, vbCrLf & "Pick a point, use the snap mode for that: ")
Set ssetObj = ThisDrawing.SelectionSets.Add("$SelAtPoint$")
ssetObj.Select acSelectionSetCrossing, ptVar, ptVar, dxfCodeVar, dxfDataVar
If ssetObj.Count <> 0 Then
MsgBox "Selected: " & ssetObj.Count & " objects"
For Each entObj In ssetObj
entObj.color = acRed
Next
End If
Exit_Here:
ssetObj.Delete
Exit Sub
Err_Control:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
Resume Exit_Here
End Sub

~'J'~

Re: Как получить все объекты через SelectAtPoint?

Потрясающе!! )))
спасибо большое )

Re: Как получить все объекты через SelectAtPoint?

Возникла новая проблема, которая напрочь убила меня :(
Дело в том, что и SelectAtPoint и Crossing selection при выборе не выбирают ничего, если объекты в точках НЕ ВИДНЫ В ДАННЫЙ МОМЕНТ НА ЭКРАНЕ

ssetEnd.SelectAtPoint tEndPoint, fT, fD
ssetEnd.Select acSelectionSetCrossing, tEndPoint, tEndPoint, fT, fD 

если tEndPoint не в поле зрения юзера, то

 ssetEnd.Count = 0 

как же быть, подскажите, пожалуйста!

Re: Как получить все объекты через SelectAtPoint?

> StudentCM
Сделать так, чтобы точка была видна на экране. Это обязательное условие. Или не пользоваться такими видами выбора, а проходится по всей базе чертежа и выбирать нужные примитивы самому. Но это будет значительно медленней.

Re: Как получить все объекты через SelectAtPoint?

спасибо. попробую найти что-нибудь "среднее". типа поиск только по тем, кто пересекается с полилинией...

Re: Как получить все объекты через SelectAtPoint?

> StudentCM
Скорее всего, потребуется как раз проход по всем примитивам пространства-владельца полилинии.

Re: Как получить все объекты через SelectAtPoint?

а что если с Zoom'ом поиграть? в принципе для юзера просто экран мигнет и всё, а точка для метода Crossing уже попадет..
сейчас смотрю различные варианты..

Re: Как получить все объекты через SelectAtPoint?

> StudentCM
Вариант с Zoom/Pan вполне приемлим.

Re: Как получить все объекты через SelectAtPoint?

Может еще не возвратить пунктирную, штрих пунтирную, вообще линию с пробелами...

Re: Как получить все объекты через SelectAtPoint?

> Slim
Согласен абсолютно, натыкался на такое
Баг???
~'J'~