[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: IDLgrWindow Pickdata on an IDLexObjView Obect.
- Subject: Re: IDLgrWindow Pickdata on an IDLexObjView Obect.
- From: "Dick Jackson" <dick(at)d-jackson.com>
- Date: Mon, 11 Jun 2001 20:38:34 GMT
- Newsgroups: comp.lang.idl-pvwave
- Organization: Shaw Communications
- References: <9g2til$hv5$1@skates.gsfc.nasa.gov>
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:25303
Hi Don,
"Don J Lindler" <lindler@rockit.gsfc.nasa.gov> wrote ...
> Does anyone have any suggestions on how to get the correct 3-D position
> using the Pickdata method for an IDLgrWindow object which is displaying an
> IDLexObjView. Pickdata correctly finds the objects but returns incorrect
> x,y,z values. I am trying to modify xplot3d.pro to return the x,y, and z
> coordinates of a IDLgrPolyline displayed using Orbs for each datapoint.
I've used this a lot, with good results. I'm not sure where you are calling
the PickData from, but here is one point to note. You should either:
1) call PickData passing the primitive graphic object itself, retrieved
using Select:
oSel = oWindow -> Select(oView, [event.x, event.y]) ; returns object array
IF Size(oSel, /TName) EQ 'OBJREF' THEN BEGIN ; no selection returns -1
pick = oWindow-> PickData(oView, oSel[0], [event.x, event.y], dataXYZ)
ENDIF
or:
2) call PickData passing the "innermost" model that contains the object
directly (note: in an IDLexObjView, it is that view's oModel3 that
contains added non-stationary objects, and this model can only be
accessed inside a method of IDLexObjView or a subclass of it.
IDLexObjView::Update is a good place to use this)
"self" would be the instance of IDLexObjView:
pick = oWindow -> PickData(self, self.oModel3, [event.x, event.y], dataXYZ)
Hope this helps!
Cheers,
--
-Dick
Dick Jackson / dick@d-jackson.com
D-Jackson Software Consulting / http://www.d-jackson.com
Calgary, Alberta, Canada / +1-403-242-7398 / Fax: 241-7392