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上拿。
posted @
2020-04-20 14:07
painezeng 阅读(
272) 评论(
0)
编辑
收藏
举报