X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fnurbs-1.3.6%2Fnrbexport.m;fp=octave_packages%2Fnurbs-1.3.6%2Fnrbexport.m;h=b53057cf3c68b5bdd7d7a4952f14d64a6c151a8b;hp=0000000000000000000000000000000000000000;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/nurbs-1.3.6/nrbexport.m b/octave_packages/nurbs-1.3.6/nrbexport.m new file mode 100644 index 0000000..b53057c --- /dev/null +++ b/octave_packages/nurbs-1.3.6/nrbexport.m @@ -0,0 +1,80 @@ +function nrbexport (nurbs, filename) + +% +% NRBEXPORT: export NURBS geometries to a format compatible with the one used in GeoPDEs (version 0.6). +% +% Calling Sequence: +% +% nrbexport (nurbs, filename); +% +% INPUT: +% +% nurbs : NURBS curve, surface or volume, see nrbmak. +% filename : name of the output file. +% +% +% Description: +% +% The data of the nurbs structure is written in the file, in a format +% that can be read by GeoPDEs. +% +% Copyright (C) 2011 Rafael Vazquez +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 2 of the License, or +% (at your option) any later version. + +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . + +fid = fopen (filename, 'w'); +if (fid < 0) + error ('nrbexport: cannot open file %s', filename); +end + +ndim = numel (nurbs(1).order); +npatch = numel (nurbs); +fprintf (fid, '%s\n', '# nurbs mesh v.0.7'); +fprintf (fid, '%s\n', '#'); +fprintf (fid, '%s\n', ['# ' date]); +fprintf (fid, '%s\n', '#'); + +fprintf (fid, '%2i', ndim, 1); +fprintf (fid, '\n'); +for iptc = 1:npatch + fprintf (fid, '%s %i', 'PATCH', iptc); + fprintf (fid, '\n'); + fprintf (fid, '%2i', nurbs(iptc).order-1); + fprintf (fid, '\n'); + fprintf (fid, '%2i', nurbs(iptc).number); + fprintf (fid, '\n'); + for ii = 1:ndim + fprintf (fid, '%1.7f ', nurbs(iptc).knots{ii}); + fprintf (fid, '\n'); + end + + if (ndim == 2) + for ii = 1:ndim + fprintf (fid, '%1.15f ', nurbs(iptc).coefs(ii,:,:)); + fprintf (fid, '\n'); + end + fprintf (fid, '%1.15f ', nurbs(iptc).coefs(4,:,:)); + fprintf (fid, '\n'); + elseif (ndim == 3) + for ii = 1:ndim + fprintf (fid, '%1.15f ', nurbs(iptc).coefs(ii,:,:,:)); + fprintf (fid, '\n'); + end + fprintf (fid, '%1.15f ', nurbs(iptc).coefs(4,:,:,:)); + fprintf (fid, '\n'); + end +end + +fclose (fid); +end