Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  visuelles feedback

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  visuelles feedback (911 mal gelesen)
oscarr
Mitglied
CAD-Manager


Sehen Sie sich das Profil von oscarr an!   Senden Sie eine Private Message an oscarr  Schreiben Sie einen Gästebucheintrag für oscarr

Beiträge: 198
Registriert: 02.10.2007

ACA 2012 - English Win 7/x64

erstellt am: 18. Feb. 2010 15:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich bin auf der Suche nach einer Möglichkeit eine graphisches feedback zugeben.

Ich habe eine Tool geschrieben das Flächen überprüft. Nun möchte ich im Falle eines Fehlers dem Anwender ein visuelles Feedback geben wo etwas nicht stimmt. Das highlight ist mir zu flau. Ich dachte an eine farbige Fläche die blinkt oder so kleine Vierecke wie die Grips. Ich möchte jedoch nicht ACAD Objekte zeichnen sondern nur auf dem Bildschirm was "leuchten" lassen.

Ich weiss nicht so richtig wonach ich suchen soll. Hat irgend jemand eine Idee wie man sowas anstellen kann?

Gruss
Holger

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 18. Feb. 2010 15:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wie programmierst Du? ARX? dotNET? ...?

In ObjectARX kannst Du benutzerdefinierte Objekte machen, in dotNET gibt es das JIG-Objekt bzw. ein .DRAW für Datenbankobjekte, mit denen was gemacht werden kann.

Hilft das?

- alfred -

------------------
www.hollaus.at

oscarr
Mitglied
CAD-Manager


Sehen Sie sich das Profil von oscarr an!   Senden Sie eine Private Message an oscarr  Schreiben Sie einen Gästebucheintrag für oscarr

Beiträge: 198
Registriert: 02.10.2007

ACA 2012 - English Win 7/x64

erstellt am: 15. Mrz. 2010 22:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Alfred,

ich mache in VB.NET
Das JIG ist nicht so das was ich meine, aber hier nun eine Lösung,
als Code zum WoAndersEinbauen.

first und second ermittle ich natürlich anders aber zum demonstrieren klapts so ganz gut. Das ganze funktioniert so nur auf dem Primärbildschirm.

Weite Teile und vor allem die ScreenFromDrawingPoint Function sind von:
Kean Walmsley


Code:
    <DllImport("User32.dll")> _
    Private Shared Function GetDC(ByVal hwnd As IntPtr) As IntPtr
    End Function

    <DllImport("user32.dll")> _
    Private Shared Function ReleaseDC(ByVal hWnd As IntPtr) As Integer
    End Function

    <DllImport("user32.dll")> _
    Private Shared Function ClientToScreen(ByVal hWnd As IntPtr, ByRef lpPoint As Point) As Boolean
    End Function

    <CommandMethod("dDraw")> _
    Sub dDraw()
        Dim doc As Document = Application.DocumentManager.MdiActiveDocument
        Dim ed As Editor = doc.Editor
        Dim Pt1 As Point
        Dim Pt2 As Point
        Dim ppr As PromptPointResult
        ' Ask the user for the screen window to draw
        ' Get the first point of the capture window,
        ppr = ed.GetPoint("Select first point of window: ")
        ' Loop if settings were modified
        If (ppr.Status = PromptStatus.OK) Then
            ' Now we're ready to select the second point
            Dim first As Point3d = ppr.Value
            ppr = ed.GetCorner("" & vbLf & "Select second point of window: ", first)
            If (ppr.Status <> PromptStatus.OK) Then
                Return
            End If
            Dim second As Point3d = ppr.Value
            ' Generate screen coordinate points based on the
            ' drawing points selected
            ' First we get the viewport number
            Dim vp As Short = CType(Application.GetSystemVariable("CVPORT"), Short)
            ' Then the handle to the current drawing window
            Dim hWnd As IntPtr = doc.Window.Handle
            ' Now calculate the selected corners in screen coordinates
            Pt1 = ScreenFromDrawingPoint(ed, hWnd, first, vp, True)
            Pt2 = ScreenFromDrawingPoint(ed, hWnd, second, vp, True)

            'the rectangle will be allways drawn from top left to right down
            Dim X As Integer
            If Pt1.X > Pt2.X Then
                X = Pt2.X
            Else
                X = Pt1.X
            End If

            Dim Y As Integer
            If Pt1.Y > Pt2.Y Then
                Y = Pt2.Y
            Else
                Y = Pt1.Y
            End If

            Dim Width As Integer = Math.Abs(Pt2.X - Pt1.X)
            Dim Height As Integer = Math.Abs(Pt2.Y - Pt1.Y)
            Dim Rect As New Rectangle(X, Y, Width, Height)
            Dim DesktopDC As IntPtr = GetDC(IntPtr.Zero)
            Dim Graphic As Graphics = Graphics.FromHdc(DesktopDC)
            Dim Brush As SolidBrush = New SolidBrush(Color.Red)
            Graphic.FillRectangle(Brush, Rect)
            Graphic.Dispose()
            ReleaseDC(DesktopDC)
        End If
    End Sub

    Private Shared Function ScreenFromDrawingPoint(ByVal ed As Editor, ByVal hWnd As IntPtr, ByVal pt As Point3d, ByVal vpNum As Short, ByVal useUcs As Boolean) As Point
        ' Transform from UCS to WCS, if needed
        Dim wcsPt As Point3d = If(useUcs, pt.TransformBy(ed.CurrentUserCoordinateSystem), pt)
        '' Then get the screen coordinates within the client
        '' and translate these for the overall screen
        Dim res As Point = ed.PointToScreen(wcsPt, vpNum)
        ClientToScreen(hWnd, res)
        Return res
    End Function


bis denne
Holger

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz