Hide menu
Loading...
Searching...
No Matches
Unity/Assets/Scripts/ModelImporter.cs

Refer to the Unity Base Viewer Example.

// ****************************************************************************
// $Id$
//
// Copyright (C) 2008-2014, Roman Lygin. All rights reserved.
// Copyright (C) 2014-2023, CADEX. All rights reserved.
//
// This file is part of the CAD Exchanger software.
//
// You may use this file under the terms of the BSD license as follows:
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// ****************************************************************************
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using cadex;
public static class ModelImporter
{
public static ModelData_Model ImportModel(string thePath, bool theImportPMI = false, Base_ProgressStatus.Observer theObserver = null)
{
if (!File.Exists(thePath))
{
Debug.LogWarning("File not found: \"" + thePath + "\".");
return null;
}
aModelReader.SetReaderParameters(CreateX3DPDFReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateA3DSReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateDS3DXMLReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateX3MFReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateACISReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateINVReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateBRepReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateCATReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateColladaReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateDWGReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateDXFReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateFBXReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateGLTFReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateIFCReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateIGESReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateJTReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateNXReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateOBJReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreatePLYReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreatePRCReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateParaReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateRhinoReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateSTEPReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateSTLReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateSLDEReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateSLDReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateU3DReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateVRMLReaderParameters(theImportPMI));
aModelReader.SetReaderParameters(CreateX3DReaderParameters(theImportPMI));
using (var aStatus = new Base_ProgressStatus())
{
if (theObserver != null)
{
theObserver.SetNotifyingThread();
aStatus.Register(theObserver);
}
aModelReader.SetProgressStatus(aStatus);
if (!aModelReader.Read(new Base_UTF16String(thePath), aModel))
{
Debug.LogError("Failed to read the file " + Path.GetFileName(thePath));
aStatus.Cancel();
return null;
}
if (theObserver != null)
{
aStatus.Unregister(theObserver);
}
}
return aModel;
}
static X3DPDF_ReaderParameters CreateX3DPDFReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static A3DS_ReaderParameters CreateA3DSReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static DS3DXML_ReaderParameters CreateDS3DXMLReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static ACIS_ReaderParameters CreateACISReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static INV_ReaderParameters CreateINVReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static BRep_ReaderParameters CreateBRepReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static CAT_ReaderParameters CreateCATReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static Collada_ReaderParameters CreateColladaReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static Creo_ReaderParameters CreateCreoReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static DWG_ReaderParameters CreateDWGReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static DXF_ReaderParameters CreateDXFReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static FBX_ReaderParameters CreateFBXReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static GLTF_ReaderParameters CreateGLTFReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static IFC_ReaderParameters CreateIFCReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static IGES_ReaderParameters CreateIGESReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static JT_ReaderParameters CreateJTReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static NX_ReaderParameters CreateNXReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static OBJ_ReaderParameters CreateOBJReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static PLY_ReaderParameters CreatePLYReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static PRC_ReaderParameters CreatePRCReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static Para_ReaderParameters CreateParaReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static Rhino_ReaderParameters CreateRhinoReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static SLDE_ReaderParameters CreateSLDEReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static SLD_ReaderParameters CreateSLDReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static STEP_ReaderParameters CreateSTEPReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static STL_ReaderParameters CreateSTLReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static U3D_ReaderParameters CreateU3DReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static VRML_ReaderParameters CreateVRMLReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static X3D_ReaderParameters CreateX3DReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
static X3MF_ReaderParameters CreateX3MFReaderParameters(bool theImportPMI)
{
aParam.SetReadPMI(theImportPMI);
aParam.SetDelayedConversion(true);
return aParam;
}
}
Defines parameters of the A3DS_Reader.
Definition: A3DS_ReaderParameters.hxx:26
Defines parameters of the ACIS reader.
Definition: ACIS_ReaderParameters.hxx:27
Defines parameters of the B-Rep reader.
Definition: BRep_ReaderParameters.hxx:27
Base abstract class for observers registered in Base_ProgressStatus.
Definition: Base_ProgressStatus.hxx:43
Provides progress status and notification mechanism.
Definition: Base_ProgressStatus.hxx:33
Defines a Unicode (UTF-16) string wrapping a standard string.
Definition: Base_UTF16String.hxx:34
Defines parameters used by the CATIA reader.
Definition: CAT_ReaderParameters.hxx:28
Defines parameters of the Collada_Reader.
Definition: Collada_ReaderParameters.hxx:26
Defines parameters used by the Creo reader.
Definition: Creo_ReaderParameters.hxx:27
Defines parameters of the DS3DXML_Reader.
Definition: DS3DXML_ReaderParameters.hxx:26
Defines parameters of the DWG reader.
Definition: DWG_ReaderParameters.hxx:27
Defines parameters used by the DXF reader.
Definition: DXF_ReaderParameters.hxx:27
Defines parameters of the FBX_Reader.
Definition: FBX_ReaderParameters.hxx:27
Defines parameters of the GLTF_Reader.
Definition: GLTF_ReaderParameters.hxx:26
Defines parameters of the IFC_Reader.
Definition: IFC_ReaderParameters.hxx:27
Defines parameters of the IGES reader.
Definition: IGES_ReaderParameters.hxx:27
Defines parameters used by the Inventor reader.
Definition: INV_ReaderParameters.hxx:28
Defines parameters of the JT reader.
Definition: JT_ReaderParameters.hxx:27
Provides CAD Exchanger data model.
Definition: ModelData_Model.hxx:43
Reads any format that CAD Exchanger can import.
Definition: ModelData_ModelReader.hxx:33
void SetProgressStatus(const Base_ProgressStatus &theProgressStatus)
Sets the progress status for the reading process.
Definition: ModelData_ModelReader.cxx:222
void SetReaderParameters(const Base_ReaderParameters &theParameters)
Sets reader parameters.
Definition: ModelData_ModelReader.cxx:216
bool Read(const Base_UTF16String &theFilePath, ModelData_Model &theModel)
Reads the file at the specified path into the specified model.
Definition: ModelData_ModelReader.cxx:182
Defines parameters of the NX reader.
Definition: NX_ReaderParameters.hxx:27
Defines parameters of the OBJ reader.
Definition: OBJ_ReaderParameters.hxx:27
Defines parameters used by the PLY_Reader.
Definition: PLY_ReaderParameters.hxx:27
Defines parameters of the PRC_Reader.
Definition: PRC_ReaderParameters.hxx:26
Defines parameters of the Parasolid reader.
Definition: Para_ReaderParameters.hxx:27
Defines parameters of the Rhino reader.
Definition: Rhino_ReaderParameters.hxx:29
Defines parameters of the SLD_Reader.
Definition: SLD_ReaderParameters.hxx:28
Defines parameters of the SLDE_Reader.
Definition: SLDE_ReaderParameters.hxx:27
Defines parameters of the STEP_Reader.
Definition: STEP_ReaderParameters.hxx:27
Defines parameters of the STL reader.
Definition: STL_ReaderParameters.hxx:27
Defines parameters of the U3D reader.
Definition: U3D_ReaderParameters.hxx:27
Defines parameters of the VRML reader.
Definition: VRML_ReaderParameters.hxx:27
Defines parameters of the X3D reader.
Definition: X3D_ReaderParameters.hxx:27
Defines parameters of the X3DPDF reader.
Definition: X3DPDF_ReaderParameters.hxx:27
Defines parameters of the X3MF_Reader.
Definition: X3MF_ReaderParameters.hxx:27
Defines classes, types, and global functions related to CAD Exchanger.
Definition: A3DSTestLib.hxx:22