Code:
Option ExplicitPublic Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Public Declare PtrSafe Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dX As Long, ByVal dY As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_MOVE = &H1
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Sub FindTitleBlockCollidingObjects()
'Prüft ob irgendwas ins Schriftfeld ragt.
Dim oApp As Inventor.Application
Set oApp = ThisApplication
Call oApp.ActiveView.Fit(True)
DoEvents
Dim oDrawDoc As DrawingDocument
Set oDrawDoc = oApp.ActiveDocument
Dim oSheet As Sheet
Set oSheet = oDrawDoc.ActiveSheet
Dim oView As View
Set oView = oDrawDoc.Views.Item(1)
Dim oCamera As Camera
Set oCamera = oView.Camera
Dim oTitleBlock As TitleBlock
Set oTitleBlock = oSheet.TitleBlock
Dim XFrom As Long
Dim YFrom As Long
Dim dX As Long
Dim dY As Long
Dim oTBPoint1 As Inventor.Point
Set oTBPoint1 = oApp.TransientGeometry.CreatePoint(oTitleBlock.RangeBox.MaxPoint.x, oTitleBlock.RangeBox.MaxPoint.y, 0)
Dim oTBPoint2D1 As Point2d
Set oTBPoint2D1 = oCamera.ModelToViewSpace(oTBPoint1)
Dim oTBPoint2 As Inventor.Point
Set oTBPoint2 = oApp.TransientGeometry.CreatePoint(oTitleBlock.RangeBox.MinPoint.x, oTitleBlock.RangeBox.MinPoint.y, 0)
Dim oTBPoint2D2 As Point2d
Set oTBPoint2D2 = oCamera.ModelToViewSpace(oTBPoint2)
XFrom = oTBPoint2D1.x + oView.Left
YFrom = oTBPoint2D2.y + oView.Top
dX = oTBPoint2D2.x + oView.Left
dY = oTBPoint2D1.y + oView.Top
Dim oSelSet As SelectSet
Set oSelSet = oDrawDoc.SelectSet
Call oSelSet.Clear
Call MouseWindowSelectSim(XFrom, YFrom, dX, dY)
DoEvents
If oSelSet.Count > 0 Then
MsgBox "Da ragt was ins Schriftfeld."
End If
End Sub
Private Sub MouseWindowSelectSim(ByVal XFrom As Long, ByVal YFrom As Long, ByVal dX As Long, ByVal dY As Long)
'Simuliert eine Kreuzen-Fensterauswahl mit der Maus
SetCursorPos XFrom, YFrom
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_MOVE, dX, dY, 0, 0
SetCursorPos dX, dY
DoEvents
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub