SolidWorks测量工具:精确设计的好帮手


在Solidworks中,我们经常会使用【评估】/【测量】进行一些物体的测量工作,通过测量的数据进行相关的操作。那么在自动化操作Solidworks的过程中,如果需要测量或检测,并将测量数据用于后续的自动化操作时,此时需要使用到Solidworks的测量类Measure类的相关属性与方法。

image.png

本文将通过下图中的模型进行相关测量,从而给大家简单介绍下Measure类的相关使用。

image.png

1.Measure类的获取方法


ModelDoc2 SwDoc;//模型文档
ModelDocExtension SwDocEx=SwDoc.Extension;//获得模型扩展文档
Measure SwMeasure = SwDocEx.CreateMeasure();//获得文档的测量工具

2.测量方法

直接使用测量工具对象的Calculate方法,即可完成测量动作。


Measure SwMeasure
SwMeasure.Calculate(Entities);

参数Entities为实体数组,代表需要测量的实体对象集合,可以理解为如下图中选中的实体.

image.png

3.测量结果

Measure类提供了很多属性用于存储测量的结果值。对应我们交互过程中下图红框中的测量结果值。我们通过这些属性即可得到这些值。

image.png

image.png

4.测量步骤分解

a.选中需要测量实体-->获取测量实体集合

b.使用测量工具-->运行SwMeasure.Calculate(Entities)

c.查看测量结果-->利用Measure的属性获取相关测量结果值

实例分析1:

如下图所示,测量2个选中圆柱面的中心距。

image.png

代码示例:


public static void MeasureFace(ModelDoc2 Doc)
{
    ModelDocExtension DocEx = Doc.Extension;
    SelectionMgr SwSelMrg = Doc.SelectionManager;
    Measure SwMeasure = DocEx.CreateMeasure();
    DocEx.SelectByID2("", "FACE",-100/1000.0,60/1000.0,15/1000.0,false,-1,null,0);
    DocEx.SelectByID2("", "FACE", 100 / 1000.0, 60 / 1000.0, 15 / 1000.0, true, -1, null, 0);
    Face2 SwFace1 = SwSelMrg.GetSelectedObject6(1, -1);
    Face2 SwFace2 = SwSelMrg.GetSelectedObject6(2, -1);
    Entity[] ents = new Entity[] { (Entity)SwFace1, (Entity)SwFace2 };
    SwMeasure.Calculate(ents);
    System.Windows.MessageBox.Show("中心距:" + (SwMeasure.CenterDistance*1000).ToString().Trim()+"mm");
 }

运行结果:

image.png

实例分析2:

如下图所示,测量2条选中边线之间的信息。

image.png

代码示例:


public static void MeasureEdge(ModelDoc2 Doc)
{
     ModelDocExtension DocEx = Doc.Extension;
     SelectionMgr SwSelMrg = Doc.SelectionManager;
     Measure SwMeasure = DocEx.CreateMeasure();
     DocEx.SelectByID2("", "EDGE", 100 / 1000.0, 80 / 1000.0, 15 / 1000.0, false, -1, null, 0);
     DocEx.SelectByID2("", "EDGE", 0 / 1000.0, 30 / 1000.0, 30 / 1000.0, true, -1, null, 0);
     Edge SwEdge1 = SwSelMrg.GetSelectedObject6(1, -1);
     Edge SwEdge2 = SwSelMrg.GetSelectedObject6(2, -1);
     Entity[] ents = new Entity[] { (Entity)SwEdge1, (Entity)SwEdge2 };
     SwMeasure.Calculate(ents);
     StringBuilder sb = new StringBuilder("距离:" + (SwMeasure.Distance * 1000).ToString().Trim() + "mm\r\n");
     sb.Append("X距离:"+ (SwMeasure.DeltaX * 1000).ToString().Trim() + "mm\r\n");
     sb.Append("Y距离:" + (SwMeasure.DeltaY * 1000).ToString().Trim() + "mm\r\n");
     sb.Append("Z距离:" + (SwMeasure.DeltaZ * 1000).ToString().Trim() + "mm\r\n");
     System.Windows.MessageBox.Show(sb.ToString().Trim());
}

运行结果:

image.png

实例分析3:

如下图所示,测量一个顶点与一个圆柱面之间的信息。

image.png

代码示例:



public static void MeasurePointFace(ModelDoc2 Doc)

{

    ModelDocExtension DocEx = Doc.Extension;

    SelectionMgr SwSelMrg = Doc.SelectionManager;

    Measure SwMeasure = DocEx.CreateMeasure();

    DocEx.SelectByID2("", "FACE", 0 / 1000.0, 15 / 1000.0, 30 / 1000.0, false, -1, null, 0);

    DocEx.SelectByID2("", "VERTEX", 150 / 1000.0, 30 / 1000.0, 75 / 1000.0, true, -1, null, 0);

    Face2 SwFace = SwSelMrg.GetSelectedObject6(1, -1);

    Vertex SwVertex = SwSelMrg.GetSelectedObject6(2, -1);

    Entity[] ents = new Entity[] { (Entity)SwFace, (Entity)SwVertex };

    SwMeasure.Calculate(ents);

    StringBuilder sb

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空