亚州天堂爱爱,做爱视频国产全过程在线观看,成人试看30分钟免费视频,女人无遮挡裸交性做爰视频网站

? ? ?

CATIA二次開發之裝配約束(catia裝配約束在哪里)

我以為,約束的目的多是裝配,其本質是姿態矩陣的變換,只是系統已經為你打包成一個“工具”而已。因此,我們可以好好利用現成的“工具”,達到組件快速裝配的目的。

約束簡介

約束是裝配的重要手段,常見的約束有固定、平行、相合、平移、角度、接觸等約束,如catCstTypeReference表示固定約束,約束類型如下圖所示。通過約束關系,可以使組件之間的相對關系發生變化。而在這個變化過程中,用戶不需要考慮姿態是如何變換的,只需要簡單去設定約束類型即可,固定約束是約束中輸入最少,相對而言比較容易理解的約束,本文將以固定約束為例,闡述約束的創建。進行固定約束開發,可主要劃分下節的三個步驟,具體見如下代碼:

CATIA二次開發之裝配約束(catia裝配約束在哪里)

裝配約束

Demo代碼

可復制到notepad 等查看,在頭條上面,格式會亂(sorry)

void CreateConstraint(){ // 打開一個Proudct文件 pProductDocument CATDocument * pProductDocument = NULL; HRESULT rc= CATDocumentServices::OpenDocument(iArgv[1],pProductDocument); //①獲取文檔的Root Product spRootProduct CATIDocRoots *piDocRootsOnDoc = NULL; pProductDocument->QueryInterface(IID_CATIDocRoots, (void**) &piDocRootsOnDoc); CATListValCATBaseUnknown_var *pRootProducts = piDocRootsOnDoc->GiveDocRoots(); CATIProduct_var spRootProduct = NULL_var; if( NULL != pRootProducts ) { if(0 != pRootProducts->Size()) { spRootProduct = (*pRootProducts)[1]; delete pRootProducts; pRootProducts = NULL; } piDocRootsOnDoc->Release(); piDocRootsOnDoc = NULL; } // 找到第一個Product并將其設置為固定約束 spProdToConstraint int nbChild = spRootProduct->GetChildrenCount(); CATListValCATBaseUnknown_var* pListChild = spRootProduct->GetChildren(\”CATIProduct\”); CATIProduct_var spProdToConstraint; if( (NULL != pListChild) && (0 != pListChild->Size()) ) { spProdToConstraint = ( (*pListChild)[1] ); delete pListChild; pListChild = NULL; } //②創建connector pConnector CATIConnector * pConnector = NULL; CATIProduct * pActiveComponent = NULL; CATIProduct * pInstanceComponent = NULL; CATILinkableObject * pGeometry = NULL; int iCreation = 0; spRootProduct->QueryInterface(IID_CATIProduct,(void **)&pActiveComponent); spProdToConstraint->QueryInterface(IID_CATIProduct,(void **)&pInstanceComponent); spProdToConstraint->QueryInterface(IID_CATILinkableObject,(void **)&pGeometry); GetProductConnector(pGeometry,pInstanceComponent,pActiveComponent,0,pConnector,iCreation); //③創建約束 CATICst *pCst = NULL; CATLISTV (CATBaseUnknown_var) ConnectorList; ConnectorList.Append(pConnector); pConnector->Release(); CreateConstraint(catCstTypeReference,ConnectorList,NULL,pActiveComponent,&pCst); pActiveComponent->Release(); pActiveComponent = NULL;}

代碼分析

創建約束的函數如下:

CreateConstraint( CatConstraintType iConstraintType, const CATLISTV(CATBaseUnknown_var)&iConnectorList, CATICkeParm* iCkeValue, CATIProduct* iReferenceProduct, CATICst** ioConstraint)

大家只需關注如下三個輸入對象即可,其中

1) iConstraintType是約束枚舉類型

2) iConnectorList是進行約束的對象

3) iReferenceProduct是約束所屬文檔的reference product

在進行開發之前,大家可先想想利用CATIA去創建約束的過程:①約束的創建是在一個激活的結點下工作的,②同時用戶需要選擇一個或多個約束的對象,③并且去打開約束命令,選擇約束類型,然后才能創建約束。其實給我們的接口同自身功能的輸入輸出是一致的,因此在二次開發中,進行約束創建步驟可簡單歸納如下:

1) 獲知約束到底創建哪個位置,這里表現為一個Product結點

2) 將待約束的對象都創建成一個Connector,構成一個對象集

3) 設置約束類型并給定其他參數,并可創建約束。

當然,這里需要保證你給定的對象集能夠滿足給定約束類型的創建,否則返回錯誤,這個需要開發人員去保證。在本例中,由于固定約束的創建只需一個對象即可,因此只有一個Connector,若要創建相合約束,主要區別就在于Connector個數的不同,其他開發均如出一轍。

本人將不斷更新CATIA二次開發相關文章

大家也可關注本人小店(來個饅頭:https://weidian.com/item.html?itemID=1646419866)

開發深似海,疑義相與析

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

(0)
上一篇 2023年3月17日 上午9:53
下一篇 2023年3月17日 上午10:09

相關推薦