From cb348c657f2707e5e6b528666989e96dc4efe65e Mon Sep 17 00:00:00 2001 From: Viktor Kovacs Date: Sun, 2 May 2021 12:23:02 +0200 Subject: [PATCH] Add sphere and empty test file. --- .../rhino3dm_error/input/one_sphere.3dm | Bin 0 -> 56712 bytes .../sandbox/rhino3dm_error/rhino3dm_error.js | 23 +++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 tools/sandbox/rhino3dm_error/input/one_sphere.3dm diff --git a/tools/sandbox/rhino3dm_error/input/one_sphere.3dm b/tools/sandbox/rhino3dm_error/input/one_sphere.3dm new file mode 100644 index 0000000000000000000000000000000000000000..34df303787cd9bfd6a6da6cbfa52a3685851c155 GIT binary patch literal 56712 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

&K6>{^z{^wrkth z|2CdamE>#x@2j!RU32fm(h#E04Uiv8@LDjoKJ z-OFSD_I=8amwyxv^YiRKeX_gmlxy4kYtoW+x9*?(aQUZWn|#D)-qYqf_czoW{)EhU z(avoD)N3!h^lEdXKU?-sez^Q|GmriES+$qHP2aYE%ipDM^>gbpe|z7KzxD6ZH}~^b z->_m>nV)JY=YOC3@04yH`?bi%Z20?M=l-Ue)1P!tZ%1ZS?>%S#*vv$CA`8b9P!nbe zG`K-w3Jq6m5dai}ci3>q!-Q$0F4JblVvr5s6tEDfRSpsawILP&+j7&j&k2GR)Ib$f z+$x=BpAnoWa`ZA6AFp52f(Ms;xI`D{nz}ya*xIQZtpBt``EPaocQC<8IwPMIok5#vUqA|dZ(3U=lyx+*Q{I4Y`*zv z@|}w>oEO?yTWqk`+IsHkT>d%t|5Sc?KH+ZrXPci)^Uwcqe|4m;@_D!w*Y@*w#u?Q{LlektdDYx$_s+|Kvk z@}KXwS{v2%S$*Ev_ql50x3ZLq+^dfa>ZW}RePUC)v8_@({!d@6?YzKOXT1M>+jGWz z%|4y}XUTiM{yv%<7k^Cq$?eGN$8_IM-oyX+e%s~QW?xD})}HJ6ZX6$6G;iMv(b`{& zydPP5%=PSy|0Nl8Kg@hWwW0lU)laV%-S(a9w{p4p>C^pUc}rJYxo^4@KC6HBBLDc9 z$rV*AFKd2${a!*}M?Xyem~OwB`jqs_|Hrr!=UV(f_ve)DLx#^ry3cj{cLVQuGwVz@ zSR?$L^KW;{KUb&!N(<{JUfA#PB3|W-zR)jmuyE^@xzF!E(|TMwZ~D)iJD*O}CVlO8 zvv@u?{%Os$D)#S9_b31ORU;OEXKICAYw^GRyXJ9!*U!n{*8ZE@cFppS1^0i-?38%t z-oM`V&hiz7|IfAl7BB0snzwI<&aW>=XB_#gaHViw)ZcoJe@xtB+p|k-jCxG9LN8_{ z@%}$_Ec^f{kpd^{4}d8k4Hb8Q^5OKR4puhg7JX3z1Cta)5rbl$k^=eY2f#N0stKFBt~4?*C_vSK*A>CpK$n5KSRl}G7eWI7)~hbN literal 0 HcmV?d00001 diff --git a/tools/sandbox/rhino3dm_error/rhino3dm_error.js b/tools/sandbox/rhino3dm_error/rhino3dm_error.js index 2caacfe..32cc01a 100644 --- a/tools/sandbox/rhino3dm_error/rhino3dm_error.js +++ b/tools/sandbox/rhino3dm_error/rhino3dm_error.js @@ -2,11 +2,17 @@ let rhino3dm = require ('../../../libs/rhino3dm.min.js') let fs = require ('fs'); let path = require ('path'); -function GetThreeMeshesFrom3dm (rhino, rhinoFileName) +function Open3dmFile (rhino, rhinoFileName) { let inputBuffer = fs.readFileSync (rhinoFileName, null).buffer; let inputArray = new Uint8Array (inputBuffer); let inputDoc = rhino.File3dm.fromByteArray (inputArray); + return inputDoc; +} + +function GetThreeMeshesFrom3dm (rhino, rhinoFileName) +{ + let inputDoc = Open3dmFile (rhino, rhinoFileName); let objects = inputDoc.objects (); let threeMeshes = []; for (let i = 0; i < objects.count; i++) { @@ -33,9 +39,18 @@ function WriteThreeMeshesTo3dm (rhino, threeMeshes, rhinoFileName) function ReadWriteRhinoFile (rhinoIn, rhinoOut, inputRhinoFile, outputRhinoFile) { - let threeMeshes = GetThreeMeshesFrom3dm (rhinoIn, inputRhinoFile); - console.log ('Meshes in ' + inputRhinoFile + ': ' + threeMeshes.length); + let threeMeshes = []; + if (inputRhinoFile !== null) { + threeMeshes = GetThreeMeshesFrom3dm (rhinoIn, inputRhinoFile); + } + console.log ('Meshes in ' + outputRhinoFile + ': ' + threeMeshes.length); WriteThreeMeshesTo3dm (rhinoOut, threeMeshes, outputRhinoFile); + let reopened = Open3dmFile (rhinoIn, outputRhinoFile); + if (reopened !== null) { + console.log ('SUCCESS'); + } else { + console.log ('ERROR'); + } } if (!fs.existsSync ('output')){ @@ -47,5 +62,7 @@ rhino3dm ().then (async function (rhinoIn) { ReadWriteRhinoFile (rhinoIn, rhinoOut, 'input/one_cube.3dm', 'output/one_cube.3dm'); ReadWriteRhinoFile (rhinoIn, rhinoOut, 'input/two_cubes.3dm', 'output/two_cubes.3dm'); ReadWriteRhinoFile (rhinoIn, rhinoOut, 'input/three_cubes.3dm', 'output/three_cubes.3dm'); + ReadWriteRhinoFile (rhinoIn, rhinoOut, 'input/one_sphere.3dm', 'output/one_sphere.3dm'); + ReadWriteRhinoFile (rhinoIn, rhinoOut, null, 'output/empty.3dm'); }); });