public String runScript2(final String script) {
		evalAction.appendScript(script);
		if (!evalAction.isStopped())
			return null;
		if (evalThread == null) {
			evalThread = new Thread("3D Model Script Runner") {
				public void run() {
					try {
						evalAction.evaluate();
					} catch (InterruptedException e) {
					}
				}
			};
			evalThread.setPriority(Thread.NORM_PRIORITY - 1);
			evalThread.setUncaughtExceptionHandler(new DisasterHandler(DisasterHandler.SCRIPT_ERROR, new Runnable() {
				public void run() {
					evalThread = null;
					clearScriptQueue();
					evalAction.halt();
				}
			}, null, getView()));
			evalThread.start();
		} else {
			// just in case there is a missed notification problem
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
			}
			synchronized (evalAction) {
				evalAction.notifyAll();
			}
		}
		getView().repaint();
		return null;
	}