PickAttributes PickRPC::operator()(const int nid, const PickAttributes *atts, int wid) { SetNetId(nid); SetPickAtts(atts); SetWinId(wid); Execute(); return returnAtts; }
void avtLocateAndPickNodeQuery::PerformQuery(QueryAttributes *qa) { // Preparation work avtDataRequest_p dataRequest = GetInput()->GetOriginatingSource()->GetFullDataRequest(); avtDataAttributes &inAtts = GetInput()->GetInfo().GetAttributes(); avtDataValidity &inVal = GetInput()->GetInfo().GetValidity(); pickAtts.SetActiveVariable(dataRequest->GetVariable()); pickAtts.SetGhostType(inAtts.GetContainsGhostZones()); pickAtts.SetTimeStep(qa->GetTimeStep()); pickAtts.SetPickType(PickAttributes::Node); // Do the locate part of the query lnq->SetInput(GetInput()); lnq->SetPickAtts(&pickAtts); lnq->SetSILRestriction(querySILR); lnq->SetTimeVarying(true); lnq->PerformQuery(qa); SetPickAtts(lnq->GetPickAtts()); if (pickAtts.GetLocationSuccessful()) { // Do the pick part of the query npq->SetInput(GetInput()->GetQueryableSource()->GetOutput()); npq->SetPickAtts(&pickAtts); npq->SetSILRestriction(querySILR); npq->SetSkippedLocate(false); npq->SetTimeVarying(true); npq->SetNeedTransform(inVal.GetPointsWereTransformed()); if (inAtts.HasInvTransform() && inAtts.GetCanUseInvTransform()) npq->SetInvTransform(inAtts.GetInvTransform()); npq->PerformQuery(qa); SetPickAtts(npq->GetPickAtts()); } if (PAR_Rank() == 0) { doubleVector vals; if (pickAtts.GetFulfilled()) { // Special indication that the pick point should not be displayed. double cp[3] = { FLT_MAX, FLT_MAX, FLT_MAX }; std::string msg; pickAtts.SetCellPoint(cp); pickAtts.CreateOutputString(msg); qa->SetResultsMessage(msg); if ( pickAtts.GetNumVarInfos() == 1) { vals = pickAtts.GetVarInfo(0).GetValues(); qa->SetResultsValue(vals[vals.size()-1]); } else { for (int i = 0; i < pickAtts.GetNumVarInfos(); ++i) { vals.push_back(pickAtts.GetVarInfo(i).GetValues()[0]); } qa->SetResultsValues(&vals[0], (int)vals.size()); } } else { char msg[120]; SNPRINTF(msg, 120, "Could not retrieve information from domain " " %d node %d.", domain, node); qa->SetResultsMessage(msg); qa->SetResultsValue(vals); } } pickAtts.PrepareForNewPick(); }