Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  ENTSEL mal anders

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:  ENTSEL mal anders (598 mal gelesen)
fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 12. Sep. 2007 12:47    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

Öfters gibt es ja das problem, dass man zwischen ins Leere Clicken und rechte Maustaste unterscheiden möchte.
Leuider gint ja entsel in beiden Situationen das gleiche zurück. Ich habe mir jetzt überlegt, ob man nicht einfach nach entsel einfach die rechte Maustaste abfrägt, da ja die Warscheinlichkeit, dass der Benutzer  nur eine 1/1000 sek lang die rechte Maustatse drückt sehr gering ist.
Leider habe ich nur mittels Windows API eine Möglichkeit gefunden die rechte Maustaste abzufragen

Hier mal mein Testweise Konstrukt
Die Funktion bleibt solange in einer Abfrageschleife, bis der Benutzer  ein Objekt wählt, mit der rechten Maustatse abbricht oder mit ESC Abbricht.
Clickt er ins Leere, bleibt die Funktion in der Abfrageschleife

Ich würde euch bitten, das Dingens mal auf verschioedenen Rechnern zu testen, und mir Bescheid geben, obs auf verschiedenene Umgebungen auch wirklich zuverlässig funktioniert.


(defun MyEntsel (/)
  (setq ok nil)
  (while (not ok)
    (setq ret (try 'entsel '()))
   

    (cond ; Objekt gewählt
          ((= (type ret) 'LIST) (setq ok t))
    ; rechte Maustaste oder ins Leere ergibt durch TRY True
  ((= ret t)
  (vl-vbarun "RightMouseButton") ; schauen ob rechte Maustatse gedrückt ist
  (if (= (getvar "USERI1") 1)) (setq ok t ret nil)
  )
  ; ESC -> ABBruch durch TRY wird ein fehler ja zu NIL
  ((= ret nil) (setq ok t))

    )
  )
  ret
)

;------------------------------------------------------------------------------
; Testroutine ergibt nil im Fehlerfall ansonst den Rückgabewert der zu       
; testenden Funktion                                                         
; ist der Rückgabewert der Funktion auch im Erfolgsfall nil                   
; wird t zurückgegeben                                                       
;                                                                             
;  (try '+ (list 1 2 3 4 5 6))  ergibt 21                                     
;  (try '/ (list 5 0))          ergibt nil                                   
;------------------------------------------------------------------------------
(defun Try ( func arg / a1 a2 )
  (setq a2 (vl-catch-all-error-p  (setq a1 (vl-catch-all-apply func arg))))
  (cond (a2  nil)
(a1 a1)
(t t)
  )
)

un weiters benötigt man in VBA ein Modul, das folgendermassen ausschaut.

Private Declare Function GetAsyncKeyState Lib "user32.dll" ( _
  ByVal vKey As Long) As Integer
Private Const VK_RBUTTON = &H2
Private Const VK_LBUTTON = &H1

Sub RightMouseButton()
    If GetAsyncKeyState(VK_RBUTTON) And 1 = 1 Then
      Call ThisDrawing.SetVariable("USERI1", 1)
    Else
      Call ThisDrawing.SetVariable("USERI1", 0)
    End If
End Sub

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 12. Sep. 2007 13:08    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 Nur für fuchsi 10 Unities + Antwort hilfreich

Hi,

hier gab's schon einmal eine Diskussion zum Thema.


Gruß
CADchup

------------------
CADmaro.de

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