This commit is contained in:
ninja
2025-12-15 23:22:33 +08:00
parent 019570564b
commit 8782765fbc
809 changed files with 118753 additions and 18289 deletions

View File

@@ -1,6 +1,6 @@
/***********************************************************************************************************************
*
* Copyright (c) 2010 - 2022 by Tech Soft 3D, Inc.
* Copyright (c) 2010 - 2025 by Tech Soft 3D, Inc.
* The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., and considered a trade secret
* as defined under civil and criminal statutes. Tech Soft 3D shall pursue its civil and criminal remedies in the event
* of unauthorized use or misappropriation of its trade secrets. Use of this information by anyone other than authorized
@@ -15,15 +15,16 @@
#include <memory>
//######################################################################################################################
int traverseCSys(const A3DRiCoordinateSystem* pCSys, _TiXmlElement* setting)
A3DStatus traverseCSys(const A3DRiCoordinateSystem* pCSys, _TiXmlElement* setting)
{
A3DRiCoordinateSystemData sData;
A3D_INITIALIZE_DATA(A3DRiCoordinateSystemData, sData);
_TiXmlElement* csys = new _TiXmlElement("A3DRiCoordinateSystemData");
setAttributePRC2XMLID(pCSys, csys);
traverseSource(pCSys, csys);
A3DInt32 iRet = A3DRiCoordinateSystemGet(pCSys, &sData);
A3DStatus iRet = A3DRiCoordinateSystemGet(pCSys, &sData);
if(iRet == A3D_SUCCESS)
{
iRet = traverseTransformation(sData.m_pTransformation, csys);
@@ -31,7 +32,7 @@ int traverseCSys(const A3DRiCoordinateSystem* pCSys, _TiXmlElement* setting)
}
else
{
csys->SetAttribute("error", iRet);
csys->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(csys);
@@ -39,9 +40,9 @@ int traverseCSys(const A3DRiCoordinateSystem* pCSys, _TiXmlElement* setting)
}
//######################################################################################################################
int traverseRepItemContent(const A3DRiRepresentationItem* pRi, _TiXmlElement* setting)
A3DStatus traverseRepItemContent(const A3DRiRepresentationItem* pRi, _TiXmlElement* setting)
{
A3DInt32 iRet = A3D_SUCCESS;
A3DStatus iRet = A3D_SUCCESS;
A3DRiRepresentationItemData sData;
A3D_INITIALIZE_DATA(A3DRiRepresentationItemData, sData);
@@ -66,12 +67,13 @@ int traverseRepItemContent(const A3DRiRepresentationItem* pRi, _TiXmlElement* se
}
//######################################################################################################################
static int traverseBrepModel(const A3DRiBrepModel* pBrepModel, _TiXmlElement* setting)
static A3DStatus traverseBrepModel(const A3DRiBrepModel* pBrepModel, _TiXmlElement* setting)
{
A3DRiBrepModelData sData;
A3D_INITIALIZE_DATA(A3DRiBrepModelData, sData);
_TiXmlElement* brep = new _TiXmlElement("A3DRiBrepModelData");
setAttributePRC2XMLID(pBrepModel, brep);
traverseSource(pBrepModel, brep);
traverseRepItemContent(pBrepModel, brep);
traverseMaterialProperties(pBrepModel, brep);
@@ -85,7 +87,7 @@ static int traverseBrepModel(const A3DRiBrepModel* pBrepModel, _TiXmlElement* se
psScale.m_dZ = 1;
A3DPhysicalPropertiesData physicalPropertiesData;
A3D_INITIALIZE_A3DPhysicalPropertiesData(physicalPropertiesData);
A3DInt32 iRet = A3DComputePhysicalProperties(pBrepModel, &psScale, &physicalPropertiesData);
A3DStatus iRet = A3DComputePhysicalProperties(pBrepModel, &psScale, &physicalPropertiesData);
if (iRet == A3D_SUCCESS)
{
@@ -99,10 +101,10 @@ static int traverseBrepModel(const A3DRiBrepModel* pBrepModel, _TiXmlElement* se
}
else
{
physicalprops->SetAttribute("error", iRet);
physicalprops->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(physicalprops);
brep->LinkEndChild(physicalprops);
iRet = A3DRiBrepModelGet(pBrepModel, &sData);
if(iRet == A3D_SUCCESS)
{
@@ -115,12 +117,13 @@ static int traverseBrepModel(const A3DRiBrepModel* pBrepModel, _TiXmlElement* se
}
//######################################################################################################################
static int traversePolyBrepModel(const A3DRiPolyBrepModel* pPolyBrepModel, _TiXmlElement* setting)
static A3DStatus traversePolyBrepModel(const A3DRiPolyBrepModel* pPolyBrepModel, _TiXmlElement* setting)
{
A3DRiPolyBrepModelData sData;
A3D_INITIALIZE_DATA(A3DRiPolyBrepModelData, sData);
_TiXmlElement* polybrep = new _TiXmlElement("A3DRiPolyBrepModelData");
setAttributePRC2XMLID(pPolyBrepModel, polybrep);
traverseSource(pPolyBrepModel, polybrep);
traverseRepItemContent(pPolyBrepModel, polybrep);
traverseMaterialProperties(pPolyBrepModel, polybrep);
@@ -132,7 +135,7 @@ static int traversePolyBrepModel(const A3DRiPolyBrepModel* pPolyBrepModel, _TiXm
psScale.m_dX = 1;
psScale.m_dY = 1;
psScale.m_dZ = 1;
A3DInt32 iRet = A3DComputePolyBrepPhysicalProperties(pPolyBrepModel, &psScale, &physicalPropertiesData);
A3DStatus iRet = A3DComputePolyBrepPhysicalProperties(pPolyBrepModel, &psScale, &physicalPropertiesData);
_TiXmlElement* physicalprops = new _TiXmlElement("A3DPhysicalPropertiesData");
physicalprops->SetAttribute("m_bVolumecomputed", physicalPropertiesData.m_bVolumeComputed);
@@ -143,7 +146,7 @@ static int traversePolyBrepModel(const A3DRiPolyBrepModel* pPolyBrepModel, _TiXm
physicalprops->SetDoubleAttribute("m_sGravityCenter.m_dY", (double)physicalPropertiesData.m_sGravityCenter.m_dY);
physicalprops->SetDoubleAttribute("m_sGravityCenter.m_dZ",(double) physicalPropertiesData.m_sGravityCenter.m_dZ);
setting->LinkEndChild(physicalprops);
polybrep->LinkEndChild(physicalprops);
iRet = A3DRiPolyBrepModelGet(pPolyBrepModel, &sData);
if(iRet == A3D_SUCCESS)
@@ -157,17 +160,33 @@ static int traversePolyBrepModel(const A3DRiPolyBrepModel* pPolyBrepModel, _TiXm
}
//######################################################################################################################
static int traverseRICurve(const A3DRiCurve* pRICrv, _TiXmlElement* setting)
static A3DStatus traversePolyWire(const A3DRiPolyWire* pPolyWire, _TiXmlElement* setting)
{
_TiXmlElement* pPolyWireElement = new _TiXmlElement("A3DRiPolyWireData");
setAttributePRC2XMLID(pPolyWire, pPolyWireElement);
traverseSource(pPolyWire, pPolyWireElement);
traverseRepItemContent(pPolyWire, pPolyWireElement);
traverseMaterialProperties(pPolyWire, pPolyWireElement);
setting->LinkEndChild(pPolyWireElement);
return A3D_SUCCESS;
}
//######################################################################################################################
static A3DStatus traverseRICurve(const A3DRiCurve* pRICrv, _TiXmlElement* setting)
{
A3DRiCurveData sData;
A3D_INITIALIZE_DATA(A3DRiCurveData, sData);
_TiXmlElement* ricrv = new _TiXmlElement("A3DRiCurveData");
setAttributePRC2XMLID(pRICrv, ricrv);
traverseSource(pRICrv, ricrv);
traverseRepItemContent(pRICrv, ricrv);
traverseMaterialProperties(pRICrv, ricrv);
A3DInt32 iRet = A3DRiCurveGet(pRICrv, &sData);
A3DStatus iRet = A3DRiCurveGet(pRICrv, &sData);
if(iRet == A3D_SUCCESS)
{
traverseSingleWireBody(sData.m_pBody, ricrv);
@@ -179,17 +198,18 @@ static int traverseRICurve(const A3DRiCurve* pRICrv, _TiXmlElement* setting)
}
//######################################################################################################################
static int traverseRIPlane(const A3DRiPlane* pRIPlane, _TiXmlElement* setting)
static A3DStatus traverseRIPlane(const A3DRiPlane* pRIPlane, _TiXmlElement* setting)
{
A3DRiPlaneData sData;
A3D_INITIALIZE_DATA(A3DRiPlaneData, sData);
_TiXmlElement* riplane = new _TiXmlElement("A3DRiPlaneData");
setAttributePRC2XMLID(pRIPlane, riplane);
traverseSource(pRIPlane, riplane);
traverseRepItemContent(pRIPlane, riplane);
traverseMaterialProperties(pRIPlane, riplane);
A3DInt32 iRet = A3DRiPlaneGet(pRIPlane, &sData);
A3DStatus iRet = A3DRiPlaneGet(pRIPlane, &sData);
if(iRet == A3D_SUCCESS)
{
traverseBrepData(sData.m_pBrepData, riplane);
@@ -201,16 +221,17 @@ static int traverseRIPlane(const A3DRiPlane* pRIPlane, _TiXmlElement* setting)
}
//######################################################################################################################
static int traverseDirection(const A3DRiDirection* pDirection, _TiXmlElement* setting)
static A3DStatus traverseDirection(const A3DRiDirection* pDirection, _TiXmlElement* setting)
{
A3DRiDirectionData sData;
A3D_INITIALIZE_DATA(A3DRiDirectionData, sData);
_TiXmlElement* dir = new _TiXmlElement("A3DRiDirectionData");
setAttributePRC2XMLID(pDirection, dir);
traverseSource(pDirection, dir);
traverseRepItemContent(pDirection, dir);
A3DInt32 iRet = A3DRiDirectionGet(pDirection, &sData);
A3DStatus iRet = A3DRiDirectionGet(pDirection, &sData);
if(iRet == A3D_SUCCESS)
{
traversePoint("m_sOrigin" , sData.m_sOrigin , dir);
@@ -219,7 +240,7 @@ static int traverseDirection(const A3DRiDirection* pDirection, _TiXmlElement* se
}
else
{
dir->SetAttribute("error", iRet);
dir->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(dir);
@@ -227,17 +248,18 @@ static int traverseDirection(const A3DRiDirection* pDirection, _TiXmlElement* se
}
//######################################################################################################################
static int traversePointSet(const A3DRiPointSet* pPointSet, _TiXmlElement* setting)
static A3DStatus traversePointSet(const A3DRiPointSet* pPointSet, _TiXmlElement* setting)
{
A3DRiPointSetData sData;
A3D_INITIALIZE_DATA(A3DRiPointSetData, sData);
_TiXmlElement* pointset = new _TiXmlElement("A3DRiPointSetData");
setAttributePRC2XMLID(pPointSet, pointset);
traverseSource(pPointSet, pointset);
traverseRepItemContent(pPointSet, pointset);
traverseMaterialProperties(pPointSet, pointset);
A3DInt32 iRet = A3DRiPointSetGet(pPointSet, &sData);
A3DStatus iRet = A3DRiPointSetGet(pPointSet, &sData);
if(iRet == A3D_SUCCESS)
{
for(A3DUns32 ui = 0; ui < sData.m_uiSize; ++ui)
@@ -246,7 +268,7 @@ static int traversePointSet(const A3DRiPointSet* pPointSet, _TiXmlElement* setti
}
else
{
pointset->SetAttribute("error", iRet);
pointset->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(pointset);
@@ -254,13 +276,14 @@ static int traversePointSet(const A3DRiPointSet* pPointSet, _TiXmlElement* setti
}
//######################################################################################################################
static int traverseSet(const A3DRiSet* pSet, _TiXmlElement* setting)
static A3DStatus traverseSet(const A3DRiSet* pSet, _TiXmlElement* setting)
{
A3DInt32 iRet = A3D_SUCCESS;
A3DStatus iRet = A3D_SUCCESS;
A3DRiSetData sData;
A3D_INITIALIZE_DATA(A3DRiSetData, sData);
_TiXmlElement* set = new _TiXmlElement("A3DRiSetData");
setAttributePRC2XMLID(pSet, set);
traverseSource(pSet, set);
traverseRepItemContent(pSet, set);
traverseMaterialProperties(pSet, set);
@@ -275,7 +298,7 @@ static int traverseSet(const A3DRiSet* pSet, _TiXmlElement* setting)
}
else
{
set->SetAttribute("error", iRet);
set->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(set);
@@ -283,9 +306,9 @@ static int traverseSet(const A3DRiSet* pSet, _TiXmlElement* setting)
}
//######################################################################################################################
int traverseDrawingBlock(const A3DDrawingBlock *pDrwBlock, _TiXmlElement* setting)
A3DStatus traverseDrawingBlock(const A3DDrawingBlock *pDrwBlock, _TiXmlElement* setting)
{
A3DInt32 iRet = A3D_SUCCESS;
A3DStatus iRet = A3D_SUCCESS;
A3DDrawingBlockBasicData sDrwBlockData;
A3D_INITIALIZE_DATA(A3DDrawingBlockBasicData, sDrwBlockData);
@@ -293,6 +316,7 @@ int traverseDrawingBlock(const A3DDrawingBlock *pDrwBlock, _TiXmlElement* settin
CHECK_RET( A3DDrawingBlockBasicGet( (A3DDrawingBlockBasic const*) pDrwBlock, &sDrwBlockData));
_TiXmlElement* drwBlock = new _TiXmlElement("A3DDrawingBlockData");
setAttributePRC2XMLID(pDrwBlock, drwBlock);
traverseSource(pDrwBlock, drwBlock);
drwBlock->SetAttribute("Nb_Entities", sDrwBlockData.m_uiDrwEntitiesSize);
@@ -310,7 +334,7 @@ int traverseDrawingBlock(const A3DDrawingBlock *pDrwBlock, _TiXmlElement* settin
}
//######################################################################################################################
int traverseDrawingView(const A3DDrawingView *pDrwView, _TiXmlElement* setting)
A3DStatus traverseDrawingView(const A3DDrawingView *pDrwView, _TiXmlElement* setting)
{
A3DDrawingViewData sDrwViewData;
@@ -320,7 +344,7 @@ int traverseDrawingView(const A3DDrawingView *pDrwView, _TiXmlElement* setting)
_TiXmlElement* drwView = new _TiXmlElement("A3DDrawingViewData");
// Get the type of the drawing view
A3DInt32 iRet = A3D_SUCCESS;
A3DStatus iRet = A3D_SUCCESS;
iRet = A3DDrawingViewGet(pDrwView, &sDrwViewData);
@@ -384,9 +408,9 @@ int traverseDrawingView(const A3DDrawingView *pDrwView, _TiXmlElement* setting)
}
//######################################################################################################################
int traverseDrawingSheet(const A3DDrawingSheet * pDrwSheet, _TiXmlElement* setting)
A3DStatus traverseDrawingSheet(const A3DDrawingSheet * pDrwSheet, _TiXmlElement* setting)
{
A3DInt32 iRet = A3D_SUCCESS;
A3DStatus iRet = A3D_SUCCESS;
A3DDrawingSheetData sDrwSheetData;
A3D_INITIALIZE_DATA(A3DDrawingSheetData, sDrwSheetData);
@@ -408,9 +432,9 @@ int traverseDrawingSheet(const A3DDrawingSheet * pDrwSheet, _TiXmlElement* setti
}
//######################################################################################################################
int traverseDrawing(const A3DDrawingModel * pDrawing, _TiXmlElement* setting)
A3DStatus traverseDrawing(const A3DDrawingModel * pDrawing, _TiXmlElement* setting)
{
A3DInt32 iRet = A3D_SUCCESS;
A3DStatus iRet = A3D_SUCCESS;
A3DDrawingModelData sDrwModelData;
A3D_INITIALIZE_DATA(A3DDrawingModelData, sDrwModelData);
@@ -437,9 +461,9 @@ int traverseDrawing(const A3DDrawingModel * pDrawing, _TiXmlElement* setting)
//######################################################################################################################
int traverseRepItem(const A3DRiRepresentationItem* pRepItem, _TiXmlElement* setting)
A3DStatus traverseRepItem(const A3DRiRepresentationItem* pRepItem, _TiXmlElement* setting)
{
A3DInt32 iRet = A3D_SUCCESS;
A3DStatus iRet = A3D_SUCCESS;
A3DEEntityType eType;
CHECK_RET(A3DEntityGetType(pRepItem, &eType));
@@ -470,6 +494,9 @@ int traverseRepItem(const A3DRiRepresentationItem* pRepItem, _TiXmlElement* sett
case kA3DTypeRiPolyBrepModel:
iRet = traversePolyBrepModel(pRepItem, setting);
break;
case kA3DTypeRiPolyWire:
iRet = traversePolyWire(pRepItem, setting);
break;
default:
iRet = A3D_NOT_IMPLEMENTED;
break;