Autor
|
Thema: Mauszeiger positionieren (1208 mal gelesen)
|
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 08. Okt. 2014 11:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Leut', zwei Fragen zum gleichen Thema: - lässt sich der Mauszeiger (Cursor) im Drafting per Code an eine vorgegebene Stelle setzen (zB. ActiveView/x,y)? Das Ergebnis sollte wie bei der Api-Function SetCursorPos sein. - Oder lässt sich irgendwo erkennen, welchen Teil des Sheets der Viewer gerade darstellt(X,Y,Massstab)? Dann könnte ich die Cursor-Position selbst umrechnen. Ich will über SendMessage(WM_RMouseButton,..) oder Ähnliches ein Context-Menü öffnen. TIA, Joe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 08. Okt. 2014 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für joehz
Servus Über "GetOrigin" des Viewpoint2D bekommst du die aktuelle Mitte des Bildschirms bezogen auf den Blattursprung. Für das gleiche Objekt gibt es noch die Methode "zoom". Zusätzlich scheint es noch über "IndicateOrSelectElement2D" der Selektion möglich zu sein die Koordinaten ermitteln zu können. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 10. Okt. 2014 14:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, danke für die schnelle Antwort. Wenn ich's richtig verstehe, liefert GetOrigin als Ergebnis den Abstand der Viewermitte vom Sheet-Ursprung in mm und im Sheet-Koordinatensystem. Was ich nicht verstehe, sind die Zoom-Werte. Bei einem Blatt A0/'Fit All In' liegt der Zoom bei 0.0023. Erwartet hätte ich eher 0.23. Nachdem ich bislang nicht mit ViewPoint gespielt habe, steh' ich da jetzt auf'm Schlauch. Um die Pixel/mm auszurechnen, brauch ich einen belastbaren Wert für den Zoom. Ansonsten: Der Viewer-Handle lässt sich über kaskadierende FindWindowEx-Aufrufe ermitteln; die Viewer-Fenstergrösse über GetRect ermitteln. Die Lage des Viewers hab ich somit - und die Grösse passt zu den von Catia ausgegebenen Werten. Um ohne Zoom zu arbeiten, müsste ich den zu untersuchenden Punkt per SetOrigin in die Mitte schieben und dann per Api den Cursor drauf setzen; anschliessend ein Rechtsklick per Api und das Kontext-Menü öffnet (das klappt schon). Ich würde halt gerne vermeiden, dass das Blatt hin und her schiesst(kostet alles Zeit). Tschau, Joe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 11. Okt. 2014 10:09 <-- editieren / zitieren --> Unities abgeben: Nur für joehz
Servus Die verschiedenen Zoomwerte liegen ja um den Faktor 100 auseinander. Vielleicht verrechnet dabei Catia mit verschiedenen Einheiten. Beim Viewer kannst du auch direkt die Abmessungen in Pixeln auslesen (Height und Width). Anstatt die Position des Cursors zu berechnen könntest du auch den Cursor Mittig platzieren und über "PutOrigin" den Viewer dorthin zentrieren. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 13. Okt. 2014 20:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, Zitat: Original erstellt von bgrittmann:
Die verschiedenen Zoomwerte liegen ja um den Faktor 100 auseinander. Vielleicht verrechnet dabei Catia mit verschiedenen Einheiten. Beim Viewer kannst du auch direkt die Abmessungen in Pixeln auslesen (Height und Width).
Ja, eben. Die Viewer-Abmessungen hab ich schon gefunden. Zitat:
Anstatt die Position des Cursors zu berechnen könntest du auch den Cursor Mittig platzieren und über "PutOrigin" den Viewer dorthin zentrieren.
Nur ohne Left/Top kann ich die Mitte nicht bestimmen. Deshalb der Akt mit FindWindowEx. Ich hab noch ein paar Varianten ausprobiert. Ich denk', ich lass es. War eh nur 'Nice to have.' Um mm/pixel zu ermitteln, müsste ich zwei/drei Indicates per Api in einem bekannten Pixel-Abstand setzen. Danach per GetOrigin die Lage in mm vom Sheet-Ursprung auslesen und umrechnen. Ausserdem müsste ich bei dem auszuwählenden Text (mit dem Kontextmenü) die AnchorPosition berücksichtigen und die Abmessungen des Textes. Sonst geht der R-Click ins Leere. Das geht zwar alles; trotzdem ist die Chose zu un(treff)sicher. Danke für Deine Hilfe. Tschau, Joe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |