[vtkusers] Delete an Object created in procedure before returning it
Sanket Jain
jainsanket1 at gmail.com
Thu Dec 17 10:26:41 EST 2009
Hello Experts,,
My question is a TCL question rather than a VTK question. I hope it is fine
with other members. At the end, is the part of my code required for
understanding my question.
If you look at my code, I have defined 2 procedures: MakeSTLActor and
MakeDataActor. The main function call these procedures whenever required.
Now, when these procedures are called for the 1st time, only the highlighted
portion of the procedure gets the job done.
If the procedure is called again for the 2nd time, the interpreter
give error saying that objects partMapper and partActoro (in MakeSTLActor
procedure; this also implies for the objects in the other procedure) is
already created. So, I can delete the partMapper object as soon as its job
is done (specifically, after creation of partActoro). But I cannot delete
partActoro because I have to return this object. So, next time when the
procedure is called, I get the error regarding the existence of partActoro.
At, this point I am using flags in my procedures (closeevent, isotrack), to
delete the objects before calling the procedure for 2nd time. Although, my
script runs without any bugs, I think this might not be the most elegant way
of doing it. So, does any one knows a way by which I can avoid using the
flags in my procedure and delete the objects (partActoro and dataActoro in
the 2 procedures) before/while the return to the main function.
Let me know if I need to clarify my question.
Thank You,
Sanket Jain
# CODE STARTS HERE......
package require vtk
package require
vtkinteractionpackage require vtktesting
#... Relevant Tk Codes for building the GUI.
proc main {} {
#......Some Relevant TCL Codes
vtkActor partActor
set partActor [MakeSTLActor vtkSTLReader part]
[$partActor GetProperty] SetOpacity 1
vtkActor dataActor
set dataActor [MakeDataActor vtkConnectivityFilter connect]
#.... Other Relevant TCL Codes
}
#Make Actor for STL File
proc MakeSTLActor {vtkSTLReader part} {
global closeevent
global isotrack
if {$isotrack==1} {
partMapper Delete
partActoro Delete
}
if {$closeevent == 0} {
partMapper Delete
partActoro Delete
} else {
vtkPolyDataMapper partMapper
partMapper SetInputConnection [$part GetOutputPort]
vtkActor partActoro
partActoro SetMapper partMapper
return partActoro
}
}
# Makes Actor for the Original Data
proc MakeDataActor {vtkConnectivityFilter connecto} {
global closeevent
global isotrack
if {$isotrack==1} {
dataMapper Delete
prop Delete
dataActoro Delete
}
if {$closeevent == 0} {
dataMapper Delete
prop Delete
dataActoro Delete
} else {
vtkDataSetMapper dataMapper
dataMapper SetInputConnection [$connecto GetOutputPort]
vtkProperty prop
prop SetOpacity 0.1
vtkActor dataActoro
dataActoro SetMapper dataMapper
dataActoro SetProperty prop
dataActoro SetOrigin 0 0 0
return dataActoro
}
}
#.... Similarly Defining other procedures
#which creates actors and returns to the main
#function which renders them.
--
Sanket Jain
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20091217/c03f6a5b/attachment.htm>
More information about the vtkusers
mailing list