Тема: Как получить текущие координаты курсора в АutoCAD 2006 (monitorInputPoint)?

Здравствуйте и спасибо за любую помощь может быть кто-нибудь знает как получить текущие координаты курсора в АutoCAD 2006 в хелпе ObjectARX нашел функцию monitorInputPoint но не могу разобратся. Пришлите какой-нибудь примерчик если не затруднит на VB.net

Re: Как получить текущие координаты курсора в АutoCAD 2006 (monitorInputPoint)?

Вот пример на VBA: https://www.caduser.ru/forum/topic26786.html

Re: Как получить текущие координаты курсора в АutoCAD 2006 (monitorInputPoint)?

P.S.: Я не тестировал но и этот код (сконвертированный из C#) должен работать:

<DllImport("user32")> _
Private Shared Function ScreenToClient(ByVal hwnd As Integer, ByRef pixel As System.Drawing.Point) As Integer
End Function
<DllImport("acad.exe", CallingConvention := CallingConvention.Cdecl, EntryPoint := "?acedCoordFromPixelToWorld@@YAXABVCPoint@@QAN@Z")> _
Private Shared Sub acedCoordFromPixelToWorld(ByRef pixel As System.Drawing.Point, ByRef worldPt As Autodesk.AutoCAD.Geometry.Point3d)
End Sub
<CommandMethod("CursorPos")> _
Public Sub CursorPos()
  Dim pixel As System.Drawing.Point = System.Windows.Forms.Cursor.Position
  Dim doc As Autodesk.AutoCAD.Interop.AcadDocument = DirectCast_
(Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.AcadDocument, Autodesk.AutoCAD.Interop.AcadDocument)
  Dim hwnd As Integer = doc.HWND
  ScreenToClient(hwnd, pixel)
  Dim worldPt As New Autodesk.AutoCAD.Geometry.Point3d()
  acedCoordFromPixelToWorld(pixel, worldPt)
  Dim ed As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
  ed.WriteMessage("" & Chr(10) & "pixel={0} point in WCS={1}", pixel, worldPt)
End Sub

Re: Как получить текущие координаты курсора в АutoCAD 2006 (monitorInputPoint)?

У меня проблемка с Autodesk.AutoCAD.Interop уже не первый раз встречается пишит Type not defined. Я так думаю из-за отсутствия acCui.dll
Все равно огромное Вам спасибо попробую разобраться.

Re: Как получить текущие координаты курсора в АutoCAD 2006 (monitorInputPoint)?

x3m пишет:

У меня проблемка с Autodesk.AutoCAD.Interop уже не первый раз встречается

Для того чтобы эта проблема "не встречалась" нужно подключить к проекту (меню Project-> Add Reference... вкладка COM):
1) AutoCAD 200X Type Library
2) AutoCAD/ObjectDBX Common 1X.0 Type Library
где X -  6 для AutoCAD 2006 или 7 для AutoCAD 2007

Re: Как получить текущие координаты курсора в АutoCAD 2006 (monitorInputPoint)?

Александру Ривилису
Огромнейшее Вам спасибо просветили а то сидел в темноте =). Пример тоже получился.

Re: Как получить текущие координаты курсора в АutoCAD 2006 (monitorInputPoint)?

> x3m
А вот тоже самое (точнее и учитывает привязки) при помощи PointMonitor:

Imports System
Imports System.Runtime.InteropServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Namespace HelloWorld
    Public Class PointMon
        ' Команда запуска PointMonitor
        <CommandMethod("P_START")> _
        Public Sub PMON_START()
            Dim ed As Autodesk.AutoCAD.EditorInput.Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
            AddHandler ed.PointMonitor, AddressOf callback_PointMonitor
            m_point = True
        End Sub
        ' Команда остановки PointMonitor
        <CommandMethod("P_END")> _
        Public Sub PMON_END()
            Dim ed As Autodesk.AutoCAD.EditorInput.Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
            If m_point Then
                RemoveHandler ed.PointMonitor, AddressOf callback_PointMonitor
                m_point = False
            End If
        End Sub
        ' Получение текущей координаты курсора в WCS (сохраненной из PointMonitor)
        <CommandMethod("GetCoord")> _
        Public Sub GetCoord()
            Dim ed As Autodesk.AutoCAD.EditorInput.Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
            ed.WriteMessage("" & Chr(10) & "Point in WCS = {0}", computed_point)
        End Sub
        Private Sub callback_PointMonitor(ByVal sender As Object, ByVal e As PointMonitorEventArgs)
            Dim ed As Autodesk.AutoCAD.EditorInput.Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
            computed_point = e.Context.ComputedPoint
        End Sub
        Shared m_point As Boolean = False
        Shared computed_point As Autodesk.AutoCAD.Geometry.Point3d
    End Class
End Namespace

Re: Как получить текущие координаты курсора в АutoCAD 2006 (monitorInputPoint)?

Еще одно огромное Вам спасибо все работает

Re: Как получить текущие координаты курсора в АutoCAD 2006 (monitorInputPoint)?

> x3m
Спасибо можно складывать сюда: https://www.caduser.ru/forum/topic20709.html :)