装配体中配合对象Mate2

在装配体配合中,记录配合关系的对象为Mate2,如下图红框中的每个配合就是一个配合对象Mate2的实例,本文将简单介绍Mate2的获取及其记录的相关配合参数的获取。

image.png

1.Mate2对象的获取

常用的Mate2对象获取可以通过部件对象(Component2)或特征对象(Faeture)对象获取。

Feature SwFeat;
Mate2 SwMate = SwFeat.GetSpecificFeature2()
Component2 SwComp;
Mate2 SwMate = SwComp.GetMates()        

2.实例分析--对象获取

本例使用API获取部件转轴的配合对象与类型。

image.png

代码实例:

public static void GetMateType(Component2 SwComp)
{
     object[] CompMateObjs = SwComp.GetMates();//获取数组
     foreach (object ObjMate in CompMateObjs)
     {
          if (ObjMate is Mate2)//判断是否为配合
          {
               Mate2 SwMate = (Mate2)ObjMate;
               System.Windows.MessageBox.Show(Enum.Parse(typeof(swMateType_e), SwMate.Type.ToString().Trim()).ToString().Trim());
          }
     }
 }

代码解析

通过SwComp.GetMates()获得的是object[]数组,不能直接使用配合数组Mate2[]。循环遍历每个object对象是,判断该object是否为Mate2对象,在继续后续的数据获取。

实例效果

image.png

3.实例分析-配合参数获取

本例将通过Mate2对象的属性和方法获取每个配合的参数,包括参考对象,参考部件,配合尺寸等信息。

代码实例

public static void GetMateRefrence(Component2 SwComp)
{
     object[] CompMateObjs = SwComp.GetMates();
     StringBuilder Sb = new StringBuilder("");
     foreach (object ObjMate in CompMateObjs)
     {
          if (ObjMate is Mate2)
          {
               Mate2 SwMate = (Mate2)ObjMate;
               Sb.Append("配合【"+ ((Feature)SwMate).Name + "】参考对象:\r\n");//配合名称
               int n = SwMate.GetMateEntityCount();
               for(int i=0;i< n;i++)//配合参考
               {
                   MateEntity2 SwMateEntity2 = SwMate.MateEntity(i);
                        
                   string reftype = Enum.Parse(typeof(swSelectType_e), SwMateEntity2.ReferenceType2.ToString().Trim()).ToString().Trim();
                   string comp = SwMateEntity2.ReferenceComponent.Name2;
                   string refname = SwMateEntity2.Reference.Name;
                   Sb.Append("部件【" + comp + "】,参考【" + refname + "】" + ",类型【" + reftype + "】");
                   
                   DisplayDimension SwDispDim = SwMate.DisplayDimension2[0];
                   if (SwDispDim != null)
                   {
                       if (SwMate.Type == (int)swMateType_e.swMateANGLE)
                       {
                           Sb.Append(",角度=" + SwDispDim.GetDimension2(0).Value.ToString().Trim());
                       }
                       else if (SwMate.Type == (int)swMateType_e.swMateDISTANCE)
                       {
                           Sb.Append(",尺寸=" + SwDispDim.GetDimension2(0).Value.ToString().Trim());
                       }
                    }
                    Sb.Append("\r\n");
                }
                Sb.Append("\r\n");
            }
        }
        System.Windows.MessageBox.Show(Sb.ToString().Trim());
}

代码解读

a.通过Mate2::GetMateEntityCount()可以获得每个配合的参考数量,这是获取每个参考详细数据的前置条件。

b.配合对象也是一个特征,所以可以通过强制转换为Feature对象,获得该配合的名称

c.通过Mate2::MateEntity(i)方法可以获得每个配合的参考实体对象SwMateEntity2

d.通过SwMateEntity2对象即可获取参考对象,所属部件,等各类配合参考的信息。

e.通过Mate2::DisplayDimension2方法,即可获得对应配合的配合尺寸及数据,关于尺寸相关对象,可以查看之前的文章《尺寸对象Dimension》

实例效果

image.png

如下图为本文的示例程序,源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》 , 实例序号17

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在装配体中每个部件都是Component2对象的一个实例,装配体中的自动化操作少不了使用到Component2。本...
    JackChen86阅读 1,795评论 0赞 0
  • 在Solidworks中装配体能够实现对各类零件的总装,在装配提中可以去操作其中的各种部件,插入部件,进行配合等各...
    JackChen86阅读 2,507评论 0赞 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,272评论 18赞 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,307评论 0赞 62
  • 1 、一个".java" 源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个 pub...
    尽人事听天命_6c6b阅读 210评论 0赞 0

友情链接更多精彩内容