C# SolidWorks 二次开发 API ---草图轮廓环的选择
本篇文章讨论一下Solidworks草图中存在多个闭环轮廓时如何进行操作。
 我们就以最简单的拉伸来介绍一下:
 默认情况下:
-  
在只一有个闭环轮廓 或者 多个不相交的闭环轮廓 下,Solidworks会默认自动选择上所有轮廓进行拉伸。
如下图:![在这里插入图片描述]()
 -  
在多个轮廓有相交的情况下,Solidworks在点击完拉伸命令之后会进入轮廓选择状态,提示选择你需要的轮廓。
如下图:
![在这里插入图片描述]()
 
我们先考虑一种简单的情况,就是怎么把所有的轮廓都选中,让程序进行拉伸特征。
 当前零件草图如下:
 
 下面的代码就是简单的遍历轮廓之后 ,选中所有轮廓,做一个拉伸特征。
 		/// <summary>
        /// 遍历 草图中的闭环轮廓
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void butGetSketchContour_Click(object sender, EventArgs e)
        {
            SldWorks swApp = PStandAlone.GetSolidWorks();
            ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;
            SelectionMgr swSelMgr = (SelectionMgr)swModel.SelectionManager;
            //选择草图
            swModel.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, false, 4, null, 0);
            //把选择转换为特征
            var swFeat = (Feature)swSelMgr.GetSelectedObject6(1, -1);
            swModel.ClearSelection();
            //把特征转换为草图
            var swSketch = (Sketch)swFeat.GetSpecificFeature2();
            //获取轮廓数量
            var sketchContoursCount = swSketch.GetSketchContourCount();
            var sketchContours = (object[])swSketch.GetSketchContours();
            //选择所有轮廓
            for (int i = 0; i < sketchContoursCount; i++)
            {
                var skContous = (SketchContour)sketchContours[i];
                skContous.Select(true, 0);
            }
            var swFeatureManager = (FeatureManager)swModel.FeatureManager;
            //做一个简单的拉伸
            var swFeature = (Feature)swFeatureManager.FeatureExtrusion2(true, false, false, 0, 0, 0.01, 0.01, false, false, false,
            false, 0, 0, false, false, false, false, true, true, true, 0, 0, false);
        }
 
那问题来了,如果我只想选中某一个轮廓,应该怎么玩?
- 两个方法,按上面的方案遍历一次。然后再通过 skContous.GetEdges 去找到对应的边,或者其它信息来判断 哪一个轮廓是想要的。
 - 如果知道一个内部点坐标,也可以通过直接选择的方式来,具体可以参考api中的例子。
Enable Contour Selection Example (C#) 
关键地方在这里:
 
源代码已上传:

 https://gitee.com/painezeng/CSharpAndSolidWorks
 或
 https://github.com/painezeng/CSharpAndSolidWorks
                    
                


                
            
        
浙公网安备 33010602011771号