![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
3DExperience二次开发之路
weixin_42594891
这个作者很懒,什么都没留下…
展开
-
3DExperience:利用CAT3DCustomRep或CATSurfacicRep在模型中可视化红色箭头(可根据参数画其他形状)
部分位置函数无关紧要。//获取视点 CATFrmLayout *pLaout=CATFrmLayout::GetCurrentLayout(); CATFrmWindow *pFrmWindow=pLaout->GetCurrentWindow(); CATViewer *pViewer=pFrmWindow->GetViewer(); CAT3DViewpoint *pViewpoint=&(pViewer->GetMain3DViewpoint()); Point原创 2020-07-25 21:38:05 · 601 阅读 · 0 评论 -
3DExperience:DELMIA的仿真(Simulation)模式
记录:DELMIA仿真利用多线程进行仿真,在仿真时通过仿真控制器能够同步计算一些内容,但是计算中含有到QueryInterface可能会导致内存报错,有时在仿真过程中报错(仿真过程中不强制刷新模型不会报错,但一旦强制刷新模型则会报错),有时在关闭文档时会报错(可能在第二次或第三次关闭时报错)。...原创 2020-07-25 21:28:08 · 962 阅读 · 0 评论 -
3DExperience:CATBody的三角面片化
需要将零件的LoadMode转换为EditMode。void ARKBox::SetTriNumber(CATBody *ipBody,ARKTrianglePlane **&opaTriangle,TriNumber &oTriNumber){ double sag=0.1; CATICGMBodyTessellator *pTessellator=::CATCGMCreateBodyTessellator(ipBody,sag,CATPIBY4); pTessellator -原创 2020-07-25 21:21:27 · 575 阅读 · 1 评论 -
3DExperience:可视化的方法在模型中画出三角面片
先由两点划线。void ExportedByARKGraphicRep ARKBody::CreateLinRep(CATLine *ipLine,CAT3DRep *&opRep){ CAT3DRep *pRep = NULL; if (NULL == ipLine) return; CATCrvParam startParam, endParam ; ipLine -> GetStartLimit(startParam); ipLine -> GetEndLimit原创 2020-07-25 21:17:50 · 488 阅读 · 0 评论 -
3DExperience:一个状态命令(CATStateCommand)适用于多种选择、多种动作函数的方法
首先CATStateCommand::BuildGraphBuildGraph()中不写内容,额外增加一个函数void ARKStaticEvaluationStateCmd::Chioce(CATCommand* icmd,const char *istring, IID iIID,CATBoolean (ARKStaticEvaluationStateCmd::*Fuction)()){ _pcmd=icmd; _FirstPathAgent=new CATPathElem原创 2020-07-25 21:11:22 · 587 阅读 · 1 评论 -
3DExperience:从组件与UI活动对象创建CATPathElement对象
this指针某接口。ExportedByARKDocumentStructureItf CATPathElement *ARKEProduct::GetPathElement(){ CATFrmEditor *pEditor=CATFrmEditor::GetCurrentEditor(); CATPathElement context = pEditor->GetUIActiveObject(); CATIBuildPath *pBuildPath=NULL; QueryInterfa原创 2020-07-25 21:05:06 · 440 阅读 · 0 评论 -
3DExperience:判断CATIPLMNavOccurrence的Modeler是否为DELHumanModeler(是否是Manikin或Human)的函数
ExportedByARKDocumentStructureItf void ARKEProduct::GetManikin(ARKIManikin*& opManikin){ SWKIHumManikinUtils * pManikinUtils = NULL; if (SUCCEEDED (::CATInstantiateComponent ("SWKIHumManikinUtilsImpl", IID_SWKIHumManikinUtils, (void**) &pManiki原创 2020-07-25 21:02:16 · 260 阅读 · 0 评论 -
3DExperience:修改CATIPLMNavOccurrence下所有零件的LoadMode为EditMode
void ARKEProduct::ChangeLoadModeToEditMode(){ CATIPLMNavOccurrence_var spOccOnThis = this; CATIPLMNavReference *pRefOnThis = NULL; if(FAILED(spOccOnThis -> GetRelatedReference(pRefOnThis))||pRefOnThis==NULL){ CATIPLMNavInstance *pInstOnThis = NULL;原创 2020-07-25 20:59:04 · 328 阅读 · 0 评论 -
3DExperience:获得某CATIPLMNavOccurrence的全局位置矩阵(通过CATIMovable与非CATIMovable)
非注释是通过CATIMovable接口获取,注释的是通过CAT3DBagRep类获取。区别在于:在仿真时,通过CATIMovable全局位置矩阵不会变化而通过CAT3DBagRep类获取的可以变化。ExportedByARKDocumentStructureItf HRESULT ARKEProduct::GetAbsPosition(Transfor &oabsPosition){ if(_posTag){ oabsPosition = _currentPos; return S_OK原创 2020-07-25 20:54:52 · 326 阅读 · 0 评论 -
3DExperience:输入一个向量,随机生成其余两个正交向量的函数
随机生成的第一个向量,能取0坐标的就取0坐标ExportedByARKGlobal void GetDirections(const CATMathDirection &idirection1,CATMathDirection &odirection2,CATMathDirection &odirection3){ double d1x=idirection1.GetX(); double d1y=idirection1.GetY(); double d1z=idirec原创 2020-07-25 20:49:19 · 303 阅读 · 0 评论 -
3DExperience:打开给定Product Reference并将其添加到指定的Occurrence下
_pSelectedProduct是一个CATIPLMNavOccurrence接口指针,pAddedHuman 为被添加的Product Reference,pAddedObj为pAddedHuman 的一个实例。 HRESULT hr = S_OK ; CATIPLMProducts_var spProductsOnSelectedRef = NULL_var; CATIPLMNavOccurrence_var spOccOnSelected = _pSelectedProduct; CATIP原创 2020-07-25 20:44:56 · 362 阅读 · 0 评论 -
3DExperience:复制(克隆)一个Product Reference(类似于深拷贝)
pAddedHuman为被复制的Product Reference,pDuplactedHuman为新复制的Product Reference。 CATAdpDuplicator duplicator; CATIPLMComponent_var spComponent = pAddedHuman; ReleaseInterface(pAddedHuman); CATIAdpPLMIdentificator *pAddedHumanId = NULL; spComponent -> GetA原创 2020-07-25 20:39:37 · 406 阅读 · 0 评论 -
3DExperience:根据CATIPLMNavOccurrence获取体积函数
单位为立方米。由于V6对Product的打开机制是VisualMode,故获取速度会很慢。ExportedByARKGlobal void GetVolume(CATIPLMNavOccurrence *ipOcc,double &oVolume){ CATApplicationFrame *pappFrame = CATApplicationFrame::GetFrame(); CATIAApplication *ptApp = NULL; pappFrame -> QueryI原创 2020-07-25 20:33:47 · 2800 阅读 · 0 评论 -
3DExperience:根据CATIPLMNavOccurrence获取重心函数
局部坐标系下的重心,单位为m。由于V6对Product的打开机制是VisualMode,故获取速度会很慢。ExportedByARKGlobal void GetCoG(CATIPLMNavOccurrence *ipOcc,double *oaCog){ CATApplicationFrame *pappFrame = CATApplicationFrame::GetFrame(); CATIAApplication *ptApp = NULL; pappFrame -> QueryIn原创 2020-07-25 20:31:16 · 334 阅读 · 0 评论 -
3DExperience:根据PLM_ExternalID和V_version获取Product Reference的函数
把.edu中的代码整理了一下,变成能够直接调用的ExportedByARKGlobal HRESULT ARKOpenPLMComponent (const char* istrPLMType, const CATUnicodeString& iPLM_ExternalIDValue, const CATUnicodeString& iV_versionValue, const IID& iIID, void **op原创 2020-07-25 20:27:51 · 338 阅读 · 0 评论 -
3DExperience:创建组件和使用智能指针
以前用V5的时候,对组件、接口以及智能指针一知半解,能用,但是理解的不是很透彻,现在在学V6,把百科全书仔细看了一下,好好的理解了一下组件、接口和智能指针创建组件什么是组件组件是构建应用程序的元素。组件是一段你无法修改的可执行代码,但是你可以通过它公开的接口来使用,它隐藏了它的实现细节,即使在运行时也可以由暴露它的另一个组件替换。接口和执行相同的工作,并确保向上兼容使用它的客户端应用程序。...原创 2019-08-28 12:36:27 · 936 阅读 · 0 评论 -
3DExperience:OM(Object Modeler)组件的继承
OM(Object Modeler)组件的继承组件可以由其他组件派生,派生组件可以看做是基组件一种,派生组件拥有基组件的行为和本身的行为。这就是OM-继承,尽管和c++继承相似,但却和C++继承不同。OM组件继承允许代码重用和分解。OM继承使CAADerivedCmp组件能运行继承的CATBaseCmp组件实现的CAAIXX和CAAIYY接口,这与c++派生类实例调用其基类方法的方式相同。...原创 2019-08-28 18:35:25 · 511 阅读 · 0 评论 -
3DExperience:回调机制
回调机制是CAA在对象之间实现发布/订阅的方式。对象可以扮演事件发布者的角色,告知订阅了该对象的其他对象在给定事件发生时调用它们。事件发布者和事件订阅者的基类是CATBaseUnknown和CATEventSubscriber。其他类型的回调用于特定的事件,例如在主循环中返回onidle回调、超过指定时间的超时回调或修改文件描述的文件描述符回调。什么是回调机制回调机制提供了发布/订阅功能。用报...原创 2019-08-29 14:24:47 · 507 阅读 · 0 评论 -
3DExperience:PLM的知识点
PLM对象PLM对象有以下几种:PLM ReferencePLM Representation ReferencePLM InstancePLM Representation InstancePLM PortPLM ConnectionPLM对象都有各自标识符,标识符是实现CATIAdpPLMIdentificator接口的组件。不要依赖CATIPLMIdentifierSet...原创 2019-08-30 17:33:05 · 1817 阅读 · 0 评论 -
3DExperience:Product Modeler
从工业实际模型到持久模型Product Modeler简化版滑板是由七个组装好的实体部件组成,属于三种类型:一个板子(粉色)。两个支架(灰色)。四个轮子(绿色)。在Product modeler中,该滑板可表示为以下结构:Reference:对部件或组装部件模型的引用。Instance:实例,给定位置上的引用的模型,该实例所在装配体的引用聚合该实例。Representat...原创 2019-09-02 15:14:31 · 1064 阅读 · 0 评论 -
3DExperience:记录一些可能会用到的接口以及知识点
从3D Shape得到PLM Representation:CATPLMComponentInterfacesServices::GetPLMComponentOf()从Rep Reference得到3DShape:RetrieveApplicativeContainer(“CATPrtCont”,IID_CATIMmiPrtContainer,(void **) & pContain...原创 2019-09-05 16:35:29 · 994 阅读 · 0 评论 -
V5中CATIProduct在V6的变化
记录一下,需要用的时候便于查看V5中CATIProduct在V6的变化未出现的API表示V6不再支持V5 CATIProductV6 CATIProcutAddProductCreate a PLM Product Reference using either CATIPrdReferenceFactory, CATIPrd3DPartReferenceFactory ...原创 2019-08-27 15:55:05 · 610 阅读 · 0 评论