各种功能的代码示例1

1、遍历零件中的所有的face

 //遍历零件中的所有的face
 		public void TraverseFace(IPartDoc currentPartDoc)
        {
            //获取所有Body
            Array bodies = (Array)(currentPartDoc.GetBodies2((int)swBodyType_e.swSolidBody, true));

            //遍历每个Body
            foreach (IBody2 body in bodies)
            {
                /*获取所有Face*/
                Array faces = (Array)body.GetFaces();
                for (int i = 0; i < faces.Length; i++)
                {
                    //获取当前正在遍历的面
                    IFace2 face = (IFace2)faces.GetValue(i);
                    //这里就可以对每一个face进行处理。
                }
            }
        }

2、遍历一个face中的所有edge

//遍历一个face中的所有edge
  		public int TraverseEdge(IFace2 tempFace)
        {
            int num = 0;
            //获取面的环
            object[] tempLoops = (object[])tempFace.GetLoops();
            //遍历环上的边
            foreach (ILoop2 tempLoop in tempLoops)
            {                
                //如果是外环
                if (tempLoop.IsOuter() == true)
                {
                    //遍历边
                    object[] edges = (object[])tempLoop.GetEdges();                    
                    for (int b = 0; b < edges.Length; b++)
                     foreach ( IEdge edge in edges)
                    {
                        //获取当前在遍历的Edge
                        //可以对每一个边进行处理。例如:                       
                        //取该edge的起点
                        if (edge.IGetStartVertex() != null)
                        {
                            double[] pointArray = new double[3];
                            pointArray = edge.IGetStartVertex().GetPoint();
                        }
                        num++;
                    }
                }
            }
            return num;
        }

3、获取一个face的信息

//获取一个face的信息
 		public int GetFaceInformation(IFace2 tempFace)
        {
            //获得该面的面积,结果保留8位小数
            double tempFaceArea = Math.Round(tempFace.GetArea(), 8);
            //获得该面的边数
            int tempFaceEdgeCount = tempFace.GetEdgeCount();
            //得到surface
            ISurface tempsurface = tempFace.GetSurface();

            //判断tempsurface的类型
            //如果该面为平面
            if (tempsurface.IsPlane())
            {
                //得到平面法线和点,
                double[] normalOfPlane = new double[3];
                normalOfPlane[0] = tempsurface.PlaneParams[0];
                normalOfPlane[1] = tempsurface.PlaneParams[1];
                normalOfPlane[2] = tempsurface.PlaneParams[2];
                double[] rootPt = new double[3];
                rootPt[0] = tempsurface.PlaneParams[3];
                rootPt[1] = tempsurface.PlaneParams[4];
                rootPt[2] = tempsurface.PlaneParams[5];
            }
            //如果该面为柱面
            if (tempsurface.IsCylinder())
            {
                //得到柱面半径,其余信息可以查看帮助文档
                double[] originPt = new double[3];
                originPt[0] = tempsurface.CylinderParams[0];
                originPt[1] = tempsurface.CylinderParams[1];
                originPt[2] = tempsurface.CylinderParams[2];
                double[] axis = new double[3];
                axis[0] = tempsurface.CylinderParams[3];
                axis[1] = tempsurface.CylinderParams[4];
                axis[2] = tempsurface.CylinderParams[5];
                double radiusOfCylinder = tempsurface.CylinderParams[6];
            }
            //如果该面是球面
            if (tempsurface.IsSphere())
            {
                //得到球面半径,其余信息可以查看帮助文档
                double radiusOfSphere = tempsurface.SphereParams[3];
            }
            return tempFaceEdgeCount;
        }

4、清除所有选中

//清除所有选中
IModelDoc2 doc = curDoc;
 doc .ClearSelection2(true);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值