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
@@ -14,7 +14,7 @@
//######################################################################################################################
static int sttraverseCrvLine(const A3DCrvLine* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvLine(const A3DCrvLine* pCrv, _TiXmlElement* setting)
{
A3DCrvLineData sData;
A3D_INITIALIZE_DATA(A3DCrvLineData, sData);
@@ -22,7 +22,7 @@ static int sttraverseCrvLine(const A3DCrvLine* pCrv, _TiXmlElement* setting)
_TiXmlElement* crv = new _TiXmlElement("A3DCrvLineData");
traverseSource(pCrv, crv);
A3DInt32 iRet = A3DCrvLineGet(pCrv, &sData);
A3DStatus iRet = A3DCrvLineGet(pCrv, &sData);
if(iRet == A3D_SUCCESS)
{
setting->SetAttribute("m_bIs2D", (int)sData.m_bIs2D);
@@ -32,7 +32,7 @@ static int sttraverseCrvLine(const A3DCrvLine* pCrv, _TiXmlElement* setting)
}
else
{
crv->SetAttribute("error", iRet);
crv->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(crv);
@@ -40,7 +40,7 @@ static int sttraverseCrvLine(const A3DCrvLine* pCrv, _TiXmlElement* setting)
}
//######################################################################################################################
static int sttraverseCrvCircle(const A3DCrvCircle* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvCircle(const A3DCrvCircle* pCrv, _TiXmlElement* setting)
{
A3DCrvCircleData sData;
A3D_INITIALIZE_DATA(A3DCrvCircleData, sData);
@@ -48,18 +48,18 @@ static int sttraverseCrvCircle(const A3DCrvCircle* pCrv, _TiXmlElement* setting)
_TiXmlElement* crv = new _TiXmlElement("A3DCrvCircleData");
traverseSource(pCrv, crv);
A3DInt32 iRet = A3DCrvCircleGet(pCrv, &sData);
A3DStatus iRet = A3DCrvCircleGet(pCrv, &sData);
if(iRet == A3D_SUCCESS)
{
setting->SetAttribute("m_bIs2D", (int)sData.m_bIs2D);
traverseCartesianTransformationData(sData.m_sTrsf, crv);
traverseParam(&sData.m_sParam, crv);
_SetDoubleAttribute(crv,"m_dRadius", sData.m_dRadius);
setDoubleAttribute(crv,"m_dRadius", sData.m_dRadius);
A3DCrvCircleGet(NULL, &sData);
}
else
{
crv->SetAttribute("error", iRet);
crv->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(crv);
@@ -67,7 +67,7 @@ static int sttraverseCrvCircle(const A3DCrvCircle* pCrv, _TiXmlElement* setting)
}
//######################################################################################################################
static int sttraverseCrvEllipse(const A3DCrvEllipse* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvEllipse(const A3DCrvEllipse* pCrv, _TiXmlElement* setting)
{
A3DCrvEllipseData sData;
A3D_INITIALIZE_DATA(A3DCrvEllipseData, sData);
@@ -75,19 +75,19 @@ static int sttraverseCrvEllipse(const A3DCrvEllipse* pCrv, _TiXmlElement* settin
_TiXmlElement* crv = new _TiXmlElement("A3DCrvEllipseData");
traverseSource(pCrv, crv);
A3DInt32 iRet = A3DCrvEllipseGet(pCrv, &sData);
A3DStatus iRet = A3DCrvEllipseGet(pCrv, &sData);
if(iRet == A3D_SUCCESS)
{
setting->SetAttribute("m_bIs2D", (int)sData.m_bIs2D);
traverseCartesianTransformationData(sData.m_sTrsf, crv);
traverseParam(&sData.m_sParam, crv);
_SetDoubleAttribute(crv,"m_dXRadius", sData.m_dXRadius);
_SetDoubleAttribute(crv,"m_dYRadius", sData.m_dYRadius);
setDoubleAttribute(crv,"m_dXRadius", sData.m_dXRadius);
setDoubleAttribute(crv,"m_dYRadius", sData.m_dYRadius);
A3DCrvEllipseGet(NULL, &sData);
}
else
{
crv->SetAttribute("error", iRet);
crv->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(crv);
@@ -95,7 +95,7 @@ static int sttraverseCrvEllipse(const A3DCrvEllipse* pCrv, _TiXmlElement* settin
}
//######################################################################################################################
static int sttraverseCrvParabola(const A3DCrvParabola* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvParabola(const A3DCrvParabola* pCrv, _TiXmlElement* setting)
{
A3DCrvParabolaData sData;
A3D_INITIALIZE_DATA(A3DCrvParabolaData, sData);
@@ -103,19 +103,19 @@ static int sttraverseCrvParabola(const A3DCrvParabola* pCrv, _TiXmlElement* sett
_TiXmlElement* crv = new _TiXmlElement("A3DCrvParabolaData");
traverseSource(pCrv, crv);
A3DInt32 iRet = A3DCrvParabolaGet(pCrv, &sData);
A3DStatus iRet = A3DCrvParabolaGet(pCrv, &sData);
if(iRet == A3D_SUCCESS)
{
setting->SetAttribute("m_bIs2D", (int)sData.m_bIs2D);
traverseCartesianTransformationData(sData.m_sTrsf, crv);
traverseParam(&sData.m_sParam, crv);
_SetDoubleAttribute(crv,"m_dFocal", sData.m_dFocal);
setDoubleAttribute(crv,"m_dFocal", sData.m_dFocal);
crv->SetAttribute("m_cParamType", (int) sData.m_cParamType);
A3DCrvParabolaGet(NULL, &sData);
}
else
{
crv->SetAttribute("error", iRet);
crv->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(crv);
@@ -123,7 +123,7 @@ static int sttraverseCrvParabola(const A3DCrvParabola* pCrv, _TiXmlElement* sett
}
//######################################################################################################################
static int sttraverseCrvHyperbola(const A3DCrvHyperbola* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvHyperbola(const A3DCrvHyperbola* pCrv, _TiXmlElement* setting)
{
A3DCrvHyperbolaData sData;
A3D_INITIALIZE_DATA(A3DCrvHyperbolaData, sData);
@@ -131,20 +131,20 @@ static int sttraverseCrvHyperbola(const A3DCrvHyperbola* pCrv, _TiXmlElement* se
_TiXmlElement* crv = new _TiXmlElement("A3DCrvHyperbolaData");
traverseSource(pCrv, crv);
A3DInt32 iRet = A3DCrvHyperbolaGet(pCrv, &sData);
A3DStatus iRet = A3DCrvHyperbolaGet(pCrv, &sData);
if(iRet == A3D_SUCCESS)
{
setting->SetAttribute("m_bIs2D", (int)sData.m_bIs2D);
traverseCartesianTransformationData(sData.m_sTrsf, crv);
traverseParam(&sData.m_sParam, crv);
_SetDoubleAttribute(crv,"m_dSemiAxis", sData.m_dSemiAxis);
_SetDoubleAttribute(crv,"m_dSemiImageAxis", sData.m_dSemiImageAxis);
setDoubleAttribute(crv,"m_dSemiAxis", sData.m_dSemiAxis);
setDoubleAttribute(crv,"m_dSemiImageAxis", sData.m_dSemiImageAxis);
crv->SetAttribute("m_cParamType", (int) sData.m_cParamType);
A3DCrvHyperbolaGet(NULL, &sData);
}
else
{
crv->SetAttribute("error", iRet);
crv->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(crv);
@@ -152,7 +152,7 @@ static int sttraverseCrvHyperbola(const A3DCrvHyperbola* pCrv, _TiXmlElement* se
}
//######################################################################################################################
static int sttraverseCrvHelix(const A3DCrvHelix* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvHelix(const A3DCrvHelix* pCrv, _TiXmlElement* setting)
{
A3DCrvHelixData sData;
A3D_INITIALIZE_DATA(A3DCrvHelixData, sData);
@@ -160,7 +160,7 @@ static int sttraverseCrvHelix(const A3DCrvHelix* pCrv, _TiXmlElement* setting)
_TiXmlElement* crv = new _TiXmlElement("A3DCrvHelixData");
traverseSource(pCrv, crv);
A3DInt32 iRet = A3DCrvHelixGet(pCrv, &sData);
A3DStatus iRet = A3DCrvHelixGet(pCrv, &sData);
if(iRet == A3D_SUCCESS)
{
setting->SetAttribute("m_bIs2D", (int)sData.m_bIs2D);
@@ -168,7 +168,7 @@ static int sttraverseCrvHelix(const A3DCrvHelix* pCrv, _TiXmlElement* setting)
}
else
{
crv->SetAttribute("error", iRet);
crv->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(crv);
@@ -176,7 +176,7 @@ static int sttraverseCrvHelix(const A3DCrvHelix* pCrv, _TiXmlElement* setting)
}
//######################################################################################################################
static int sttraverseCrvPolyLine(const A3DCrvPolyLine* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvPolyLine(const A3DCrvPolyLine* pCrv, _TiXmlElement* setting)
{
A3DCrvPolyLineData sData;
A3D_INITIALIZE_DATA(A3DCrvPolyLineData, sData);
@@ -184,7 +184,7 @@ static int sttraverseCrvPolyLine(const A3DCrvPolyLine* pCrv, _TiXmlElement* sett
_TiXmlElement* crv = new _TiXmlElement("A3DCrvPolyLineData");
traverseSource(pCrv, crv);
A3DInt32 iRet = A3DCrvPolyLineGet(pCrv, &sData);
A3DStatus iRet = A3DCrvPolyLineGet(pCrv, &sData);
if(iRet == A3D_SUCCESS)
{
setting->SetAttribute("m_bIs2D", (int)sData.m_bIs2D);
@@ -196,7 +196,7 @@ static int sttraverseCrvPolyLine(const A3DCrvPolyLine* pCrv, _TiXmlElement* sett
}
else
{
crv->SetAttribute("error", iRet);
crv->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(crv);
@@ -204,7 +204,7 @@ static int sttraverseCrvPolyLine(const A3DCrvPolyLine* pCrv, _TiXmlElement* sett
}
//######################################################################################################################
static int sttraverseCrvComposite(const A3DCrvComposite* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvComposite(const A3DCrvComposite* pCrv, _TiXmlElement* setting)
{
A3DCrvCompositeData sData;
A3D_INITIALIZE_DATA(A3DCrvCompositeData, sData);
@@ -212,7 +212,7 @@ static int sttraverseCrvComposite(const A3DCrvComposite* pCrv, _TiXmlElement* se
_TiXmlElement* crv = new _TiXmlElement("A3DCrvCompositeData");
traverseSource(pCrv, crv);
A3DInt32 iRet = A3DCrvCompositeGet(pCrv, &sData);
A3DStatus iRet = A3DCrvCompositeGet(pCrv, &sData);
if(iRet == A3D_SUCCESS)
{
setting->SetAttribute("m_bIs2D", (int)sData.m_bIs2D);
@@ -229,7 +229,7 @@ static int sttraverseCrvComposite(const A3DCrvComposite* pCrv, _TiXmlElement* se
}
else
{
crv->SetAttribute("error", iRet);
crv->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(crv);
@@ -237,7 +237,7 @@ static int sttraverseCrvComposite(const A3DCrvComposite* pCrv, _TiXmlElement* se
}
//######################################################################################################################
static int sttraverseCrvNurbsData(const A3DCrvNurbsData& sData, _TiXmlElement* setting)
static A3DStatus stTraverseCrvNurbsData(const A3DCrvNurbsData& sData, _TiXmlElement* setting)
{
setting->SetAttribute("m_bIs2D", (int) sData.m_bIs2D);
setting->SetAttribute("m_bRational", (int) sData.m_bRational);
@@ -254,7 +254,7 @@ static int sttraverseCrvNurbsData(const A3DCrvNurbsData& sData, _TiXmlElement* s
}
//######################################################################################################################
static int sttraverseCrvNurbs(const A3DCrvNurbs* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvNurbs(const A3DCrvNurbs* pCrv, _TiXmlElement* setting)
{
A3DCrvNurbsData sData;
A3D_INITIALIZE_DATA(A3DCrvNurbsData, sData);
@@ -262,15 +262,15 @@ static int sttraverseCrvNurbs(const A3DCrvNurbs* pCrv, _TiXmlElement* setting)
_TiXmlElement* crv = new _TiXmlElement("A3DCrvNurbsData");
traverseSource(pCrv, crv);
A3DInt32 iRet = A3DCrvNurbsGet(pCrv, &sData);
A3DStatus iRet = A3DCrvNurbsGet(pCrv, &sData);
if(iRet == A3D_SUCCESS)
{
sttraverseCrvNurbsData(sData, crv);
stTraverseCrvNurbsData(sData, crv);
CHECK_RET(A3DCrvNurbsGet(NULL, &sData));
}
else
{
crv->SetAttribute("error", iRet);
crv->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
setting->LinkEndChild(crv);
@@ -278,75 +278,80 @@ static int sttraverseCrvNurbs(const A3DCrvNurbs* pCrv, _TiXmlElement* setting)
}
//######################################################################################################################
static int sttraverseCrvAsNurbs(const A3DCrvBase* pCrv, _TiXmlElement* setting)
static A3DStatus stTraverseCrvAsNurbs(const A3DCrvBase* pCrv, _TiXmlElement* setting)
{
A3DCrvNurbsData sData;
A3D_INITIALIZE_DATA(A3DCrvNurbsData, sData);
A3DDouble dTolerance=1e-3;
A3DInt32 iRet = A3DCrvBaseGetAsNurbs(pCrv, dTolerance, true, &sData);
A3DStatus iRet = A3DCrvBaseGetAsNurbs(pCrv, dTolerance, true, &sData);
if(iRet == A3D_SUCCESS)
{
sttraverseCrvNurbsData(sData, setting);
stTraverseCrvNurbsData(sData, setting);
CHECK_RET(A3DCrvNurbsGet(NULL, &sData));
}
else
{
setting->SetAttribute("error", iRet);
setting->SetAttribute("error", A3DMiscGetErrorMsg(iRet));
}
return iRet;
}
//######################################################################################################################
int traverseCurve(const A3DCrvBase* pCrv, _TiXmlElement* setting)
A3DStatus traverseCurve(const A3DCrvBase* pCrv, _TiXmlElement* setting)
{
_TiXmlElement* crv = new _TiXmlElement("A3DCrvBase");
traverseSource(pCrv, crv);
A3DEEntityType eType;
A3DInt32 iRet = A3DEntityGetType(pCrv,&eType);
A3DStatus iRet = A3DEntityGetType(pCrv,&eType);
if(iRet == A3D_SUCCESS)
{
switch(eType)
{
case kA3DTypeCrvNurbs:
iRet = sttraverseCrvNurbs(pCrv, crv);
iRet = stTraverseCrvNurbs(pCrv, crv);
break;
case kA3DTypeCrvLine:
iRet = sttraverseCrvLine(pCrv, crv);
iRet = stTraverseCrvLine(pCrv, crv);
break;
case kA3DTypeCrvCircle:
iRet = sttraverseCrvCircle(pCrv, crv);
iRet = stTraverseCrvCircle(pCrv, crv);
break;
case kA3DTypeCrvEllipse:
iRet = sttraverseCrvEllipse(pCrv, crv);
iRet = stTraverseCrvEllipse(pCrv, crv);
break;
case kA3DTypeCrvParabola:
iRet = sttraverseCrvParabola(pCrv, crv);
iRet = stTraverseCrvParabola(pCrv, crv);
break;
case kA3DTypeCrvHyperbola:
iRet = sttraverseCrvHyperbola(pCrv, crv);
iRet = stTraverseCrvHyperbola(pCrv, crv);
break;
case kA3DTypeCrvHelix:
iRet = sttraverseCrvHelix(pCrv, crv);
iRet = stTraverseCrvHelix(pCrv, crv);
break;
case kA3DTypeCrvPolyLine:
iRet = sttraverseCrvPolyLine(pCrv, crv);
iRet = stTraverseCrvPolyLine(pCrv, crv);
break;
case kA3DTypeCrvComposite:
iRet = sttraverseCrvComposite(pCrv, crv);
iRet = stTraverseCrvComposite(pCrv, crv);
break;
default:
iRet = sttraverseCrvAsNurbs(pCrv, crv);
iRet = stTraverseCrvAsNurbs(pCrv, crv);
break;
}
}
A3DIntervalData oInterval;
A3D_INITIALIZE_DATA(A3DIntervalData, oInterval);
A3DCrvGetInterval(pCrv, &oInterval);
_SetDoubleAttribute(crv, "m_dMin", oInterval.m_dMin);
_SetDoubleAttribute(crv, "m_dMax", oInterval.m_dMax);
if (iRet == A3D_SUCCESS)
{
A3DIntervalData oInterval;
A3D_INITIALIZE_DATA(A3DIntervalData, oInterval);
A3DCrvGetInterval(pCrv, &oInterval);
setDoubleAttribute(crv, "m_dMin", oInterval.m_dMin);
setDoubleAttribute(crv, "m_dMax", oInterval.m_dMax);
}
setting->LinkEndChild(crv);
return iRet;