概述
HOOPS Exchange包括一個?Parasolid?連接器,它允許?Parasolid?開發人員輕松地將?CAD?數據導入到活動的?Parasolid?會話中。如果源數據基于?Parasolid(NX、Solid Edge?或?SolidWorks),則數據將按原樣導入。
這意味著您可以假設數據的質量與您在?SolidWorks、Solid Edge?或?NX?中獲得的數據完全相同。如果數據源自非?Parasolid?系統(例如?Catia、Creo?或?STEP?等),那么我們的連接器會利用?Parasolid?和可選的?PS/BodyShop?來確保模型以最高質量導入。
Parasolid?模型與附加數據(例如?PMI、裝配結構和元數據)之間的連接維護在映射表中。
HOOPS中文網http://techsoft3d.evget.com/
使用?Parasolid?連接器的?API?為:func:A3DAsmModelFileTranslateToPkParts和:struct:A3DRepresentationItemTranslateToPkParts。在這兩種情況下,可以導出到?Parasolid?會話的所有內容都會被傳輸,并且?Exchange?提供映射?(?:struct:A3DMiscPKMapper )?以保持?PRC?數據和生成的PK_ENTITY之間的雙向鏈接。例如:
- A3DAsmProductOccurrence <-> PK_ASSEMBLY
- A3DRiRepresentationItem <-> PK_BODY
- A3DTopoFace <-> PK_FACE
即使面或邊緣被縫合或合并在橋中,該方法也有效。在“完全集成”中,零件被一一傳輸,整個裝配結構被傳輸到場景圖中,允許您管理可見性、視圖和其他元數據。
下圖是基于?Parasolid?的應用程序的屏幕截圖,顯示了導入的?CatiaV5?模型,并維護了語義?PMI
加載選項
中的加載選項A3DRWParamsTranslateToPkPartsData會對性能和模型質量產生重大影響,因此下面對每個選項進行回顧。
場地 | 類型 | 描述 |
---|---|---|
m_eHealing | A3DETranslateToPkParts修復 | 枚舉來控制愈合。修復控制拓撲公差的調整、消除幾何不連續性、消除切片器面等。可以啟用、禁用此選項,或僅對非 Parasolid 文件啟用此選項。 |
m_eComputeAccurateEdges | A3DETranslateToPkPartsAccurate | 枚舉來控制精確的邊緣計算。可以啟用、禁用此選項,或僅對非 Parasolid 文件啟用此選項。 |
m_bDisjoinIfFaceFaceError | A3D布爾 | 如果為 TRUE,則具有面-面錯誤的實體將被分離。這意味著當檢測到錯誤時,有問題的人臉將與模型的其余部分隔離。僅在 PK_FACE_state_bad_face_face_c 錯誤的情況下才將面視為分離:自相交體。 |
m_bSew | A3D布爾 | 控制是否啟用縫紉。 |
m_dSewingTolerance | A3D雙 | 縫紉算法的公差。 |
m_eSimplifyGeometry | A3DETranslateToPkPartsSimplifyGeometry | 通過盡可能將曲線數據轉換為相應的分析形式(例如圓錐體、平面或球體)來簡化幾何和拓撲。可以啟用、禁用此選項,或僅對非 Parasolid 文件啟用此選項。 |
m_eMergeEntities | A3DETranslateToPkPartsMergeEntities | 刪除多余的邊緣和表面,以減少內存占用并提高性能。可以啟用、禁用此選項,或僅對非 Parasolid 文件啟用此選項。 |
m_pcPSBodyShopPath | A3DUTF8Char* | PSBodyshop DLL 的路徑。Exchange 將使用 PSBodyshop 來提高非 Parasolid 模型的導出質量。也就是說,更多的實體被近似為分析,并且更多的實體被合并。這是一個可選字段:僅當您想提供自己的庫時才可以考慮設置它。 |
m_pMapper | A3DMiscMapper** | Mapper 用于檢索 PRC 和 Parasolid 實體之間的鏈接。請參閱下面的部分。 |
m_bUseColour2Attribute | A3D布爾 | 使用 SDL/TYSA_COLOUR_2 Parasolid 屬性 |
m_bUseUNameAttribute | A3D布爾 | 使用 SDL/TYSA_UNAME Parasolid 屬性。 |
m_bUseLayerAttribute | A3D布爾 | 使用 SDL/TYSA_LAYER Parasolid 屬性。 |
m_uiNbProc | A3D布爾 | 僅適用于 A3DAsmModelFileTranslateToPkParts:使用它來決定使用的進程數。如果為 0 1 或 A3DAsmModelFileTranslateToPkParts 將僅在當前進程中運行。對于任何其他值,操作將使用請求的進程數執行。如果系統不支持,該字段可能會自動限制為較低的值。 |
HOOPS Exchange和Parasolid獨立運行。因此,為了使用任何與Parasolid相關的Exchange功能,您將需要有效的Parasolid會話。HOOPS Exchange不會自動初始化Parasolid會話-會話管理由您決定。此外,請考慮以下事項:
-
Parasolid 的最低版本在 Windows 上為24.1 ,在 Linux 上為27.0。對于 Parasolid 收斂建模(多面數據),您至少需要28.1。
-
執行環境必須有一個名為P_SCHEMA的已定義環境變量,該變量擴展為 Parasolid?Schema文件夾的路徑。
-
Parasolid 橋在 macOS 上不可用。
iOS 版?HOOPS Exchange?僅作為靜態庫 (?libA3DLIBS.a?) 提供。Parasolid 橋是一個名為libhepb.a 的靜態庫,可在我們的軟件包中使用。如果您想在應用程序中使用我們的 Parasolid 橋,則必須將其鏈接到libhepb.a。如果你不使用它,它的功能就會被假冒的功能所取代。必須通過定義 A3DAPI_NO_IOS_HEPB_STUB` 來禁用此默認行為。因此,對于要在 iOS 上使用 Parasolid Bridge 運行 HOOPS Exchange 的客戶端應用程序,必須滿足以下條件:
-
您的應用程序必須鏈接到libA3DLIBS.a和libhepb.a
-
加載API時代碼必須定義A3DAPI_NO_IOS_HEPB_STUB
測繪
翻譯后,了解 PRC 中的哪些拓撲實體對應于 Parasolid 實體可能會很有用,反之亦然。此外,匹配并不總是“一對一”,因為治療是在過程中完成的:
-
縫紉過程可以根據提供的縫紉公差將兩個閉合邊緣合并為一個。
-
太小的邊可能會從生成的拓撲中刪除
將模型加載到 Parasolid 會話中
以下代碼片段演示了如何使用:func:A3DAsmModelFileTranslateToPkParts將模型加載到 Parasolid 會話中:
<span style="color:#000000">A3DRWParamsExportParasolidDatasExportOptions;A3D_INITIALIZE_DATA(A3DRWParamsExportParasolidData,sExportOptions);// ... set your desired export options hereintiNbPkParts;PK_PART_t*pPkParts;A3DAsmModelFileTranslateToPkParts(sHoopsExchangeLoader.m_psModelFile,&sOptions,// Parasolid options structure&pParamsTranslateToPkPartsData,// Parasolid translation structure&iNbPkParts,// [out] length of pPkParts&pPkParts);// [out] PK_PART_t entity IDs
</span>
重要提示:?Parasolid 建模器使用米作為默認單位。將文件導出到 Parasolid 會話時,Exchange 會將模型中的比例轉換為米。
在 Exchange 中設置 Parasolid 屬性
轉換為 Parasolid 的拓撲實體的唯一屬性是標題以 H3DX_BRIDGE_* 開頭的字符串屬性。這些屬性將被轉換為 Parasolid,其名稱以H3DX_BRIDGE/*開頭。例如,標題為H3DX_BRIDGE_MyAttributeName的字符串屬性將被轉換為名稱為H3DX_BRIDGE/MyAttributeName 的Parasolid 。
以下是在 Exchange 中設置 Parasolid 屬性的方法:
<span style="color:#000000">A3DMiscAttribute*pAttribute=0;A3DMiscAttributeDatasAttributeData;A3D_INITIALIZE_DATA(A3DMiscAttributeData,sAttributeData);sAttributeData.m_pcTitle="Parasolid attributes.";// will create parasolid attribute: H3DX_BRIDGE/MyAttributeNameA3DMiscSingleAttributeDatasSingleAttributeData;A3D_INITIALIZE_DATA(A3DMiscSingleAttributeData,sSingleAttributeData);sSingleAttributeData.m_bTitleIsInt=false;sSingleAttributeData.m_eType=kA3DModellerAttributeTypeString;sSingleAttributeData.m_pcTitle=(char*)"H3DX_BRIDGE_MyAttributeName";sSingleAttributeData.m_pcData=(char*)"My string attribute.";sAttributeData.m_uiSize=1;sAttributeData.m_pSingleAttributesData=&sSingleAttributeData;A3DMiscAttributeCreate(&sAttributeData,&pAttribute);sBaseData.m_uiSize=1;sBaseData.m_ppAttributes=(A3DMiscAttribute**)malloc(sBaseData.m_uiSize*A3DUns32(sizeof(A3DMiscAttribute*)));sBaseData.m_ppAttributes=&pAttribute;CHECK_RET(A3DRootBaseSet(pEntity,&sBaseData))
</span>
在此示例中,pEntity是您要為其定義屬性的A3DEntity 。
點擊申請HOOPS試用http://x7pfmmn259623uby.mikecrm.com/l9292M9