Re: Selecting objects and PickData problem [message #21148 is a reply to message #21147] |
Thu, 10 August 2000 00:00  |
davidf
Messages: 2866 Registered: September 1996
|
Senior Member |
|
|
Richard Tyc (richt@sbrc.umanitoba.ca) writes:
> I am trying to get object selection (and ultimately manipulation
> interactively) to work properly without much success.
>
> I understand from previous postings and David Fannings example that the
> method first requires:
>
> 1) perform a selObj = oWIndow->Select ( oView, [sEvent.x,sEvent.y] )
> operation to get the list of objects which could be picked from.
>
> 2) Assuming my object of choice is in the list (I check on the NAME property
> for each object which I have previously assigned), I can then do something
> like
>
> pick = oWindow->PickData( oView, pickObj, [sEvent.x,sEvent.y], dataxyz)
>
> My problem is that the PickData method does work ( ie. the right pickObj is
> found from the original selection list) but the actual data in dataxyz makes
> no sense!! My object of choice, an IDLgrPolyLine, is part of oModel
> contained in oView which has been transformed. I display the X,Yand Z axis
> on screen when I manipulate the Model (using oTrackball type interaction)
> but the PickData returns data outside my bounds ie. the entire polyline is
> within positive X,Y,Z but yet dataxyz returns negative positions ?
> Does dataxyz not have the correct transformed data ? Is there a bug here ?
>
> I am trying to allow the user to interactively grap the end point of a line
> and modify its position by moving the mouse.
I don't know, Richard. I haven't tried this particular
thing. But I do see a lot of caveats in the on-line help
for the PickData method, including caveats that you may
have to apply your own data transformations to these
values. Have you read the documentation carefully?
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438 E-Mail: davidf@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
|
|
|