PLM之家 UG NX11.0二次开发(ufun和NXOpen C++)网络培训火热报名

PLM之家-上海点团信息科技有限公司工业4.0数字化软件官方知识管理平台

查看: 94|回复: 1

[源码分享] CATIA二次开发源码分享: 获取所有的圆角类型并着色

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:37
  • 签到天数: 103 天

    连续签到: 9 天

    [LV.6]常住居民II

    1919

    主题

    3193

    帖子

    5万

    积分

    管理员

    PLM之家mildcat

    Rank: 9Rank: 9Rank: 9

    积分
    57827
    发表于 2018-1-12 16:57:11 | 显示全部楼层 |阅读模式

    请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

    您需要 登录 才可以下载或查看,没有帐号?QQ关联注册

    x
    1 R- k/ V7 j: L5 s0 w& ], V3 }
    CATIA二次开发源码分享: 获取所有的圆角类型并着色; D2 P! B$ H" F; F8 p3 y5 I1 D: O
    本部分主要学习如何对特征进行颜色标记处理!0 [( F9 B9 e5 {' t$ k  q0 r6 B
    QQ截图20180112165635.png , c4 i# R# E5 @& b7 G
    重要的是思路,通过CATIPrtPart 获取CATIDecendants接口,在这里可以设置要查询的类型,通过获取的特征得到特征对应几何的Brep信息,从而可以调用可视化的方法进行颜色处理!对于CATVPMesh的类型主要可以处理颜色和透明度。
    4 a) ^! a1 K. x, h4 U+ r4 @
      r7 V+ O8 f2 j( S# D: Y
    [C] 纯文本查看 复制代码
    {
    
    // Begin of User Code
    
    	CATFrmEditor *pEditor = CATFrmEditor::GetCurrentEditor();
    	if (NULL == pEditor)
    	{
    		printMessage("No Editor");
    		return;
    	}
    	CATDocument *pDoc = pEditor->GetDocument();
    	if (NULL == pDoc)
    	{
    		printMessage("No Doc");
    		return;
    	}
    	//CatInit
    	CATInit *pDocAsInit = NULL;
    	HRESULT rc;
    	rc = pDoc->QueryInterface(IID_CATInit,(void **) &pDocAsInit);
    	if (FAILED(rc))
    	{
    		printMessage("Can't get the document data");
    		return;
    	}
    	//get the root container
    	CATIPrtContainer * pPrtContainer = NULL;
    	pPrtContainer = (CATIPrtContainer *)pDocAsInit->GetRootContainer("CATIPrtContainer");
    	if (NULL == pPrtContainer)
    	{
    		printMessage("Can't get the mechanical Feature");
    		return;
    	}
    	pDocAsInit->Release();
    	pDocAsInit= NULL;
    
    	// get mechnical part
    	CATIPrtPart_var spPrtPart = NULL_var;
    	spPrtPart = pPrtContainer->GetPart();
    	if (NULL_var == spPrtPart)
    	{
    		printMessage("Can't get the mechanical Part");
    		return;
    	}
    	pPrtContainer->Release();
    	pPrtContainer = NULL;
    	//get the CATIDecendants
    
    	CATIDescendants *pDescendants = NULL;
    	rc = spPrtPart->QueryInterface(IID_CATIDescendants,(void **) &pDescendants);
    	if (FAILED(rc))
    	{
    		printMessage("Can't get the CATIDescendants");
    		return;
    	}
    	CATLISTV(CATISpecObject_var) spFilletFeatures;
    	pDescendants->GetAllChildren("CATIFillet",spFilletFeatures);
    	for (int currentFillet = 1; currentFillet <= spFilletFeatures.Size();currentFillet++)
    	{
    		CATISpecObject_var spCurrentFilletFeature = spFilletFeatures[currentFillet];
    		if (NULL_var != spCurrentFilletFeature)
    		{
    			//get the name alias and print
    			CATIAlias_var spAlias = spCurrentFilletFeature;
    			if (NULL_var == spAlias)
    			{
    				continue;
    			}
    			CATUnicodeString filletName = spAlias->GetAlias();
    			//printMessage();
    			_SelectorList1->SetLine(filletName);
    			//get the Brep of the fillet
    			CATIMfGeometryAccess *pMfGeoAccess = NULL;
    			rc = spCurrentFilletFeature->QueryInterface(IID_CATIMfGeometryAccess,(void **) &pMfGeoAccess);
    
    			if (SUCCEEDED(rc))
    			{
    				CATLISTV(CATBaseUnknown_var) spOBreps;
    				pMfGeoAccess->GetBReps(spOBreps);
    				for (int i = 1; i <= spOBreps.Size();i++)
    				{
    					CATIVisProperties *pfilletBrepAsGraphics = NULL;
    					CATBaseUnknown_var spCurrentFillet = spOBreps[i];
    					if (NULL_var != spCurrentFillet)
    					{
    						rc = spCurrentFillet->QueryInterface(IID_CATIVisProperties,(void **) &pfilletBrepAsGraphics);
    						if (SUCCEEDED(rc))
    						{
    							CATVisPropertiesValues colorValues;
    							colorValues.SetColor(0,255,0);//green
    							colorValues.SetOpacity(50);
    							pfilletBrepAsGraphics->SetPropertiesAtt(colorValues,CATVPColor,CATVPMesh);
    pfilletBrepAsGraphics->SetPropertiesAtt(colorValues,CATVPOpacity,CATVPMesh);
    							pfilletBrepAsGraphics->Release();
    							pfilletBrepAsGraphics = NULL;
    						}
    					}
    				}
    				pMfGeoAccess->Release();
    				pMfGeoAccess = NULL;
    			}
    		}
    	}
    	pDescendants->Release();
    	pDescendants = NULL;
    	// End of User Code
    
    }
    " E8 B; z1 c+ M5 F& p
    上海点团信息科技有限公司,承接NX,CATIA,CREO等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施开发培训,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 09:37
  • 签到天数: 103 天

    连续签到: 9 天

    [LV.6]常住居民II

    1919

    主题

    3193

    帖子

    5万

    积分

    管理员

    PLM之家mildcat

    Rank: 9Rank: 9Rank: 9

    积分
    57827
     楼主| 发表于 2018-1-12 17:14:47 | 显示全部楼层
    颜色属性类别如下:本文用到了颜色和透明度
    . H1 l9 X! j+ }7 w1 _' Venum CATVisPropertyType {  CATVPColor,
      q# i& F- Y. W1 w) Z/ A6 Z) N- b5 s  CATVPOpacity,
    7 w6 x) ~6 [2 c9 D* G: M! P; h/ L% j  CATVPSymbol,
    ; ~9 P1 V2 s6 O% {0 z, P  CATVPLineType,2 T( E) J% u: C# z/ k. t2 w
      CATVPWidth,( b9 R* |! r  B) a& s
      CATVPInheritance,
    , V$ U8 J" W& d- X) B, V+ g1 l  CATVPLayer,( ~# c1 s/ @# A1 v- d1 @& T( N
      CATVPShow,
    ) W+ y5 ^2 K  n$ J5 K: u) K$ d  CATVPPick,: @$ ^2 Z8 C+ R% X% J3 J+ J
      CATVPLowInt,
    * {9 W- @4 }1 s+ V! L  CATVPRenderingStyle,
    0 e4 |, k& B4 J/ M2 f  CATVPAllPropertyType4 |9 b- [" I& l) t, ^0 u( C7 x
    }
    ) s1 J: i3 s" G- o/ K9 o2 b" m几何类型对应的颜色类型如下: 本文使用的是CATVPMesh
    ) l+ Q7 c# i9 S# g( ACATVPGlobalType( s8 i8 A! K6 i" `% S
    This type defines the group of property types:
    3 q! @" ]& r5 y% {* SCATVPPick7 G+ c' Q' s: W/ A( H( p
    CATVPShow
      `& i6 \! t3 a: R0 V/ X2 }2 eCATVPLayer2 j' ]& }; `! Z4 j3 w0 F& R
    CATVPMesh
    0 e: T0 c0 l" Z' i& a3 t3 X! C- E) x3 rThe geometry is surfacic. 6 A8 f# O5 r1 V5 W- t
    This geometry uses these property types:
    / J4 u) l' C/ M! {4 ~# {- x; ICATVPColor
    ) ^5 `* i! D7 r3 t8 d* r$ XCATVPOpacity" R0 f" e- [# K8 K( ~; f, i3 o; Z8 r
    CATVPEdge
    * Q- m: C5 K9 o5 NThe geometry is an edge. 1 q1 d' U8 Q; M& [7 \! ~3 P5 B
    This geometry uses these property types:
    4 \% ?* W- d! P' j0 U9 h  {CATVPColor. P" O2 l9 B0 I- w8 s6 ?
    CATVPWidth' J% V& e7 n* h% S) D' T* F- v/ _
    CATVPLineType, S" c  m1 Z6 x% s1 L4 k& d; U! t
    CATVPLine
    ; _. A7 Y% f: c5 i4 I" x; UThe geometry is a line. 8 e, ~+ X. W) A" ?; E  D# z
    This geometry uses these property types:
    ; U8 K; T, {$ Z  o! i, oCATVPColor
    / ^7 T$ ~, O# |- ^CATVPWidth# R7 }* P4 A) l$ h. y" u3 D
    CATVPLineType
    , @+ F( _' T* `# V! ?" rCATVPPoint
    4 |! O* E' i4 H4 ?The geometry is a point. 1 m7 \8 q: y4 E' L8 u/ E
    This geometry uses these property types:
    ; F1 C' {. R. |, H8 s; {0 rCATVPColor
    & v, l1 c5 X( V4 U! _CATVPSymbol# }, ~1 ]  N! b7 L6 l% k6 Z: O
    CATVPAsm9 T* g3 K0 p' I9 }" Q$ g) I
    The geometry is a set of geometry. This type allows you to have inheritance. 3 b  w( r1 C& c* z
    This geometry uses these property types:9 C4 s! J: x" j# \7 E
    CATVPColor
      Q, @3 p6 \$ \CATVPInheritance' A8 \2 j( [0 u+ [9 @+ q, f0 ]+ }
    CATVPWidth  i6 k. U) y1 [1 S
    CATVPLineType
    0 z; I. \9 z9 a( i0 E0 a+ [" eCATVPOpacity
    上海点团信息科技有限公司,承接NX,CATIA,CREO等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施开发培训,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | QQ关联注册

    本版积分规则

    <

    QQ|小黑屋|手机版|Archiver|PLM之家-工业4.0数字化驱动之家 ( 沪ICP备13003373-3

    GMT+8, 2018-1-20 15:01 , Processed in 0.131248 second(s), 31 queries .

    快速回复 返回顶部 返回列表