From b5411dfe1ebe7f88ddb05f872e56e655be414769 Mon Sep 17 00:00:00 2001 From: Sverre Briseid Date: Fri, 25 Oct 2024 13:12:57 +0200 Subject: [PATCH] Added app for converting from g22 to g2. Handling surface models only so far, and only timmed sfs. --- trivariatemodel/app/g22Tog2.C | 85 +++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 trivariatemodel/app/g22Tog2.C diff --git a/trivariatemodel/app/g22Tog2.C b/trivariatemodel/app/g22Tog2.C new file mode 100644 index 000000000..65be65e0a --- /dev/null +++ b/trivariatemodel/app/g22Tog2.C @@ -0,0 +1,85 @@ +/* + * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF ICT, + * Applied Mathematics, Norway. + * + * Contact information: E-mail: tor.dokken@sintef.no + * SINTEF ICT, Department of Applied Mathematics, + * P.O. Box 124 Blindern, + * 0314 Oslo, Norway. + * + * This file is part of GoTools. + * + * GoTools 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with GoTools. If not, see + * . + * + * In accordance with Section 7(b) of the GNU Affero General Public + * License, a covered work must retain the producer line in every data + * file that is created or manipulated using GoTools. + * + * Other Usage + * You can be released from the requirements of the license by purchasing + * a commercial license. Buying such a license is mandatory as soon as you + * develop commercial activities involving the GoTools library without + * disclosing the source code of your own applications. + * + * This file may be used in accordance with the terms contained in a + * written agreement between you and SINTEF ICT. + */ + +#include +#include +#include + +#include "GoTools/geometry/Utils.h" +#include "GoTools/geometry/ObjectHeader.h" +#include "GoTools/trivariate/SplineVolume.h" +#include "GoTools/trivariatemodel/ftVolume.h" +#include "GoTools/trivariatemodel/VolumeModel.h" +#include "GoTools/trivariatemodel/VolumeModelFileHandler.h" + +using namespace Go; +using std::vector; + +// Convert a set of volumes or surface models to a g2 file. Currently handling trimmed sfs only. Not including any +// curves that are not used by the trimmed sfs. Volumes not yet supported. + +int main( int argc, char* argv[] ) +{ + if (argc != 3) { + std::cout << "Input parameters : Input file(.g22), output file(.g2)" << std::endl; + exit(-1); + } + + std::string file1_name(argv[1]); + std::ifstream file1(file1_name); + ALWAYS_ERROR_IF(file1.bad(), "Input file not found or file corrupt"); + + std::ofstream out_file(argv[2]); + + VolumeModelFileHandler filehandler; + std::vector > volumes = filehandler.readVolumes(file1_name.c_str()); + if (volumes.size() > 0) { + std::cout << "Not yet supporting volumes: volumes.size(): " << volumes.size() << std::endl; + } + + std::vector > sf_mods = filehandler.readSurfModels(file1_name.c_str()); + std::cout << "sf_mods.size(): " << sf_mods.size() << std::endl; + for (auto surf_model : sf_mods) + { + std::vector > faces = surf_model->allFaces(); + std::cout << "Number of sfs: " << faces.size() << std::endl; + for (auto face : faces) + { + shared_ptr sf = face->surface(); + sf->writeStandardHeader(out_file); + sf->write(out_file); + } + } + +}