C# SolidWorks 二次开发 API ---工程图尺寸信息的读取

工程图尺寸信息的读取

前提条件: 在打开的工程图选中一个尺寸
本文目标: 通过转换选择的尺寸为一个尺寸对象,获取该尺寸的值与公差。

选中一个尺寸
在这里插入图片描述

 private void btnGetDimensionInfo_Click(object sender, EventArgs e)
        {
            ISldWorks swApp = Utility.ConnectToSolidWorks();
            swApp.CommandInProgress = true;

            ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;

            SelectionMgr selectionMgr = (SelectionMgr)swModel.SelectionManager;

            //转换成尺寸显示对象
            var swDisplayDimension = (DisplayDimension)selectionMgr.GetSelectedObject6(1, 0);

            DisplayData displayData = (DisplayData)swDisplayDimension.GetDisplayData();

            //获取尺寸上的文字
            var anno = (Annotation)swDisplayDimension.GetAnnotation();

            //获取所在视图  ---如果是图纸,这里会报错。需要用OwnerType来判断
            var thisView = (View)anno.Owner;//

            var textwidth = displayData.GetTextInBoxWidthAtIndex(0);

            var textHeight = displayData.GetTextHeightAtIndex(0);

            // dat.GetLineCount 几条线
            var lineCount = displayData.GetLineCount();
            var lineAngle = displayData.GetTextAngleAtIndex(0);
            var linePoints = (double[])displayData.GetLineAtIndex(0);
            var linePoints2 = (double[])displayData.GetLineAtIndex(1);
            var textPoint = (double[])displayData.GetTextPositionAtIndex(0);

            var thisDimAng = lineAngle * 180 / Math.PI;

            //尺寸对象
            var swDimension = (Dimension)swDisplayDimension.GetDimension();

            //获取尺寸的公差
            var cruToleranceType = swDimension.GetToleranceType();
            var cruTolerance = swDimension.Tolerance;

            if (cruToleranceType == (int)swTolType_e.swTolBILAT)
            {
                cruTolerance.GetMaxValue2(out double ToleranceValueMax); //上公差

                cruTolerance.GetMinValue2(out double ToleranceValueMin);//下公差
            }

            var TextAll = swDisplayDimension.GetText((int)swDimensionTextParts_e.swDimensionTextAll);
            var TextPrefix = swDisplayDimension.GetText((int)swDimensionTextParts_e.swDimensionTextPrefix);
            var TextSuffix = swDisplayDimension.GetText((int)swDimensionTextParts_e.swDimensionTextSuffix);
            var CalloutAbove = swDisplayDimension.GetText((int)swDimensionTextParts_e.swDimensionTextCalloutAbove);
            var CalloutBelow = swDisplayDimension.GetText((int)swDimensionTextParts_e.swDimensionTextCalloutBelow);

            var relValue = Math.Round(swDimension.GetSystemValue2("") * 1000, 3).ToString();

            MessageBox.Show(relValue);
        }
上面是代码,有一些备注。

这是初学markdown写的, 源代码继续在码云或者github上拿。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
《Asuo二维绘控件v2.0》=============================================================================软件名称:《Asuo二维绘控件》软件版本: V2.0软件作者:asuo作者邮箱:asuo@263.net软件网站:http://www.asuo.com下载地址:http://www.asuo.com/down/as2d.rar 下载软件语言:vc++授权形式:(ActiveX控件)应用平台:win9x/me/2000/xp界面预览:http://www.asuo.com/as2d_active.htm软件简介:平面形控件,可以创建和编辑矢量形以及便捷的显示操作。 文字和尺寸标注;元素属性设置;长度、角度、面积的查询; DXF输出;提供交换文件和二次开发接口。适用于 CAD/CAM/GIS/GPS等相关形软件开发。软件价格:试用版本免费相关文档:--发布日期:2003.07.29============================================================================== 1.库文件清单: MFC42.DLL MSVCIRT.DLL MSVCRT.DLL ASBASE.DLL ASCSTR.DLL ASDRAW.DLL ASINTR.DLL ASKERN.DLL ASLAW.DLL ASOCX.OCX ASSPLINE.DLL2.控件注册: 控件注册,命令为: regsvr32 Asocx.ocx 解除注册: regsvr32 Asocx.ocx /u3.功能说明:选择:单击鼠标左键选择元素; 框选:在选择状态下,按住鼠标托动进入框选状态; 选择移动元素:在选择状态下,如果当前捕捉到元素,按住鼠标托动元素; 重画(REDRAW):刷新绘区域; 显示平移(PAN):移动视点,调整看位置; 框选放大(ZOOM):选择一个放大区域,需要点两点; 显示放大缩小:显示放大为1.2倍,显示缩小为0.8倍; 创建点:选点创建; 创建直线:两点创建直线; 圆心+圆上一点:需要两点创建; 两点圆:需要两点,此两点为圆上点且它们之间距离为直径; 3点圆:需三点,创建过三点的圆,三点共线时创建失败; 圆弧:圆心+起点+终点,需要三点,第一点为圆心,第二点为弧的起点,第三点为弧的终点,弧以逆时针方向; 半圆弧:类似两点圆,逆时针方向; 三点弧:需要三点,创建出过此三点的圆弧;逆时针方向; 椭圆:先给出长轴,然后给椭圆上一点; 样条:依次给出样条线的控制点,双击鼠标左键结束创建样条,样条线必须有三个以上的控制点; 矩形:给出矩形对角两点创建矩形; 删除:删除当前选择到的元素; 复制:复制当前选择到的元素; ...4.开发帮助: 如果用户需要进行特殊的功能扩充,请参考《用户开发手册 index.htm》

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Paine Zeng

如果对有帮助,请我喝咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值