import org.jcae.opencascade.jni.TopExp_Explorer;
import org.jcae.opencascade.jni.TopoDS_Face;
import org.jcae.opencascade.jni.TopoDS_Shape;
+import org.simantics.g3d.vtk.common.VtkView;
import org.simantics.opencascade.OCCTTool;
import org.simantics.utils.datastructures.Pair;
-import org.simantics.utils.threads.AWTThread;
import org.simantics.utils.threads.ThreadUtils;
import vtk.vtkActor;
import vtk.vtkDataSetMapper;
import vtk.vtkFeatureEdges;
import vtk.vtkGlyph3D;
-import vtk.vtkPanel;
import vtk.vtkPolyData;
import vtk.vtkPolyDataMapper;
import vtk.vtkPolyDataNormals;
public static boolean cleanPart = false;
public static boolean mergePoints = false;
- private vtkPanel panel;
+ private VtkView panel;
private TopoDS_Shape shape;
private List<vtkProp3D> actors = new ArrayList<vtkProp3D>(2);
private boolean errors = false;
- public vtkSolidObject(vtkPanel panel,TopoDS_Shape shape) {
+ public vtkSolidObject(VtkView panel,TopoDS_Shape shape) {
this.shape = shape;
this.panel = panel;
}
}
public void visualizeSolid(boolean showFaces, boolean showEdges, boolean showVertices, boolean showSilhouette) {
- clearActorsAWT();
+ clearActorsVTK();
errors = false;
Pair<vtkPolyData, Boolean> res = createSolidMesh(shape);
if (res == null) {
}
}
if (showSilhouette) {
- silhouette = createSilhouette(panel.GetRenderer(), data);
+ silhouette = createSilhouette(panel.getRenderer(), data);
}
actors.addAll(solid);
actors.addAll(edges);
if (silhouette != null)
actors.add(silhouette);
data.Delete();
- showActorsAWT();
+ showActorsVTK();
}
public void visualizeFaces(boolean showEdges, boolean showVertices) {
errors = false;
- clearActorsAWT();
+ clearActorsVTK();
Collection<vtkPolyData> datas = createFaceMeshes(shape);
for (vtkPolyData data : datas) {
if (data == null) {
actors.addAll(solid);
actors.addAll(edges);
- showActorsAWT();
+ showActorsVTK();
}
public boolean hasErrors() {
}
public List<vtkProp3D> getActors() {
- assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
+ assert (Thread.currentThread() == panel.getThreadQueue().getThread());
return actors;
}
public List<vtkProp3D> getSolid() {
- assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
+ assert (Thread.currentThread() == panel.getThreadQueue().getThread());
return solid;
}
public List<vtkProp3D> getEdges() {
- assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
+ assert (Thread.currentThread() == panel.getThreadQueue().getThread());
return edges;
}
public vtkActor getSilhouette() {
- assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
+ assert (Thread.currentThread() == panel.getThreadQueue().getThread());
return silhouette;
}
- public void showActorsAWT() {
- assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
- vtkRenderer ren = panel.GetRenderer();
+ public void showActorsVTK() {
+ assert (Thread.currentThread() == panel.getThreadQueue().getThread());
+ panel.lock();
+ vtkRenderer ren = panel.getRenderer();
for (vtkProp3D act : actors) {
ren.AddActor(act);
}
+ panel.unlock();
}
public void showActors() {
- ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
+ ThreadUtils.asyncExec(panel.getThreadQueue(), new Runnable() {
@Override
public void run() {
- showActorsAWT();
+ showActorsVTK();
}
});
}
- public void clearActorsAWT() {
- assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
+ public void clearActorsVTK() {
+ assert (Thread.currentThread() == panel.getThreadQueue().getThread());
if (actors.size() == 0)
return;
- vtkRenderer ren = panel.GetRenderer();
+ vtkRenderer ren = panel.getRenderer();
if (ren == null)
return;
panel.lock();
}
private void clearActorsAWT(List<vtkProp3D> actors) {
- assert (Thread.currentThread() == AWTThread.getThreadAccess().getThread());
+ assert (Thread.currentThread() == panel.getThreadQueue().getThread());
if (actors.size() == 0)
return;
- vtkRenderer ren = panel.GetRenderer();
+ vtkRenderer ren = panel.getRenderer();
if (ren == null)
return;
panel.lock();
actors.clear();
solid.clear();
edges.clear();
- ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
+ ThreadUtils.asyncExec(panel.getThreadQueue(), new Runnable() {
@Override
public void run() {
shape.delete();
shape = null;
}
- clearActorsAWT();
+ clearActorsVTK();
}
private static double TOLERANCE = 0.01;