2017-03-14 1 views
0

Nous avons intégré une fonctionnalité d'économie d'état personnalisée dans notre application Web, basée en grande partie sur l'extension «Screenshot Manager» créée par Philippe. Nous avons un problème avec la sélection, où certains composants qui étaient cachés lorsque l'état a été enregistré sont affichés lorsque l'état est chargé. Je l'ai répliqué sur viewer.autodesk.io avec le code du gestionnaire d'états vanilla.Problème avec la sélection dans le gestionnaire d'écran

Pour être précis, les composants déjà visibles dans la visionneuse qui sont masqués par un clic CTRL sur le navigateur du modèle disparaissent initialement dans la visionneuse. Cependant, lorsque vous enregistrez cet état et que vous rappelez l'état ultérieurement, les composants masqués de cette manière réapparaissent.

Pouvez-vous enquêter s'il vous plaît - est-ce un bug dans le code de gestionnaire d'états (nous avons un coup d'oeil mais ne peut pas le trouver - les composants cachés sont enregistrés dans l'état)?

Merci, Chris

+0

Par, sinon la question « Screenshot Manager » Je suppose que vous voulez dire réellement « Etat Manager » serait assez déroutant ... jusqu'à présent, je ne suis pas reproduire le problème que vous décrivez. Pouvez-vous jeter un oeil à mon dernier exemple à: https://forge-rcdb.autodesk.io/viewer?id=57efaead77c8eb0a560ef465. J'ai créé 2 états "hide direct" et "hide de navigateur" qui me semblent bien fonctionner. De plus, un état sauvegardé est juste un objet json, vous pouvez donc facilement voir à quoi ressemble votre état sauvegardé et voir si les dbId cachés sélectionnés ont été correctement sauvegardés dans l'état. –

+0

Vous pouvez également utiliser la version non-minifiée du viewer3D.js et placer des points de rupture dans la fonction "restoreState" pour vérifier ce qui s'y passe. –

+0

Bonjour Philippe. Désolé - Je fais référence au "States Manager" et je peux répliquer sur votre dernier code en procédant comme suit: Dans le navigateur de modèles, sélectionnez le sous-assemblage D-400687: 1. Puis CTRL-clic sur la pièce D400550: 1 pour le masquer. Sauvez l'état. Ensuite, chargez un état précédent et revenez au nouvel état. Vous constaterez que la partie D400550: 1 sera visible dans l'état. Vous pouvez également répliquer en sélectionnant la même partie dans la visionneuse et en la masquant par un clic droit. Il revient toujours. Autant que nous puissions le dire, les dbIds ne sont pas stockés dans l'objet JSON. –

Répondre

0

je vérifie ce qui se passe lorsque vous sélectionnez composants, ces 2 états sont incompatibles: l'enfant qui est caché, mais le parent s'isolé, il est donc l'affichage de tous ses enfants et se cachent le reste du composants dans le modèle. Pour obtenir le comportement que vous "attendez", vous devez masquer tous les composants sans isoler le sous-ensemble parent, puis créer votre premier état, puis masquer l'enfant, créer votre second état. Vous pouvez y parvenir en écrivant votre gestionnaire lorsque vous cliquez sur un nœud de navigateur. Pour cela, vous devrez implémenter votre propre ModelStructurePanel.

J'ai un exemple de base qui peut vous aider à commencer:

ModelStructurePanel

je vais jeter un oeil au gestionnaire de clic et y ajouter un exemple. Pour l'instant, vous pouvez vérifier dans la source du viewer3D.js quelles méthodes vous devez écraser.

Espoir qui aide