Thread: [Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool PencilTool.java,1.29,1.30
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2005-10-31 07:52:53
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6571/src/net/sourceforge/bprocessor/gl/tool Modified Files: PencilTool.java Log Message: PencilTool - Can align the first point to existing geometry - Can use length field when setting first point - Improved display of feedback Index: PencilTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/PencilTool.java,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** PencilTool.java 30 Oct 2005 15:55:40 -0000 1.29 --- PencilTool.java 31 Oct 2005 07:52:45 -0000 1.30 *************** *** 51,54 **** --- 51,58 ---- protected Vertex alignVertex = null; + /** The snap vertex */ + + protected Vertex snapVertex = null; + /** The exterior Surface is a Surface, where a hole is being defined */ protected Surface exterior = null; *************** *** 97,111 **** /** ! * Set the align vertex * @param vertex The vertex */ protected void setAlignVertex(Vertex vertex) { - if (vertex != null) { - glv.getView().setAlignPoint(new double[]{vertex.getX(), vertex.getY(), vertex.getZ()}); - } else { - glv.getView().setAlignPoint(null); - } alignVertex = vertex; } /** --- 101,122 ---- /** ! * Set the align vertex (the last vertex added) * @param vertex The vertex */ protected void setAlignVertex(Vertex vertex) { alignVertex = vertex; } + + /** + * Set the snap vertex (a vertex pointed at) + * @param vertex The vertex + */ + protected void setSnapVertex(Vertex vertex) { + if (vertex != alignVertex) { + snapVertex = vertex; + glv.getView().setSnapVertex(vertex); + } + } + /** *************** *** 129,132 **** --- 140,144 ---- void onVertex(Vertex vertex) { setAlignVertex(vertex); + setSnapVertex(null); number = ""; *************** *** 138,143 **** active = new Edge("E" + edgeNum++, from, to); glv.getView().setActiveEdge(active); - glv.getView().setSnapVertex(to); - } else { // The following lines of code are there to make sure --- 150,153 ---- *************** *** 198,202 **** to = null; setAlignVertex(null); ! glv.getView().setSnapVertex(null); exterior = null; } --- 208,212 ---- to = null; setAlignVertex(null); ! setSnapVertex(null); exterior = null; } *************** *** 217,220 **** --- 227,239 ---- } + /** + * Round to mm + * @param value The value + * @return The rounded value + */ + protected double roundMM(double value) { + return ((double) Math.round(value * 1000)) / 1000.0; + } + /** *************** *** 252,270 **** */ protected void snapInSystem(CoordinateSystem system, Vertex vertex) { if (alignVertex != null) { ! Vertex v1 = system.translate(alignVertex); ! Vertex v2 = system.translate(vertex); ! // It should be the case that v1.z = v2.z = 0.0 ! if (Math.abs(v1.getX() - v2.getX()) < 0.3) { ! v2.setX(v1.getX()); } ! if (Math.abs(v1.getY() - v2.getY()) < 0.3) { ! v2.setY(v1.getY()); } - v2 = system.unTranslate(v2); - vertex.setX(v2.getX()); - vertex.setY(v2.getY()); - vertex.setZ(v2.getZ()); } } --- 271,323 ---- */ protected void snapInSystem(CoordinateSystem system, Vertex vertex) { + Vertex v = system.translate(vertex); + double x = v.getX(); + double y = v.getY(); + + Vertex a = null; + Vertex b = null; + if (alignVertex != null) { ! a = system.translate(alignVertex); ! } ! if (snapVertex != null) { ! b = system.translate(snapVertex); ! } ! ! double xl = 0.3; ! double yl = 0.3; ! double xd = 0.0; ! double yd = 0.0; ! if (a != null) { ! xd = Math.abs(a.getX() - v.getX()); ! if (xd < xl) { ! x = a.getX(); ! xl = xd; } ! yd = Math.abs(a.getY() - v.getY()); ! if (yd < yl) { ! y = a.getY(); ! yl = yd; ! } ! } ! if (b != null) { ! xd = Math.abs(b.getX() - v.getX()); ! if (xd < xl) { ! x = b.getX(); ! xl = xd; ! } ! yd = Math.abs(b.getY() - v.getY()); ! if (yd < yl) { ! y = b.getY(); ! yl = yd; } } + + v.setX(x); + v.setY(y); + v = system.unTranslate(v); + vertex.setX(roundMM(v.getX())); + vertex.setY(roundMM(v.getY())); + vertex.setZ(roundMM(v.getZ())); } *************** *** 328,332 **** if (current.getId() == null) { if (snap) { ! snap(current); } else { if (legal) { --- 381,390 ---- if (current.getId() == null) { if (snap) { ! Vertex origin = new Vertex("", 0, 0, 0); ! Vertex i = new Vertex("", 1, 0, 0); ! Vertex j = new Vertex("", 0, 1, 0); ! Vertex n = new Vertex("", 0, 0, 1); ! system = new CoordinateSystem(i, j, n, origin); ! snapInSystem(system, current); } else { if (legal) { *************** *** 364,372 **** findTarget(e); glv.getView().makeTarget(target); ! findVertex(e); ! /** Show the length of the active edge */ if (active != null) { glv.setLength(active.getLength()); } --- 422,449 ---- findTarget(e); glv.getView().makeTarget(target); ! if (target != null) { ! if (target instanceof Vertex) { ! setSnapVertex((Vertex) target); ! } ! } ! boolean clear = (exterior == null); ! boolean legal = findVertex(e); ! if (clear) { ! exterior = null; ! } ! if (legal) { ! glv.getView().setCurrentVertex(current); ! } else { ! glv.getView().setCurrentVertex(current); ! } /** Show the length of the active edge */ if (active != null) { glv.setLength(active.getLength()); + } else { + if (current != null && snapVertex != null) { + glv.setLength(current.minus(snapVertex).length()); + } else { + glv.setLength(0.0); + } } *************** *** 394,401 **** protected void released(MouseEvent e) { findTarget(e); ! glv.getView().makeTarget(null); ! int x = e.getX(); ! int y = e.getY(); ! View v = glv.getView(); } --- 471,475 ---- protected void released(MouseEvent e) { findTarget(e); ! glv.getView().makeTarget(target); } *************** *** 418,423 **** to = null; setAlignVertex(null); ! glv.getView().setSnapVertex(null); exterior = null; } else if (e.getKeyCode() == KeyEvent.VK_1) { number += "1"; --- 492,498 ---- to = null; setAlignVertex(null); ! setSnapVertex(null); exterior = null; + glv.repaint(); } else if (e.getKeyCode() == KeyEvent.VK_1) { number += "1"; *************** *** 452,470 **** } else if (e.getKeyCode() == KeyEvent.VK_ENTER) { try { ! if (active != null) { ! double d = Double.parseDouble(number); ! if (current != null) { ! Vertex temp = new Vertex("temp", to.getX(), to.getY(), to.getZ()); ! active.setLength(d / 1000); ! current.setX(to.getX()); ! current.setY(to.getY()); ! current.setZ(to.getZ()); ! onVertex(current); ! active.setTo(temp); ! to = temp; ! current = temp; ! glv.repaint(); } ! } } catch (NumberFormatException exp) { log.warn(exp); --- 527,555 ---- } else if (e.getKeyCode() == KeyEvent.VK_ENTER) { try { ! double d = Double.parseDouble(number); ! // TODO fix. ! if (current != null) { ! double x = current.getX(); ! double y = current.getY(); ! double z = current.getZ(); ! Vertex before = null; ! if (alignVertex != null) { ! before = alignVertex; ! } else if (snapVertex != null) { ! before = snapVertex; } ! if (before != null) { ! Vertex v = current.minus(before); ! if (v.length() > 0.000000001) { ! v.scale((d / 1000) / v.length()); ! current = before.add(v); ! current.setX(roundMM(current.getX())); ! current.setY(roundMM(current.getY())); ! current.setZ(roundMM(current.getZ())); ! onVertex(current); ! glv.repaint(); ! } ! } ! } } catch (NumberFormatException exp) { log.warn(exp); *************** *** 483,490 **** if (changed) { try { ! if (active != null) { ! double d = Double.parseDouble(number); ! glv.setLength(d / 1000); ! } } catch (NumberFormatException exp) { log.warn(exp); --- 568,573 ---- if (changed) { try { ! double d = Double.parseDouble(number); ! glv.setLength(d / 1000); } catch (NumberFormatException exp) { log.warn(exp); |