All Forums
 Категория Visio
 Форум Вопросы и ответы
 SpatialNeighbors странное поведение.
Author Previous Topic Topic Next Topic  

bdfy

Belarus
267 Posts

Posted - 08/11/2009 :  17:46:59
чертеж у меня разделен на области - большими боксами сидящими в заблокированном слое. нужно определить каким именно боксом накрыт выбранный шейп/группа шейпов. хотел SpatialNeighbors использовать.
Public Function Getstage(ByVal sh As Visio.Shape) As String
delta = 100000
Debug.Print sh
Set vs = sh.SpatialNeighbors(3, delta, 0)



    For Each X In vs
    
    Debug.Print "shape " & X
    
    Next X
    
Getstage = "X1"
End Function
Sub aaaa_test342()
Set vs = Application.ActiveWindow.Selection
a = Getstage(vs(1))
Debug.Print "end"
End Sub

т.е среди близких шейпов ведь по любому будет этот бокс. его можно выбрать, а дальше уже дело техники.

все работает. если выделяешь шейп 2дшный (круг на чертеже), с шейпами типа линия - не работает. почему ?
пример - http://rapidshare.de/files/48090786/stage.vsd.html
выделите круг/прямоугольник. запустите скрипт. почувствуйте разницу ((

Tumanov

Russia
1198 Posts

Posted - 08/11/2009 :  18:39:16
Во-первых, у Вас очень несерьезная дельта. Надо бы порядков на 5-6 поменьше сделать.
Во-вторых, нельзя требовать от линии, чтобы она что-то "содержала". Это невозможно, поэтому Visio должен возвращать ошибку и пустое множество.
Измените Relation хотя бы на 4 (visSpatialContainedIn) и все должно заработать. Да и visSpatialTouching тоже работать должно.

Go to Top of Page

bdfy

Belarus
267 Posts

Posted - 08/11/2009 :  18:59:54
во. спасибо. visSpatialTouching работает.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)