2017-07-23 5 views
0

Ich habe eine einfache Erweiterung in Autodesk Forge erstellt. Die Idee ist, dass, wenn ich ein mouse-over-Ereignis auf einem 3D-Objekt mache, es mir die ID des hovered Objekts/Unterobjekts zeigen muss, läuft mein Erweiterungscode wie folgt.Wie für OnMouseOver Ereignis in Autodesk Forge zu codieren

AutodeskNamespace("Autodesk.ADN.Viewing.Extension"); 
 

 

 
Autodesk.ADN.Viewing.Extension.MouseEvent = function (viewer, options) { 
 

 
    Autodesk.Viewing.Extension.call(this, viewer, options); 
 

 
    var _self = this; 
 
    var _viewer = viewer; 
 
    var _selectedId = null; 
 

 
//On Load of the exension function 
 
    _self.load = function() { 
 

 
\t _viewer.addEventListener(
 
      Autodesk.Viewing.MOUSE_OVER_EVENT, 
 
      _self.onMouseOver); 
 

 
      \t console.log("Autodesk.ADN.MouseEvent loaded"); 
 
     \t return true; 
 
\t }; 
 

 
\t //On unload of the exension function 
 
     _self.unload = function() { 
 
    
 
\t _viewer.removeEventListener(
 
      Autodesk.Viewing.MOUSE_OVER_EVENT, 
 
      _self.onMouseOver); 
 

 
     console.log("Autodesk.ADN.MouseEvent unloaded"); 
 
     return true; 
 
    }; 
 

 
// Event function initialization 
 
_self.onMouseOver = function (event) { 
 

 
     var dbId = event.dbIdArray[0]; 
 

 
     if (typeof dbId !== 'undefined') { 
 

 
      _selectedId = dbId; 
 
      alert('ID: ' + _selectedId); 
 
     } 
 
     else _selectedId = null; 
 
    } 
 
}; 
 
Autodesk.ADN.Viewing.Extension.MouseEvent.prototype = 
 
    Object.create(Autodesk.Viewing.Extension.prototype); 
 

 
Autodesk.ADN.Viewing.Extension.MouseEvent.prototype.constructor = 
 
    Autodesk.ADN.Viewing.Extension.MouseEvent; 
 

 
Autodesk.Viewing.theExtensionManager.registerExtension(
 
    'Autodesk.ADN.Viewing.Extension.MouseEvent', 
 
    Autodesk.ADN.Viewing.Extension.MouseEvent);

aber die onMouseOver Funktion nicht funktioniert, kann mir jemand bitte helfen? Danke im Voraus.

PS: Ich habe die Erweiterungen in den Skript-Tags enthalten und die Erweiterung wird ebenfalls geladen.

oViewer.loadExtension('Autodesk.ADN.Viewing.Extension.MouseEvent'); 

Ich bekomme auch eine Bestätigung von der Konsole, dass die Erweiterung erfolgreich geladen wird.

Antwort

0

Es gibt kein solches Ereignis wie Autodesk.Viewing.MOUSE_OVER_EVENT ... hast du das gerade erfunden oder hast es von einer - anscheinend falschen - Quelle bekommen?

Die Art und Weise zu handhaben wäre, ein Viewer-Tool zu verwenden (siehe diesen Beitrag für details), dann in handleMouseMove Rückruf, wie folgt vorgehen:

handleMouseMove (event) { 

    var hitTest = _self.viewer.clientToWorld(
    event.canvasX, 
    event.canvasY, 
    true) 

    if (hitTest) { 

    console.log(hitTest) 
    } 
} 

Hier einem anderen Posten I über viewer events schrieb, es ist ein bisschen alt, also gibt es jetzt ein paar mehr, aber kann dir einen guten Startpunkt geben.

+0

Danke @Philippe Leefsma =) –

+0

Zwischen ich habe gerade das gemacht Ich dachte, die Mausereignisse sind in Autodesk Schmiede üblich und implementiert das. @Philippe Leefsma –

+0

Die Viewer-API ist spezifisch für den Betrachter. Je nachdem, was Sie tun, können Sie sich auf niedrigere Three.js-API-Aufrufe verlassen, aber das Erstellen von Ereignisnamen in einer nicht streng typisierten Sprache wie js wird Sie nicht sehr weit bringen ... –

Verwandte Themen