Add publish
This commit is contained in:
524
publish/publishsource/DemoLayers/DemoLayersDataModel.cpp
Normal file
524
publish/publishsource/DemoLayers/DemoLayersDataModel.cpp
Normal file
@@ -0,0 +1,524 @@
|
||||
/***********************************************************************************************************************
|
||||
*
|
||||
* Copyright (c) 2010 - 2022 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
|
||||
* employees of Tech Soft 3D, Inc. is granted only under a written non-disclosure agreement, expressly prescribing the
|
||||
* scope and manner of such use.
|
||||
*
|
||||
***********************************************************************************************************************/
|
||||
/**
|
||||
\file DemoLayers.cpp
|
||||
|
||||
Sample DemoLayers / Data model definition
|
||||
|
||||
***********************************************************************************************************************/
|
||||
|
||||
// Do not define INITIALIZE_A3D_API here. It should be only included once in a project.
|
||||
#define HOOPS_PRODUCT_PUBLISH_ADVANCED
|
||||
#include <A3DSDKIncludes.h>
|
||||
#include "../common.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <sstream>
|
||||
#include <ostream>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
|
||||
|
||||
//######################################################################################################################
|
||||
|
||||
|
||||
|
||||
A3DVoid mallocAndSetString(const A3DUTF8Char* srcString, A3DUTF8Char*& destString)
|
||||
{
|
||||
// we return empty strings rather than NULL because some strings usages crash with NULL values
|
||||
// (for example std::string xx = NULL crashes !)
|
||||
unsigned int uiSize = (unsigned int)(srcString ? strlen(srcString) : 0);
|
||||
destString = (A3DUTF8Char*)malloc((uiSize + 1) * sizeof(A3DUTF8Char));
|
||||
if (uiSize > 0)
|
||||
{
|
||||
strcpy(destString, srcString);
|
||||
}
|
||||
destString[uiSize] = 0;
|
||||
}
|
||||
|
||||
//######################################################################################################################
|
||||
// cleaning functions
|
||||
|
||||
void stFreeTable(A3DPDFDataTableData &sTableData)
|
||||
{
|
||||
for (A3DUns32 ir = 0; ir < sTableData.m_iNbRows ; ir++)
|
||||
{
|
||||
for(A3DUns32 ic = 0; ic < sTableData.m_iNbCols ; ic++)
|
||||
free(sTableData.m_ppcTexts[ir*sTableData.m_iNbCols+ic]);
|
||||
}
|
||||
free(sTableData.m_ppcTexts);
|
||||
}
|
||||
|
||||
|
||||
void stFreeTable3DViews(A3DPDFTable3DViewsData &sTable3DViewsData)
|
||||
{
|
||||
if (sTable3DViewsData.m_piViewIndexes)
|
||||
free(sTable3DViewsData.m_piViewIndexes);
|
||||
if (sTable3DViewsData.m_ppcViewLabels)
|
||||
{
|
||||
for(A3DUns32 ic = 0; ic < sTable3DViewsData.m_iNbViews ; ic++)
|
||||
if (sTable3DViewsData.m_ppcViewLabels[ic])
|
||||
free(sTable3DViewsData.m_ppcViewLabels[ic]);
|
||||
free(sTable3DViewsData.m_ppcViewLabels);
|
||||
}
|
||||
if (sTable3DViewsData.m_ppImages)
|
||||
free(sTable3DViewsData.m_ppImages);
|
||||
|
||||
if (sTable3DViewsData.m_pDataTableData)
|
||||
{
|
||||
for (A3DUns32 ir = 0; ir < sTable3DViewsData.m_pDataTableData->m_iNbRows ; ir++)
|
||||
{
|
||||
for(A3DUns32 ic = 0; ic < sTable3DViewsData.m_pDataTableData->m_iNbCols ; ic++)
|
||||
free(sTable3DViewsData.m_pDataTableData->m_ppcTexts[ir*sTable3DViewsData.m_pDataTableData->m_iNbCols+ic]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void stFreeRelationship(A3DPDFDataRelationshipData &sRelationshipData)
|
||||
{
|
||||
free(sRelationshipData.m_pMapIndexes);
|
||||
}
|
||||
|
||||
|
||||
//######################################################################################################################
|
||||
|
||||
|
||||
A3DStatus stCreateTable(A3DPDFDocument* pDoc, const std::vector<std::vector<std::string> > &aRows, A3DPDFDataTable*& pDataTable)
|
||||
{
|
||||
A3DStatus iRet = A3D_SUCCESS;
|
||||
A3DUns32 iNbRows = (A3DUns32)aRows.size();
|
||||
A3DUns32 iNbCols = (A3DUns32)aRows[0].size();
|
||||
A3DPDFDataTableData sTableData;
|
||||
A3D_INITIALIZE_DATA(A3DPDFDataTableData, sTableData);
|
||||
sTableData.m_iNbRows = iNbRows;
|
||||
sTableData.m_iNbCols = iNbCols;
|
||||
sTableData.m_ppcTexts = (A3DUTF8Char**)malloc(iNbRows * iNbCols * A3DUns32(sizeof(A3DUTF8Char*)));
|
||||
for (A3DUns32 ir = 0; ir < iNbRows; ir++)
|
||||
{
|
||||
for (A3DUns32 ic = 0; ic < iNbCols; ic++)
|
||||
mallocAndSetString(
|
||||
aRows[ir][ic].c_str(), // src
|
||||
sTableData.m_ppcTexts[ir*iNbCols + ic]); // dest
|
||||
}
|
||||
|
||||
CHECK_RET(A3DPDFDataTableCreate(pDoc, &sTableData, &pDataTable));
|
||||
|
||||
stFreeTable(sTableData);
|
||||
|
||||
return iRet;
|
||||
}
|
||||
|
||||
|
||||
A3DStatus stCreateRelationship(A3DPDFDocument* pDoc, std::vector< std::pair <size_t, size_t> > &aMapIndexes,
|
||||
A3DPDFDataTable* pDataTableSource, A3DPDFDataTable* pDataTableTarget)
|
||||
{
|
||||
A3DStatus iRet = A3D_SUCCESS;
|
||||
A3DUns32 iNbRows = (A3DUns32)aMapIndexes.size();
|
||||
|
||||
A3DPDFDataRelationshipData sRelationshipData;
|
||||
A3D_INITIALIZE_DATA(A3DPDFDataRelationshipData, sRelationshipData);
|
||||
sRelationshipData.m_iSizeMap = iNbRows;
|
||||
sRelationshipData.m_pDataTableSource = pDataTableSource;
|
||||
sRelationshipData.m_pDataTableTarget = pDataTableTarget;
|
||||
sRelationshipData.m_pMapIndexes = (A3DPDFMapIndexData *)malloc(iNbRows * sizeof(A3DPDFMapIndexData));
|
||||
memset(sRelationshipData.m_pMapIndexes, 0, iNbRows * sizeof(A3DPDFMapIndexData));
|
||||
for (A3DUns32 ir = 0; ir < iNbRows; ir++)
|
||||
{
|
||||
sRelationshipData.m_pMapIndexes[ir].m_aiIndexes[0] = (A3DInt32)(aMapIndexes[ir].first);
|
||||
sRelationshipData.m_pMapIndexes[ir].m_aiIndexes[1] = (A3DInt32)(aMapIndexes[ir].second);
|
||||
}
|
||||
|
||||
CHECK_RET(A3DPDFDataRelationshipCreate(pDoc, &sRelationshipData));
|
||||
|
||||
stFreeRelationship(sRelationshipData);
|
||||
|
||||
return iRet;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
A3DStatus CreateTable_3DViews_Simple(A3DPDFDocument* pDoc, A3DPDF3DArtwork* p3DArtwork, A3DAsmModelFile* pModelFile,
|
||||
A3DPDFDataTable3DViews*& pDataTable)
|
||||
{
|
||||
A3DStatus iRet = A3D_SUCCESS;
|
||||
A3DUns32 uiNbViews = 0;
|
||||
A3DPDFView** ppViews = NULL;
|
||||
pDataTable = NULL;
|
||||
|
||||
// first get views from the 3D model: do we really need a carousel
|
||||
iRet = A3DPDF3DArtworkGetViews(p3DArtwork, &uiNbViews, &ppViews);
|
||||
// the last view is the automatic view, automatically created by HOOPS Publish to be the default view.
|
||||
// we consider in this sample that this view is not in the CAD tool, so we don't want it in the carousel
|
||||
if(uiNbViews > 0)
|
||||
uiNbViews--;
|
||||
|
||||
// if no views after that, no use to write a carousel !
|
||||
if (uiNbViews == 0)
|
||||
return A3D_ERROR;
|
||||
|
||||
// HARD CODED : just keep the 2 last ones
|
||||
uiNbViews = 2;
|
||||
int iFirstView=2;
|
||||
|
||||
A3DInt32 *piViewIndexes = (A3DInt32 *)malloc(uiNbViews*sizeof(A3DInt32));
|
||||
A3DUTF8Char* *ppcViewLabels = (A3DUTF8Char* *)malloc(uiNbViews*sizeof(A3DUTF8Char*));
|
||||
A3DPDFImage* *ppImages = (A3DPDFImage* *)malloc(uiNbViews*sizeof(A3DPDFImage*));
|
||||
for (unsigned int ir = iFirstView; ir < iFirstView+uiNbViews; ir++)
|
||||
{
|
||||
piViewIndexes[ir-iFirstView] = ir;// index in list view, ordered as in A3DPDF3DArtworkGetViews
|
||||
//optional: labels for carousel buttons. if null, view name are used.
|
||||
ppcViewLabels[ir-iFirstView] = NULL;
|
||||
ppImages[ir-iFirstView] = NULL; // icon for view. if kA3DPDFTableFor3DViewsComputePosters, the image is automatically generated if needed for carousel.
|
||||
}
|
||||
|
||||
A3DPDFTable3DViewsData sTable3DViewsData;
|
||||
A3D_INITIALIZE_DATA(A3DPDFTable3DViewsData, sTable3DViewsData);
|
||||
sTable3DViewsData.m_iNbViews = uiNbViews;
|
||||
sTable3DViewsData.m_piViewIndexes = piViewIndexes;
|
||||
sTable3DViewsData.m_ppcViewLabels = ppcViewLabels;
|
||||
sTable3DViewsData.m_ppImages = ppImages; // not useful if kA3DPDFTableFor3DViewsComputePosters is specified
|
||||
|
||||
CHECK_RET(A3DPDFDataTable3DViewsCreate(pDoc, p3DArtwork,pModelFile,
|
||||
kA3DPDFTableFor3DViewsCustom , // kA3DPDFTableFor3DViewsComputePosters to automatically compute posters for all views specified
|
||||
&sTable3DViewsData,
|
||||
&pDataTable));
|
||||
|
||||
// clean
|
||||
stFreeTable3DViews(sTable3DViewsData);
|
||||
iRet = A3DPDF3DArtworkGetViews(NULL, NULL, &ppViews);
|
||||
|
||||
return iRet;
|
||||
}
|
||||
|
||||
A3DStatus CreateTable_ViewNames(A3DPDFDocument* pDoc, A3DPDFDataTable*& pDataTable)
|
||||
{
|
||||
// structure for Tables definitions
|
||||
std::vector<std::vector<std::string> > aRows;
|
||||
std::vector<std::string> aOneRow;
|
||||
aRows.clear();
|
||||
aOneRow.clear();
|
||||
aOneRow.push_back("Face View");
|
||||
aRows.push_back(aOneRow);
|
||||
aOneRow.clear();
|
||||
aOneRow.push_back("Bracket View");
|
||||
aRows.push_back(aOneRow);
|
||||
return stCreateTable(pDoc, aRows, pDataTable);
|
||||
}
|
||||
|
||||
|
||||
A3DStatus CreateRelationship_ViewNames_To_Views(A3DPDFDocument* pDoc,
|
||||
A3DPDFDataTable* pDataTable_Source, A3DPDFDataTable* pDataTable_Target)
|
||||
{
|
||||
// structure for Relationships definitions
|
||||
std::vector< std::pair <size_t,size_t> > aMapIndexes;
|
||||
|
||||
aMapIndexes.push_back( std::make_pair (0, 0) );
|
||||
aMapIndexes.push_back( std::make_pair (1, 1) );
|
||||
|
||||
return stCreateRelationship(pDoc, aMapIndexes, pDataTable_Source, pDataTable_Target);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//int stAddPmiItem(std::vector<std::vector<std::string> > &aTablePmiRows, const std::string& sItem)
|
||||
int stPushItemsAndRship_3d_PmiNotes(
|
||||
std::vector<std::vector<std::string> > &aTable3DRows, const A3DPDFNodeData* const nodeInfos, int& iKeyNode3dUID,
|
||||
std::vector<std::vector<std::string> > &aTablePmiRows, const std::string& sItem,
|
||||
std::vector< std::pair <size_t,size_t> > &aMapIndexes_3dToPmiNotes,
|
||||
std::vector< std::pair <size_t,size_t> > &aMapIndexes_PmiNotesTo3d)
|
||||
{
|
||||
std::vector<std::string> aOneRow3d;
|
||||
aOneRow3d.push_back(nodeInfos->m_pcNodeUid); iKeyNode3dUID = (int)aOneRow3d.size()-1;
|
||||
aOneRow3d.push_back(nodeInfos->m_pcName);
|
||||
aTable3DRows.push_back(aOneRow3d);
|
||||
|
||||
std::vector<std::string> aOneRowPmi;
|
||||
aOneRowPmi.push_back(sItem);
|
||||
aTablePmiRows.push_back(aOneRowPmi);
|
||||
|
||||
// create relationship between 3d node and pminotes entry
|
||||
size_t idxinpminotes = aTablePmiRows.size()-1;
|
||||
size_t idxin3dnodes = aTable3DRows.size()-1;
|
||||
aMapIndexes_3dToPmiNotes.push_back( std::make_pair (idxin3dnodes, idxinpminotes) );
|
||||
aMapIndexes_PmiNotesTo3d.push_back( std::make_pair (idxinpminotes, idxin3dnodes) );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int stPushItemsAndRship_PmiDetails(
|
||||
std::vector<std::vector<std::string> > &aTablePmiRows,
|
||||
std::vector<std::vector<std::string> > &aTablePMIDetailsRows, const std::string& sItem,
|
||||
std::vector< std::pair <size_t,size_t> > &aMapIndexes_PmiNotesToPmiDetails)
|
||||
{
|
||||
std::vector<std::string> aOneRowPmiDetail;
|
||||
aOneRowPmiDetail.clear();
|
||||
aOneRowPmiDetail.push_back(sItem);
|
||||
//...
|
||||
aTablePMIDetailsRows.push_back(aOneRowPmiDetail);
|
||||
|
||||
aMapIndexes_PmiNotesToPmiDetails.push_back( std::make_pair (aTablePmiRows.size()-1, aTablePMIDetailsRows.size()-1) );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
A3DStatus CreateTable_3DModel(A3DPDFDocument* pDoc,
|
||||
A3DAsmModelFile* pModelFile, A3DRWParamsPrcWriteHelper* pA3DRWParamsPrcWriteHelper,
|
||||
int& iKeyNode3dUID,
|
||||
A3DPDFDataTable*& pDataTable3D, A3DPDFDataTable*& pDataTable_PmiNotes,
|
||||
A3DPDFDataTable*& pDataTable_PMIDetailsSlot, A3DPDFDataTable*& pDataTable_PMIDetailsHole, A3DPDFDataTable*& pDataTable_PMIDetailsFlat
|
||||
)
|
||||
{
|
||||
A3DStatus iRet = A3D_SUCCESS;
|
||||
// structure for Tables definitions
|
||||
std::vector<std::vector<std::string> > aTable3DRows;
|
||||
std::vector<std::vector<std::string> > aTablePmiRows;
|
||||
std::vector<std::vector<std::string> > aTablePMIDetailsSlotRows;
|
||||
std::vector<std::vector<std::string> > aTablePMIDetailsHoleRows;
|
||||
std::vector<std::vector<std::string> > aTablePMIDetailsFlatRows;
|
||||
// structure for Relationships definitions
|
||||
std::vector< std::pair <size_t,size_t> > aMapIndexes_3dToPmiNotes;
|
||||
std::vector< std::pair <size_t,size_t> > aMapIndexes_PmiNotesTo3d;
|
||||
std::vector< std::pair <size_t,size_t> > aMapIndexes_PmiNotesToPmiDetailsSlot;
|
||||
std::vector< std::pair <size_t,size_t> > aMapIndexes_PmiNotesToPmiDetailsHole;
|
||||
std::vector< std::pair <size_t,size_t> > aMapIndexes_PmiNotesToPmiDetailsFlat;
|
||||
|
||||
|
||||
// parse the 3D PDF nodes
|
||||
A3DPDFModelFileNodesData* pModelFileNodesInfo = NULL;
|
||||
CHECK_RET(A3DPDFGetModelFileNodes(pModelFile, pA3DRWParamsPrcWriteHelper, &pModelFileNodesInfo));
|
||||
|
||||
for (int inodein3d = 0; inodein3d < pModelFileNodesInfo->m_iNbNodes; inodein3d++)
|
||||
{
|
||||
A3DPDFNodeData* nodeInfos = pModelFileNodesInfo->m_ppNodes[inodein3d];
|
||||
|
||||
// we write 3D table only for PMI nodes that we wxant to highlight
|
||||
if (nodeInfos->m_eNodeType==kA3DPDFNodePMI)
|
||||
{
|
||||
if (strcmp(nodeInfos->m_pcName, "Text.1")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Slot 2",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsSlotRows, "0.05197", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsSlot);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.2")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 1",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.10845", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.3")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 2",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.00894", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.4")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 3",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.11540", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.5")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 4",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.20458", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.6")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Slot 1",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsSlotRows, "0.00951", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsSlot);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.7")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 5",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.20481", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.8")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 6",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.20841", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.9")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 7",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.30450", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.10")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 8",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.00815", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.11")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 9",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.120540", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.12")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 10",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.0651", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.13")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 11",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.0842", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.14")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 12",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.20674", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.15")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 13",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.30541", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.16")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 15",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.00410", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.17")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Hole 14",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsHoleRows, "0.8405", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsHole);
|
||||
}
|
||||
else if (strcmp(nodeInfos->m_pcName, "Text.18")==0)
|
||||
{
|
||||
stPushItemsAndRship_3d_PmiNotes(aTable3DRows, nodeInfos, iKeyNode3dUID,
|
||||
aTablePmiRows, "Flatness",
|
||||
aMapIndexes_3dToPmiNotes, aMapIndexes_PmiNotesTo3d);
|
||||
stPushItemsAndRship_PmiDetails(aTablePmiRows,
|
||||
aTablePMIDetailsFlatRows, "0.9040", // + add other rows or columns if needed
|
||||
aMapIndexes_PmiNotesToPmiDetailsFlat);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
iRet = stCreateTable(pDoc, aTable3DRows, pDataTable3D);
|
||||
iRet = stCreateTable(pDoc, aTablePmiRows, pDataTable_PmiNotes);
|
||||
iRet = stCreateTable(pDoc, aTablePMIDetailsSlotRows, pDataTable_PMIDetailsSlot);
|
||||
iRet = stCreateTable(pDoc, aTablePMIDetailsHoleRows, pDataTable_PMIDetailsHole);
|
||||
iRet = stCreateTable(pDoc, aTablePMIDetailsFlatRows, pDataTable_PMIDetailsFlat);
|
||||
|
||||
iRet = stCreateRelationship(pDoc, aMapIndexes_PmiNotesToPmiDetailsSlot, pDataTable_PmiNotes, pDataTable_PMIDetailsSlot);
|
||||
iRet = stCreateRelationship(pDoc, aMapIndexes_PmiNotesToPmiDetailsHole, pDataTable_PmiNotes, pDataTable_PMIDetailsHole);
|
||||
iRet = stCreateRelationship(pDoc, aMapIndexes_PmiNotesToPmiDetailsFlat, pDataTable_PmiNotes, pDataTable_PMIDetailsFlat);
|
||||
iRet = stCreateRelationship(pDoc, aMapIndexes_PmiNotesTo3d, pDataTable_PmiNotes, pDataTable3D);
|
||||
iRet = stCreateRelationship(pDoc, aMapIndexes_3dToPmiNotes, pDataTable3D, pDataTable_PmiNotes);
|
||||
|
||||
A3DPDFGetModelFileNodes(nullptr, nullptr, &pModelFileNodesInfo);
|
||||
|
||||
return iRet;
|
||||
}
|
||||
|
||||
A3DStatus CreateRelationship_ViewNames_To_Pmis(A3DPDFDocument* pDoc,
|
||||
A3DPDFDataTable* pDataTable_Source, A3DPDFDataTable* pDataTable_Target)
|
||||
{
|
||||
// structure for Relationships definitions
|
||||
std::vector< std::pair <size_t,size_t> > aMapIndexes;
|
||||
|
||||
aMapIndexes.push_back( std::make_pair (0, 0) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 1) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 2) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 3) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 4) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 5) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 6) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 7) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 8) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 9) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 10) );
|
||||
aMapIndexes.push_back( std::make_pair (0, 11) );
|
||||
aMapIndexes.push_back( std::make_pair (1, 12) );
|
||||
aMapIndexes.push_back( std::make_pair (1, 13) );
|
||||
aMapIndexes.push_back( std::make_pair (1, 14) );
|
||||
aMapIndexes.push_back( std::make_pair (1, 15) );
|
||||
aMapIndexes.push_back( std::make_pair (1, 16) );
|
||||
aMapIndexes.push_back( std::make_pair (1, 17) );
|
||||
|
||||
return stCreateRelationship(pDoc, aMapIndexes, pDataTable_Source, pDataTable_Target);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user