From f5d75a43a9624502830635b8817eeecc5d1cc374 Mon Sep 17 00:00:00 2001 From: mmiscool Date: Sat, 17 Dec 2016 14:23:24 -0500 Subject: [PATCH 1/4] Missing library added to package.json --- package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index ca55a8e9..246b9b3f 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,6 @@ "numeric": "1.2.6", "jwerty": "0.3.2", "mustache-loader": "0.3.3", - "jquery": "2.1.0", - "less": "2.7.1", - "libtess": "1.2.2" + "jquery": "2.1.0" } } From b88c72feaa176a36da4c0e3b17cc290a1a3752d2 Mon Sep 17 00:00:00 2001 From: mmiscool Date: Sat, 17 Dec 2016 14:25:00 -0500 Subject: [PATCH 2/4] missing libraries addded to packages.json --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 246b9b3f..ca55a8e9 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,8 @@ "numeric": "1.2.6", "jwerty": "0.3.2", "mustache-loader": "0.3.3", - "jquery": "2.1.0" + "jquery": "2.1.0", + "less": "2.7.1", + "libtess": "1.2.2" } } From e2a9225e593fca63a18b4accaf59056aed4132ca Mon Sep 17 00:00:00 2001 From: mmiscool Date: Sat, 17 Dec 2016 15:13:23 -0500 Subject: [PATCH 3/4] Changed edit button to say "Edit Sketch" --- web/app/3d/actions/core-actions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/app/3d/actions/core-actions.js b/web/app/3d/actions/core-actions.js index 5b549345..11b27848 100644 --- a/web/app/3d/actions/core-actions.js +++ b/web/app/3d/actions/core-actions.js @@ -2,7 +2,7 @@ import * as ActionHelpers from './action-helpers' export const EditFace = { cssIcons: ['file-picture-o'], - label: 'edit', + label: 'edit sketch', icon96: 'img/3d/face-edit96.png', info: 'open sketcher for a face/plane', listens: ['selection'], From d2a885d838d93be7ac5570c1c75926b4266bfb9f Mon Sep 17 00:00:00 2001 From: mmiscool Date: Sun, 18 Dec 2016 04:53:14 -0500 Subject: [PATCH 4/4] Modified tool bar for 3d mode --- web/app/3d/operations.js | 6 +++--- web/app/3d/ui/ctrl.js | 12 +++++++----- web/img/3d/revolve23.png | Bin 0 -> 1014 bytes web/img/3d/revolve96.png | Bin 0 -> 1172 bytes web/img/3d/shell96.png | Bin 7086 -> 6650 bytes 5 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 web/img/3d/revolve23.png create mode 100644 web/img/3d/revolve96.png diff --git a/web/app/3d/operations.js b/web/app/3d/operations.js index 4f750c21..461655f3 100644 --- a/web/app/3d/operations.js +++ b/web/app/3d/operations.js @@ -2,7 +2,7 @@ import * as math from '../math/math' export const CUT = { icon: 'img/3d/cut', - label: 'Cut', + label: 'Cut', info: (p) => '(' + r(math.norm2(p.target)) + ')' }; @@ -13,7 +13,7 @@ export const PAD = { }; export const REVOLVE = { - icon: 'img/3d/shell', + icon: 'img/3d/revolve', label: 'Revolve', info: (p) => '(' + p.angle + ')' }; @@ -68,4 +68,4 @@ export const IMPORT_STL = { function r(value) { return value.toPrecision(4).replace(/\.0$/, ''); -} \ No newline at end of file +} diff --git a/web/app/3d/ui/ctrl.js b/web/app/3d/ui/ctrl.js index 2eff50db..ce1cf52a 100644 --- a/web/app/3d/ui/ctrl.js +++ b/web/app/3d/ui/ctrl.js @@ -60,12 +60,14 @@ function UI(app) { UI.prototype.createCraftToolBar = function (vertPos) { var toolBar = new ToolBar(this.app); - toolBar.add(this.app.actionManager.actions['EditFace']); - toolBar.add(this.app.actionManager.actions['CUT']); - toolBar.add(this.app.actionManager.actions['PAD']); toolBar.add(this.app.actionManager.actions['PLANE']); - toolBar.add(this.app.actionManager.actions['BOX']); - toolBar.add(this.app.actionManager.actions['SPHERE']); + toolBar.add(this.app.actionManager.actions['EditFace']); + toolBar.add(this.app.actionManager.actions['PAD']); + toolBar.add(this.app.actionManager.actions['CUT']); + toolBar.add(this.app.actionManager.actions['REVOLVE']); + + + $('#viewer-container').append(toolBar.node); toolBar.node.css({left: '10px',top : vertPos + 'px'}); return toolBar; diff --git a/web/img/3d/revolve23.png b/web/img/3d/revolve23.png new file mode 100644 index 0000000000000000000000000000000000000000..fc815fc2ef2c8ccf1a7b4ba73bea55e0d1f87f1f GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=E1EAk64G%`gEdXjS4GQR0@FlggkUTAW%`tY4N|lvrGnU#6d) zS)!j+oSj;doRM0j2jpdxCh6y97ANZ$XQbxj=q2T(=A|5wR89h#A^|eRC9x!x!N|bS zOyAHz-_S(Cz`)Abz{q|i{Je?g8l4snMqQVKN^@fsS`!pCA~?jFTn{*H;CNCmz{0I~ zjggyMI#5T1HJkgW(`ptTv6Z<;<){BX_crHR?eq`#vUC0%FxY(mu5EgG{&S(}nTc~I zYCk-GOtsOQX*!FHaD?7;x9zu0qt;Ff_}6zcC+*Gm>WiBsd)?YjKUMntv&JdZK{4st z>#dd5)!m0mlFp`G?m3$D?C;;bJEPWS=zKRkniQB-!6(7j9(4L?kx|%0-O>-AKX0~_ z>p$zZII(JP+{(>QKUYeA|6Mz)|Hs3JjeG9DpDxvN(D>r9B#E1=`PpWlb$hkpWl7bg zHdP_cm50-fB)e8$)%qE=R&8F|Ve2yiAzD*Cj_9pe(fshMMBCcu@~p4?HZ5y<+}Ov$ z*xMk$)#{PZcU<|U1>c8HpPb(QtkLUN73!Q&Usa{VFV@X^bVG`f=PbTo8;V8t@7+7G zAvWOPO{e!IR!$q$!?Z*{?OJ*{)9{oWyYnT#gpDuQ!{z1W!*V26hIH8k>rFrT`q%H@ zyF2`D=51H{r6$4C^&mV4!eCP0gR>RtL7PzWzEe zx-UTe(K~-N;mD}On&tNP_Dk6gzcLit7{&RK`NOZTZZq4?%~`U-KE^cV->+X@8;?Jp zxa(Kpqn1F&gJ;k3ZvDv1aHs#($v->Y#Vp+SFdO`>W;oo%-O5z^P-6Ld#enArC$w}W zGxS1hucUhkvF86#v-%+&UgwPc6Ht!L~91c0fT!PC{x JWt~$(698<3uXq3e literal 0 HcmV?d00001 diff --git a/web/img/3d/revolve96.png b/web/img/3d/revolve96.png new file mode 100644 index 0000000000000000000000000000000000000000..619297a0b3ccd07b7187ea49dad3b9009666cb56 GIT binary patch literal 1172 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85k6S3KcCFU8fl)00pf|Tq8={GILTH^h1kNi;DHjQi~FcOY+O~ z(=$u-vx>7*OOi8Ei}ZlJjM60i+|1%+{o;(&oE*KRoYcIOBa+HVKvN_@rnn@Qq%s&8 z7@FxD8t5CEC>R)685>v`n3e6n8VXb+08$f@nVZT0lz^exN5n#aa_nGN6eWTrZ%l33 z02JZ{2{{8riV_(hRL1}JAa8MlB!ZJu^HLeWdFl?_^$d-l|Nn=8 z$-kPvA}T5kJuDL@G8hRtxG|mZV36cgP-aXaO7QRQ1q$o0zkcoi{>-*OCWkf0;ybq$ zM;_3)5&LJGbqyCE1TJ>p?>=Lqfb3eYuGJw`M%F9(UR@I|8xFX^}Rt|2|47CiGDbeKh6JfG{fu9zyANb>liK|$!Tz6 zN8QBBwju(Ymv&q2`6$_4W0lYJuHgH+l#aXxYlc`yYq7>FcXleiQ+n3UkbO~|DgFJw zP`@>ne|;r(vc22%yX;bQ@_O@FMr;4Z(B$KMbxhAVPfQCq=6XDhBR;jfZKZa`l`}8$ z&fWRDH|qMDuy1Q*_WlaX4L_i9!GopA^mx`?jeAk$X_E68Qo=(7-*Pjq?41y*&Rp_V z^aaUn zE&AN~=RD@!RNML`>r9%y%+K{)VdC$uet4w(d0pRkhp62;3Wv@#-Kx0$aq)}QOkA6V zE^Lz%4R8>jB6@l@e_l|4lgjTxM$zoR-H*0>K6_?k_TvjIHdEj90+a3`d1qHW(i1c1 ef=?emivL#LJ2i}7*9n-{7(8A5T-G@yGywp3Q{@%_ literal 0 HcmV?d00001 diff --git a/web/img/3d/shell96.png b/web/img/3d/shell96.png index 91988e84da543e954e94832d48757456d091986b..c1eea8454479e62cdf84aa3eda926ed465062740 100644 GIT binary patch delta 6419 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 delta 6861 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