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

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

查看: 90|回复: 1

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

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

    连续签到: 9 天

    [LV.6]常住居民II

    1919

    主题

    3193

    帖子

    5万

    积分

    管理员

    PLM之家mildcat

    Rank: 9Rank: 9Rank: 9

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

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

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

    x
    / H5 _, h" l2 \* @
    CATIA二次开发源码分享: 获取所有的圆角类型并着色3 G& }4 h* Q/ E0 w0 d) {, I5 T' E
    本部分主要学习如何对特征进行颜色标记处理!
    7 m3 @9 Z5 y$ Q! h QQ截图20180112165635.png
    1 ]: N# a, y0 o% w重要的是思路,通过CATIPrtPart 获取CATIDecendants接口,在这里可以设置要查询的类型,通过获取的特征得到特征对应几何的Brep信息,从而可以调用可视化的方法进行颜色处理!对于CATVPMesh的类型主要可以处理颜色和透明度。& A$ I2 V/ o) t0 ?4 `

    ) B5 i# Q# B' A9 T. f# Z
    [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
    
    }

    ; @, w; Q% M, u" S. h( [
    上海点团信息科技有限公司,承接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

    积分
    57820
     楼主| 发表于 2018-1-12 17:14:47 | 显示全部楼层
    颜色属性类别如下:本文用到了颜色和透明度
    ( W  ]& U/ ?1 q. y! uenum CATVisPropertyType {  CATVPColor,
    ! Z0 T6 y2 V& D6 I6 X  CATVPOpacity,: w( K$ t+ {+ r/ l5 Q: Z9 ]: M
      CATVPSymbol,1 v: |$ C  ~, Q5 t7 f) [
      CATVPLineType,+ ]: H" W, G0 ~% B+ t
      CATVPWidth,
    1 V$ G# C* x7 K' P# S6 `  CATVPInheritance,  k) I7 v6 w6 r- `) w
      CATVPLayer,' K% O. h( ~2 l8 W
      CATVPShow,
    * x! k! K2 m" `6 h5 \0 x' x  CATVPPick,+ m4 ?6 G% H$ W+ j4 ]9 A8 G
      CATVPLowInt,( U& X7 \* F6 r0 b+ I
      CATVPRenderingStyle,
    9 f0 y8 e" n& g$ L  CATVPAllPropertyType% e0 Y. ]! l" H8 r
    }
    ; j. H3 K2 ~/ g: s7 j几何类型对应的颜色类型如下: 本文使用的是CATVPMesh
    3 N0 }" D, z8 xCATVPGlobalType
    ) I& p! z' g* e* ^. {* MThis type defines the group of property types:" G- w# E, C* O& S0 ^
    CATVPPick
    * [; k/ J& h1 S2 z8 k- `1 C% PCATVPShow
    & k3 q9 d  U  B3 Q# {1 \" bCATVPLayer
    ! P) G  N) L/ n2 m* Y5 a0 w8 jCATVPMesh1 ]2 Y; q( |  ~
    The geometry is surfacic.
    " F! W: K6 f& |, z* |This geometry uses these property types:. k- t' L3 P  k7 \: |' U
    CATVPColor% P; }9 E& a8 o/ Q. O, E! A
    CATVPOpacity3 W! N! V/ E1 i' w
    CATVPEdge  {# T+ T! U1 e/ E
    The geometry is an edge. 7 V$ J: w: |+ Y* S# K
    This geometry uses these property types:& B  A0 h' o- f( y( S$ F
    CATVPColor
    1 b0 [* P! J" x# |" cCATVPWidth/ N: a) z- {6 c4 F
    CATVPLineType
    ) a4 Q7 _8 T5 \5 s* Q3 k; \3 X; I" OCATVPLine
    / f( R" f6 M) y. W) A( Z5 ?The geometry is a line.
    8 O7 Q; ~" o- J2 ], o7 T  K  ^This geometry uses these property types:% h8 W" [1 V! N7 y0 T! r9 g) g
    CATVPColor3 I/ E1 L, _$ y5 Z- o
    CATVPWidth
    ( ], z1 U1 K6 I# |2 U& WCATVPLineType$ m. d) U* R* ]+ X6 e% ^6 F
    CATVPPoint
    % x5 w" c4 m' Z8 ?. cThe geometry is a point.
    3 @4 D: d2 v: y! r1 _This geometry uses these property types:
    * U8 Z1 `& L- u% r7 S/ ]CATVPColor4 u; i0 R3 V: E4 I$ f  p8 l# b- r
    CATVPSymbol
    1 d$ M- K3 K! q$ e0 Q) P2 ~CATVPAsm
    % T8 U& v6 J" }6 [' _7 rThe geometry is a set of geometry. This type allows you to have inheritance.
    ) f6 V: u0 X5 x( }! fThis geometry uses these property types:, Y; |8 J# W$ H3 S$ C
    CATVPColor
    " L, Y5 I) i7 `8 `. V9 NCATVPInheritance
    7 a- [8 Z) l6 \: l, SCATVPWidth
    ; w9 Y) [4 L1 P) z  Q3 U/ p$ S; T- ?CATVPLineType
    0 j- j- H+ ?- f* t0 q% E8 }CATVPOpacity
    上海点团信息科技有限公司,承接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 05:48 , Processed in 0.142766 second(s), 31 queries .

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