How to Get Active Selection and Extract it?

Hello,
I'm struggling with a problem.
I want to write a filter, that copies selected points form a vtkPolyData into a 
vtkDataObject without using the apply button, I try to use 3 custom buttons in 
order to copy the data into different Objects. Aim is to access the point data 
of the selected points. I've already tried this in Python and it works as 
expected.
Doing the same in C++ doesn't seem as straight forward as it was in Python...


How can I pass the output port from a vtkSMSourceProxy to a vtkAlgorithm input 
port. Is there any way to do that?
My code looks very similar to this:

  vtkSMProxyManager* pxm = vtkSMProxyManager::GetProxyManager();

  vtkSMSessionProxyManager* spxm = pxm->GetActiveSessionProxyManager();

  vtkSMProxySelectionModel* selmodel = spxm->GetSelectionModel("ActiveSources");

  vtkSmartPointer<vtkSMSourceProxy> FilterProxy =
      vtkSMSourceProxy::SafeDownCast(selmodel->GetCurrentProxy());

  vtkSmartPointer<vtkSMSourceProxy> SourceProxy =
      vtkSMSourceProxy::SafeDownCast(FilterProxy->GetProducerProxy((uint)0));

  vtkSmartPointer<vtkSMSourceProxy> active_selection =
      vtkSMSourceProxy::SafeDownCast(SourceProxy->GetSelectionInput(0));

  vtkSmartPointer<vtkExtractSelection> ExtrSelFltr = 
vtkSmartPointer<vtkExtractSelection>::New();

  ExtrSelFltr-> SetInputConnection(0, 
this->GetInputAlgorithm()->GetOutputPort((uint)0));
  ExtrSelFltr-> SetInputConnection(1, 
active_selection->GetOutputPort((uint)0));   //Not the right way!

  ExtrSelFltr->Update();


The functionality I want to implement written in Python:

def GetSelectionSource(proxy=None):
    """If a selection has exists for the proxy (if proxy is not specified then
       the active source is used), returns that selection source"""
    if not proxy:
        proxy = GetActiveSource()
    if not proxy:
        raise RuntimeError, \
        "GetSelectionSource() needs a proxy argument of that an active source 
is set."
    return proxy.GetSelectionInput(proxy.Port)


active_selection = GetSelectionSource()
# Create extract selection
Extr_Sel = ExtractSelection(Selection=active_selection)
# Access raw data of Extr_Sel
Extr_Sel_raw = servermanager.Fetch(Extr_Sel)

Any comment is appreciated and
thanks in advance.


Mit freundlichen Gruessen / Best regards

Martin Schröder, FIEA
MTU Aero Engines GmbH
Engineering Systems (CAE)
Dachauer Str. 665
80995 Muenchen
Germany

Tel  +49 (0)89  14 89 57 20
Fax  +49 (0)89  14 89-96 89 4
mailto:martin.schroe...@mtu.de
http://www.mtu.de


--
MTU Aero Engines GmbH
Geschaeftsfuehrung/Board of Management: Egon W. Behle, Vorsitzender/CEO; Dr. 
Rainer Martens, Dr. Stefan Weingartner, Reiner Winkler
Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: Klaus 
Eberhardt
Sitz der Gesellschaft/Registered Office: Muenchen
Handelsregister/Commercial Register: Muenchen HRB 154230

Diese E-Mail sowie ihre Anhaenge enthalten MTU-eigene vertrauliche oder 
rechtlich geschuetzte Informationen.
Wenn Sie nicht der beabsichtigte Empfaenger sind, informieren Sie bitte den 
Absender und loeschen Sie diese
E-Mail sowie die Anhaenge. Das unbefugte Speichern, Kopieren oder Weiterleiten 
ist nicht gestattet.

This e-mail and any attached documents are proprietary to MTU, confidential or 
protected by law.
If you are not the intended recipient, please advise the sender and delete this 
message and its attachments.
Any unauthorised storing, copying or distribution is prohibited.
_______________________________________________
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

Reply via email to