The problem with implementing such a component in ParaView is the fact that there's no universal notion of "RegionID". However it's may not be difficult to add a tool button plugin that uses the some code similar to FindData to create RegionID based selections for your application.
Utkarsh On Thu, Apr 22, 2010 at 3:19 AM, Christian Werner <[email protected]> wrote: > Yep, I know the Find Data and it's quite nice to have. I mean something > still more simple. In my use case i wrote: > > "...The object will highlight so the user can always see which objects > have already been selected..." > > > which could be realized with some kind of "RegionID" selector. So one click > and -BAM- all points with same ID selected. > > Best regards, > Christian > > > Utkarsh Ayachit wrote: >> >> Glad it works. >> >> What do you mean by "a pick selects all cells with same ID" ? Is ID a >> cell array? If so, you can already do so using the Edit | "Find Data" >> dialog >> [ http://www.paraview.org/Wiki/Find_Data_using_Queries ] >> >> Utkarsh >> >> >> On Wed, Apr 21, 2010 at 5:10 PM, Christian Werner >> <[email protected]> wrote: >> >>> >>> This works perfectly, thank you very much! The processing is getting >>> really >>> professional now. >>> >>> As for the selection tools, should I just go ahead and write a feature >>> request? (a pick selects all cells with same ID / enable multiselect so >>> you >>> do not have to use the Ctrl-Key anymore) >>> >>> Best regards, >>> Christian >>> >>> >>> >>> Utkarsh Ayachit wrote: >>> >>>> >>>> Christian, >>>> >>>> Attached is simple python script (that you can encapsulate as a macro) >>>> to which you can add code to processes the extract points however you >>>> like. I am simply writing them out to a file. >>>> >>>> To use this script, do the following (to keep it simple I am using the >>>> Sphere source as an example, no reason why it won't work with your >>>> data). >>>> 1> Create Sphere source >>>> 2> Create a selection of points or cells >>>> 3> Open Python Shell and run the attached script. >>>> >>>> As as result, you'll have a mygrid.vtu file written out with the >>>> extracted points(or cells). No 3 seconds waits, no errors writing >>>> files, no need for the user to create extract selection filter. >>>> >>>> Using the python macros capability, you can make this script a >>>> trigger-able from a toolbutton. >>>> >>>> Utkarsh >>>> >>>> On Wed, Apr 21, 2010 at 8:55 AM, Christian Werner >>>> <[email protected]> wrote: >>>> >>>> >>>>> >>>>> Hi! >>>>> >>>>> I made a new topic about that selection thing. Here is my use-case: >>>>> >>>>> Overview: We have volumetric data of metal components. These components >>>>> contain unwanted defects (holes that appear during the casting >>>>> process). >>>>> These holes are visible as dark regions (objects) in the data. >>>>> Unfortunately, there are other structures in the metal that are also >>>>> dark >>>>> (graphite). After a few image processing steps many of those objects >>>>> (defects and graphite) are segmented out of the originial volume data. >>>>> A >>>>> contouring (and connectivity filtering) yields a nice visualization of >>>>> those >>>>> objects. >>>>> >>>>> Use Case: Select defects >>>>> Goal: The user selects the defects out of the many presented objects. >>>>> >>>>> Details: Due to the extremely cool features of Paraview, the user is >>>>> able >>>>> to >>>>> mix the views of all extracted objects and the original volume data >>>>> (see >>>>> image) to easily verify which object is a defect and which one is >>>>> graphite. >>>>> When the user identifies an object as a defect, he marks it by a simple >>>>> click. The object will highlight so the user can always see which >>>>> objects >>>>> have already been selected. When the user is done selecting all >>>>> defects, >>>>> he >>>>> clicks on the "Measure Defects" button. A database containing all >>>>> necessary >>>>> information on the defects (centroid, total volume, volume >>>>> percentage,...) >>>>> will automatically be created and saved in a secret place. >>>>> >>>>> Remark: >>>>> The "Measure Defects Button" will call a Python macro that desperately >>>>> tries >>>>> to extract the selected objects (points). These points are needed for >>>>> correspondance to the original volume data that is actually being >>>>> analyzed >>>>> (the mean grey value of a defect and such are important quantities). >>>>> Certainly, one single point per object suffices for this >>>>> correspondance. >>>>> >>>>> >>>>> Best regards, >>>>> Christian >>>>> >>>>> >>>>> Utkarsh Ayachit schrieb: >>>>> >>>>> >>>>>> >>>>>> Christian, >>>>>> >>>>>> O-oh! We can't have our users going mad now can we :). Guess we are >>>>>> looking at this the wrong way, instead of working from the solution, >>>>>> let's start with the problem/use-case. Can you describe your use-case >>>>>> as simply as possibly. What's the goal here? What is the user doing? >>>>>> >>>>>> Utkarsh >>>>>> >>>>>> On Mon, Apr 19, 2010 at 11:20 AM, Christian Werner >>>>>> <[email protected]> wrote: >>>>>> >>>>>> >>>>>> >>>>>>> >>>>>>> Does that mean that I have to create a selection with explicitly >>>>>>> defining >>>>>>> the points? Oh man... Then I can forget the whole thing anyway. >>>>>>> >>>>>>> Everything is so nice about Paraview, but this selection thing is >>>>>>> driving >>>>>>> me >>>>>>> mad. >>>>>>> >>>>>>> It's still all about making it as easy as possible for the user to >>>>>>> select >>>>>>> objects out of Polydata and let a plugin analyze these objects. As it >>>>>>> seems >>>>>>> now, the user has to: >>>>>>> >>>>>>> 1) Ctrl+Click matching objects one after another (already dangerours, >>>>>>> because you might forget to hold down Ctrl when selecting) >>>>>>> 2) go to Filter->Recent->ExtractSelection >>>>>>> 3) wait at least 3 seconds >>>>>>> 4) call a plugin that writes the extracted points' coordinates and >>>>>>> their >>>>>>> ID >>>>>>> to a file >>>>>>> 5) call the analyzing plugin that reads out the file (to get the >>>>>>> RegionID >>>>>>> and coordinates) and does the analysing stuff (in ITK) >>>>>>> >>>>>>> I have found a way to do that "wait 3 seconds" in Python using a >>>>>>> thread(!) >>>>>>> which checks the time and joins after some seconds. Using sleep(5) >>>>>>> simply >>>>>>> froze everything and postponed the segmentation fault (which clearly >>>>>>> comes >>>>>>> from my writer that doesn't have input). Another possibility would be >>>>>>> to >>>>>>> modify vtkExtractSelection to suite my needs, but I won't do that, >>>>>>> since >>>>>>> I >>>>>>> don't have time for that anymore. This workaround has to do. >>>>>>> >>>>>>> Anyway, Paraview, VTK and ITK are really nice, I am glad I found >>>>>>> these >>>>>>> open-source tools. >>>>>>> >>>>>>> Best regards, >>>>>>> Christian >>>>>>> >>>>>>> >>>>>>> >>>>>>> Utkarsh Ayachit schrieb: >>>>>>> >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> Does your data have time? If not, you don't need to specify the >>>>>>>> time=10000 attribute at all. So SelectionWriter is the thing that's >>>>>>>> coming from your plugin? Does it support writing empty datasets? >>>>>>>> Can >>>>>>>> you attach a debugger and see where is crashes? Are you sure it's >>>>>>>> not >>>>>>>> crashing in the writer? I dont' see why UpdatePipeline() on extract >>>>>>>> selection would crash. Instead of using a macro, try manually typing >>>>>>>> the text in the python shell to see exactly what line causes the >>>>>>>> segfault. >>>>>>>> >>>>>>>> BTW, ExtractSelection needs two inputs: 'Input" and "Selection" >>>>>>>> where >>>>>>>> Selection is set to the SelectionQuerySource proxy. >>>>>>>> >>>>>>>> Utkarsh >>>>>>>> >>>>>>>> On Mon, Apr 19, 2010 at 10:34 AM, Christian Werner >>>>>>>> <[email protected]> wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> I am afraid UpdatePipeline doesn't help, even if I set the time to >>>>>>>>> some >>>>>>>>> high >>>>>>>>> value. Paraview crashes right in the moment where I start this >>>>>>>>> macro: >>>>>>>>> >>>>>>>>> extract=ExtractSelection(Input=ConnectivityFilter) >>>>>>>>> >>>>>>>>> UpdatePipeline(time= 10000, proxy=extract) >>>>>>>>> >>>>>>>>> mFilename = destPath + str( time() ) >>>>>>>>> >>>>>>>>> swriter=SelectionWriter(Input=extract) >>>>>>>>> >>>>>>>>> swriter.FileName=mFilename >>>>>>>>> >>>>>>>>> swriter.UpdatePipeline() >>>>>>>>> >>>>>>>>> >>>>>>>>> When I manually select Fiters->ExtractSelection and then do: >>>>>>>>> >>>>>>>>> mFilename = destPath + str( time() ) >>>>>>>>> >>>>>>>>> swriter=SelectionWriter() >>>>>>>>> >>>>>>>>> swriter.FileName=mFilename >>>>>>>>> >>>>>>>>> swriter.UpdatePipeline() >>>>>>>>> >>>>>>>>> >>>>>>>>> everything works fine. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Utkarsh Ayachit schrieb: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> You can simply call UpdatePipeline() as follows: >>>>>>>>>> >>>>>>>>>> from paraview.simple import * >>>>>>>>>> .... >>>>>>>>>> UpdatePipeline(proxy=extractSelectionSource) >>>>>>>>>> >>>>>>>>>> This will update the extract selection filter explicitly. Look at >>>>>>>>>> help(UpdatePipeline) for details. >>>>>>>>>> >>>>>>>>>> Utkarsh >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Sun, Apr 18, 2010 at 3:38 PM, Christian Werner >>>>>>>>>> <[email protected]> wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hi Utkarsh, >>>>>>>>>>> >>>>>>>>>>> these are great news. I tried the python trace but not in >>>>>>>>>>> combination >>>>>>>>>>> with >>>>>>>>>>> the extraction (what I acutally do need anyway....) >>>>>>>>>>> >>>>>>>>>>> As you might remember I am working around the "lack" of >>>>>>>>>>> possibilty >>>>>>>>>>> to >>>>>>>>>>> select >>>>>>>>>>> whole objects (cells with same RegionID). With the given >>>>>>>>>>> SelectionQuerySource this workaround is complete. >>>>>>>>>>> >>>>>>>>>>> There remains one issue: At some point I call an >>>>>>>>>>> ExtractSelection() >>>>>>>>>>> in >>>>>>>>>>> Python that is followed by a call to a vtk-Plugin (which writes >>>>>>>>>>> the >>>>>>>>>>> point >>>>>>>>>>> data of the selected points to disk). The resulting file is >>>>>>>>>>> empty, >>>>>>>>>>> because >>>>>>>>>>> the Extraction takes a few seconds and obviously the plugin has >>>>>>>>>>> no >>>>>>>>>>> valid >>>>>>>>>>> input when being executed. Paraview also crashes as a >>>>>>>>>>> consequence. >>>>>>>>>>> When >>>>>>>>>>> I >>>>>>>>>>> am >>>>>>>>>>> doing this manually (trigger ExtractSelection, wait until it's >>>>>>>>>>> done, >>>>>>>>>>> call >>>>>>>>>>> the vtk Plugin to write the point data) everything works fine. I >>>>>>>>>>> could >>>>>>>>>>> just >>>>>>>>>>> go ahead and do a dull time.sleep(3) between the extraction and >>>>>>>>>>> the >>>>>>>>>>> call >>>>>>>>>>> to >>>>>>>>>>> the plugin, but this certainly isn't good programming style. >>>>>>>>>>> >>>>>>>>>>> What can I do instead? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Best regards, >>>>>>>>>>> Christian >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Utkarsh Ayachit wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Yes, you can use the "SelectionQuerySource" to construct your >>>>>>>>>>>> query >>>>>>>>>>>> as >>>>>>>>>>>> follows: >>>>>>>>>>>> >>>>>>>>>>>> selection_source_540 = SelectionQuerySource( InsideOut=0, >>>>>>>>>>>> ArrayName='', HierarchicalLevel=-1, ProcessID=-1, >>>>>>>>>>>> ContainingCells=0, >>>>>>>>>>>> DoubleValues=None, HierarchicalIndex=-1, FieldType='CELL', >>>>>>>>>>>> ArrayComponent=0, Operator='IS_ONE_OF', TermMode='ID', >>>>>>>>>>>> CompositeIndex=-1, IdTypeValues=0 ) >>>>>>>>>>>> >>>>>>>>>>>> You can use the python trace recorder functionality to determine >>>>>>>>>>>> how >>>>>>>>>>>> to create the query. You will, however have to "Extract >>>>>>>>>>>> Selection" >>>>>>>>>>>> from the query (and hit apply) before the selection_source >>>>>>>>>>>> object >>>>>>>>>>>> will >>>>>>>>>>>> appear in the trace. >>>>>>>>>>>> >>>>>>>>>>>> Utkarsh >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Sat, Apr 17, 2010 at 9:32 AM, Christian Werner >>>>>>>>>>>> <[email protected]> wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Hello! >>>>>>>>>>>>> >>>>>>>>>>>>> Is there any chance that the new Edit->Find Data functionality >>>>>>>>>>>>> is >>>>>>>>>>>>> available >>>>>>>>>>>>> in Python-Scripting? >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Best regards, >>>>>>>>>>>>> Christian >>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> Powered by www.kitware.com >>>>>>>>>>>>> >>>>>>>>>>>>> Visit other Kitware open-source projects at >>>>>>>>>>>>> http://www.kitware.com/opensource/opensource.html >>>>>>>>>>>>> >>>>>>>>>>>>> Please keep messages on-topic and check the ParaView Wiki at: >>>>>>>>>>>>> http://paraview.org/Wiki/ParaView >>>>>>>>>>>>> >>>>>>>>>>>>> Follow this link to subscribe/unsubscribe: >>>>>>>>>>>>> http://www.paraview.org/mailman/listinfo/paraview >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Powered by www.kitware.com >>>>>>> >>>>>>> Visit other Kitware open-source projects at >>>>>>> http://www.kitware.com/opensource/opensource.html >>>>>>> >>>>>>> Please keep messages on-topic and check the ParaView Wiki at: >>>>>>> http://paraview.org/Wiki/ParaView >>>>>>> >>>>>>> Follow this link to subscribe/unsubscribe: >>>>>>> http://www.paraview.org/mailman/listinfo/paraview >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>> >>>>> >>> >>> > > _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview
