From b17a9f0bc606760fba4ea13a95451a63363d0905 Mon Sep 17 00:00:00 2001 From: Kevin Harrington Date: Tue, 29 Mar 2022 13:59:26 -0400 Subject: [PATCH] connect the mobile base before generating cad --- .../bowlerstudio/BowlerKernel.java | 31 ++++++++++--------- .../creature/MobileBaseCadManager.java | 16 ++++++++-- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/neuronrobotics/bowlerstudio/BowlerKernel.java b/src/main/java/com/neuronrobotics/bowlerstudio/BowlerKernel.java index 97dfc82d..c589eda5 100644 --- a/src/main/java/com/neuronrobotics/bowlerstudio/BowlerKernel.java +++ b/src/main/java/com/neuronrobotics/bowlerstudio/BowlerKernel.java @@ -32,6 +32,7 @@ import com.neuronrobotics.sdk.addons.kinematics.MobileBase; import eu.mihosoft.vrl.v3d.CSG; +import eu.mihosoft.vrl.v3d.ICSGProgress; import eu.mihosoft.vrl.v3d.JavaFXInitializer; import marytts.signalproc.effects.LpcWhisperiserEffect; import marytts.signalproc.effects.RobotiserEffect; @@ -41,7 +42,7 @@ public class BowlerKernel { - private static final String CSG = null; + //private static final String CSG = null; private static File historyFile = new File(ScriptingEngine.getWorkspace().getAbsolutePath() + "/bowler.history"); static { @@ -298,6 +299,15 @@ public void run() { } private static void processReturnedObjects(Object ret) { + CSG.setProgressMoniter(new ICSGProgress() { + @Override + public void progressUpdate(int currentIndex, int finalIndex, String type, + eu.mihosoft.vrl.v3d.CSG intermediateShape) { + + } + + }); + ArrayList csgBits = new ArrayList<>(); processReturnedObjects(ret,csgBits); try { @@ -318,20 +328,13 @@ private static void processReturnedObjects(Object ret, ArrayList csgBits) { csgBits.add((CSG)ret); } if(MobileBase.class.isInstance(ret)) { - MobileBaseCadManager m=MobileBaseCadManager.get((MobileBase)ret); + + MobileBase ret2 = (MobileBase)ret; + ret2.connect(); + MobileBaseCadManager m=MobileBaseCadManager.get(ret2); m.setConfigurationViewerMode(false); - m.generateCad(); - while(m.getProcesIndictor().get()<1) { - try { - Thread.sleep(200); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - System.out.println("Building cad "+(m.getProcesIndictor().get()*100)+"%"); - - } - processReturnedObjects(m.getAllCad(),csgBits); + ArrayList generateBody = m.generateBody(); + processReturnedObjects(generateBody,csgBits); } diff --git a/src/main/java/com/neuronrobotics/bowlerstudio/creature/MobileBaseCadManager.java b/src/main/java/com/neuronrobotics/bowlerstudio/creature/MobileBaseCadManager.java index e1a61c93..c8dfdef1 100644 --- a/src/main/java/com/neuronrobotics/bowlerstudio/creature/MobileBaseCadManager.java +++ b/src/main/java/com/neuronrobotics/bowlerstudio/creature/MobileBaseCadManager.java @@ -374,8 +374,12 @@ private static File resetConfigurationScript() cadEngineConfiguration = (ICadGenerator) ScriptingEngine.inlineFileScriptRun(confFile, null); return confFile; } - + public ArrayList generateBody() { + return generateBody(getMobileBase()); + } public ArrayList generateBody(MobileBase base) { + if(base.isAvailable()) + throw new RuntimeException("Device "+base.getScriptingName()+" is not connected, can not generate cad"); getProcesIndictor().set(0); setAllCad(new ArrayList<>()); @@ -830,7 +834,7 @@ public void run() { } catch (Exception e) { getUi().highlightException(getCadScript(), e); } - // System.out.print("\r\nDone Generating CAD!\r\n"); + if (master != null) { for (int i = 0; i < allCad.size(); i++) master.allCad.add(allCad.get(i)); @@ -838,7 +842,13 @@ public void run() { } else getUi().setCsg(MobileBaseCadManager.get(base), getCadScript()); cadGenerating = false; - System.out.print("\r\nDone Generating CAD!\r\n"); + System.out.print("\r\nDone Generating CAD! num parts: "+allCad.size()+"\r\n"); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } getProcesIndictor().set(1); // System.gc(); }