失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C# SolidWorks二次开发-工程图-遍历选中视图中的草图

C# SolidWorks二次开发-工程图-遍历选中视图中的草图

时间:2020-06-08 19:18:41

相关推荐

C# SolidWorks二次开发-工程图-遍历选中视图中的草图

知识点: 遍历选中视图中的草图

我们来继续学习一下工程图里的东西,如下图,我们可以在工程图中画草图,也可以在某个视图中画草图,你不要问我为什么要画,因为我也不知道你要干什么。

今天就简单介绍一下,如何获取这几条线的信息。

大家都知道零件的时候画草图都是要先定义基准面的,而且画完左侧特征树上也会显示一个特征,但是我们在图纸上或者视图上画的时候,却不用,也没有显示特征。

所以我猜侧,这里是Solidworks做了隐藏及优化,图纸或者视图上的草图只能有一个,所有就不用再显示 出来了。

动手-> 去api 帮助里面找一找相关的帮助,看看有没有什么新发现。

-----------------------------------------------------------------------------华丽的分割线-----------------------------------------------------------------------------------------

好像发现了什么:

找到了个View的接口:

关键信息在这里:

Remarks

Each drawing view contains an underlying sketch. The user can activate the sketch for a drawing view by double-clicking the view. Once the drawing view is active, you can add sketch directly to the view’s sketch.

我假装看不懂,哈哈。翻译一下:

那就好办了,就是先搞到一个View对象,再GetSketch,这样我们就有和零件草图一样的对象了,这样我们就可以遍历里面的直线、点、文字这些信息了。

其实代码我写好很久了,一直没有发文章解释一下。

private void btnGetView_Click(object sender, EventArgs e){SldWorks swApp = Utility.ConnectToSolidWorks();ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;SelectionMgr selectionMgr = (SelectionMgr)swModel.SelectionManager;//获取选择的视图对象View view = (View)selectionMgr.GetSelectedObject5(1);//获取视图的草图var viewSketch = view.IGetSketch();//var pointsCount = viewSketch.GetSketchPointsCount2();var points = (object[])viewSketch.GetSketchPoints2();var skSegs = (object[])viewSketch.GetSketchSegments();List<SketchPoint> segmentPoints = new List<SketchPoint>();if (points != null){for (int i = 0; i < points.Length; i++){var thisPoint = (SketchPoint)points[i];Debug.Print(thisPoint.Type.ToString());if (thisPoint.Type == 1){// thisPoint.Select(true);segmentPoints.Add(thisPoint);}}}List<SketchSegment> segmentCenterLines = new List<SketchSegment>();if (skSegs != null){for (int i = 0; i < skSegs.Length; i++){var thisSeg = (SketchSegment)skSegs[i];// thisSeg.Select(false);if (thisSeg.Style == (int)swLineStyles_e.swLineCENTER){//thisSeg.Select(true);segmentCenterLines.Add(thisSeg);}}}}

其它来不及解释了,大家自己思考吧,顺便来个小调查,谢谢大家。

如果觉得《C# SolidWorks二次开发-工程图-遍历选中视图中的草图》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。