From: SourceForge.net <no...@so...> - 2010-06-10 20:26:26
|
Feature Requests item #3013441, was opened at 2010-06-08 16:15 Message generated for change (Comment added) made by hansonr You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=379136&aid=3013441&group_id=23629 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Interface Improvements Group: None Status: Closed Priority: 5 Private: No Submitted By: David Koes (dkoes) Assigned to: Nobody/Anonymous (nobody) Summary: selection of isosurfaces Initial Comment: For my application I need to be able to select isosurfaces (mostly spheres) and for the selected surface to be the one on top in the current view. I've attached the diff of my code that enables this feature with the current svn snapshot. There are some changes to navigation by surfaces that are necessary to support both modes. It would be really great if this feature could be rolled into the official Jmol source. Thanks, -Dave ---------------------------------------------------------------------- >Comment By: Bob Hanson (hansonr) Date: 2010-06-10 15:26 Message: That's fine. I figured as much. You know, you can use the BIND command to associate any mouse action with a whole set of Jmol actions, including _pickIsosurface. Originally I had it so that you could use alt because the left button was in use for other things, but with it set to require set drawPicking that's no longer necessary. With another slight tweak I think you should be able to incorporate these points into measurements. Measure distances to a surface. Could be useful. But that's not in there. ---------------------------------------------------------------------- Comment By: David Koes (dkoes) Date: 2010-06-10 14:43 Message: For what it's worth, one of the reasons I got read of the ALT+LEFT binding is that this gets intercepted by my window manager (to move the window) and is never seen by the applet. ---------------------------------------------------------------------- Comment By: Bob Hanson (hansonr) Date: 2010-06-10 12:16 Message: checked in. Slight differences to suggestions -- --requires set drawPicking --reports similar information as when clicking a drawn point, including id, mesh number, face number, x, y, and z, and title --doesn't break navigation mode. ---------------------------------------------------------------------- Comment By: Bob Hanson (hansonr) Date: 2010-06-10 11:25 Message: for this: - if (viewer.getNavigationMode() && viewer.getNavigateSurface() - && (shape = shapes[JmolConstants.SHAPE_ISOSURFACE]) != null && + if ((shape = shapes[JmolConstants.SHAPE_ISOSURFACE]) != null && (pt = shape.checkObjectClicked(x, y, modifiers, bsVisible)) != null) I'd rather tie this into set drawPicking same as we have now: set drawHover shows isosurface points upon hovering. ---------------------------------------------------------------------- Comment By: Bob Hanson (hansonr) Date: 2010-06-10 11:16 Message: - bind(SINGLE_CLICK+ALT+LEFT, ActionManager.ACTION_pickIsosurface); + bind(SINGLE_CLICK+LEFT, ActionManager.ACTION_pickIsosurface); You need to set the binding yourself for this specialized application. I don't think it's appropriate to be generally picking isosurface points. With a large isosurface this could be VERY time intensive. ---------------------------------------------------------------------- Comment By: Bob Hanson (hansonr) Date: 2010-06-10 11:15 Message: I don't think this is going to work: - if (isBound(action, ACTION_pickAtom) || isBound(action, ACTION_pickPoint) - || isDragSelected) { + if (nearestAtomIndex >= 0 && (isBound(action, ACTION_pickAtom) || isBound(action, ACTION_pickPoint) + || isDragSelected)) { atomPicked(nearestAtomIndex, nearestPoint, isDragSelected ? 0 : action); because we need to enter that routine for some draw picking (set drawPicking) I suggest (having renamed that method to make it more clear: if (tokType != Token.isosurface) atomOrPointPicked(nearestAtomIndex, nearestPoint, isDragSelected ? 0 : action); ---------------------------------------------------------------------- Comment By: Bob Hanson (hansonr) Date: 2010-06-10 10:50 Message: sorry -- I should read more carefully! ---------------------------------------------------------------------- Comment By: Bob Hanson (hansonr) Date: 2010-06-10 10:45 Message: Oh, also, I need to see changes to development branch, not 11.8. Nothing new is going into 11.8. Thanks. ---------------------------------------------------------------------- Comment By: Bob Hanson (hansonr) Date: 2010-06-10 10:43 Message: define "the one on top" please. A few comments would be nice so I could understand what you are after there in the code. Question: - if (isBound(action, ACTION_pickAtom) || isBound(action, ACTION_pickPoint) - || isDragSelected) { + if (nearestAtomIndex >= 0 && (isBound(action, ACTION_pickAtom) || isBound(action, ACTION_pickPoint) + || isDragSelected)) { Isn't nearestAtomIndex == -1 when a draw atom is picked in the mode set picking draw ? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=379136&aid=3013441&group_id=23629 |