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 = 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

在这些实例中还是用到了上一文《选择管理器SelectionMgr》中的相关知识来获得测量实体集合。

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

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 77,946评论 1 169
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 26,265评论 1 142
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 29,362评论 0 100
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 16,287评论 0 86
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 21,542评论 0 144
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 17,714评论 0 87
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 10,515评论 2 161
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 9,917评论 0 77
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 8,437评论 5 111
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 11,699评论 0 128
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 10,468评论 1 124
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 11,267评论 0 127
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 6,122评论 0 17
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 8,922评论 2 114
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 12,006评论 3 121
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 7,762评论 0 3
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 7,980评论 0 76
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 12,445评论 2 132
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 13,111评论 2 130

推荐阅读更多精彩内容