SolidWorks二次开发API (C#)---工程图中获取注释或球标关联的零件

最近因为一些原因,博客没更新。
这篇文章给大家介绍一下工程图中怎么获取零件对象,这个问题之前也有网友问过,一直在计划中。

下面这个简单的工程图中,我们要获取clamp这个零件,我们可以选择的方式很多:

  • 左侧特征树
  • 关联和球标
  • 关联的注释文字
  • 零件上面的面/边/线

也许还有别的方式:
在这里插入图片描述
大家可以自己思考一下,上在这几种方式都如何去获取到这个零件。
模板文件在源代码中: TemplateModel\TempAssembly.SLDDRW

给大家十分钟,能搞定,就不用继续看了。

在这里插入图片描述
直接上代码加注释:

        /// /// 这里有两种代码,一个是直接在工程图中选中了零件,另一个在工程图中选中了注释 或者球标(有引线指向零件)/// /// /// private void btnGetCompFromBalloon_Click(object sender, EventArgs e){SldWorks swApp = PStandAlone.GetSolidWorks();var swModel = swApp.IActiveDoc2;//var drawingDoc = (DrawingDoc)swModel;//选择管理器var swSelMgr = (SelectionMgr)swModel.SelectionManager;//检查是否有选择对象if (swSelMgr.GetSelectedObjectCount2(-1) == 0){MessageBox.Show("还有没选择对象");return;}//遍历选中对象 (经验觉得第一个选中对象一直是视图,第二个开始才是要选中的对象)//所以下在的循环应该可以从2开始for (int i = 1; i <= swSelMgr.GetSelectedObjectCount(); i++){//获取选中的对象,转为DrawingComponentvar swDrawingComponent = (DrawingComponent)swSelMgr.GetSelectedObjectsComponent4(i, -1);if (swDrawingComponent != null){var swComponent = (Component2)swDrawingComponent.Component;MessageBox.Show(swComponent.Name2);}//如果选择的是球标 或者 注释if (swSelMgr.GetSelectedObjectType3(i, -1) == (int)swSelectType_e.swSelNOTES){//获取Notevar thisNote = (Note)swSelMgr.GetSelectedObject6(i, -1);//获取Annotationvar ann = (Annotation)thisNote.GetAnnotation();//获取关联实体var attEntity = (Entity)ann.IGetAttachedEntities();//获取实体所对应的Componentvar comp = attEntity.IGetComponent2();MessageBox.Show(comp.Name2);}}}

在这里插入图片描述

完美运行

在这里插入图片描述

在这里插入图片描述
源代码在码云和github上都有,地址就不贴了,自己找下就有。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部