C# CAD SelectionFilter下TypedValue数组使用方式
作者:李建军
这篇文章主要介绍了C# CAD SelectionFilter下TypedValue数组使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
TypedValue数组使用方式
SelectionFilter是用于过滤AutoCAD实体的类,在AutoCAD中,可以使用它来选择具有特定属性的实体。
构造SelectionFilter对象时,需要传入一个TypedValue数组,它用于定义选择规则。
在TypedValue数组中,每个元素表示一个选择条件,它由两个参数组成:DxfCode和值。
DxfCode是一个整数枚举值,用于表示选择条件的类型,而值则是与之对应的具体属性值。
根据不同的需求,可以定义不同的TypedValue对象,并将它们组合成一个数组,从而实现各种自定义的选择规则。
常用的DxfCode枚举值及其对应的属性值
DxfCode.Start(0)
:选择开始实体DxfCode.End(1)
:选择结束实体DxfCode.Text(1)
:选择包含指定文本的实体DxfCode.BlockName(2)
:选择位于指定块名称的实体DxfCode.LayerName(8)
:选择位于指定图层的实体DxfCode.Color(62)
:选择指定颜色的实体DxfCode.LinetypeName(6)
:选择位于指定线型的实体DxfCode.LinetypeScale(48)
:选择具有指定线型比例的实体DxfCode.LineWeight(370)
:选择具有指定线宽的实体DxfCode.EntityHandle(5)
:选择具有指定句柄的实体DxfCode.XCoordinate(10)
:选择具有指定X坐标的实体DxfCode.YCoordinate(20)
:选择具有指定Y坐标的实体DxfCode.ZCoordinate(30)
:选择具有指定Z坐标的实体DxfCode.Radius(40)
:选择具有指定半径的实体DxfCode.Diameter(41)
:选择具有指定直径的实体DxfCode.Angle(50)
:选择具有指定角度的实体DxfCode.Elevation(38)
:选择具有指定高度的实体DxfCode.Thickness(39)
:选择具有指定厚度的实体DxfCode.TextStyleName(7)
:选择使用指定文本样式的实体DxfCode.TextHeight(40)
:选择具有指定文本高度的实体DxfCode.TextRotation(50)
:选择具有指定文本旋转角度的实体DxfCode.TextString(1)
:选择包含指定字符串的实体DxfCode.ObjectId(330)
:选择具有指定对象ID的实体
// 选择颜色为1(红色)且位于图层“Layer1”的线段 TypedValue[] values = new TypedValue[] { new TypedValue((int)DxfCode.Color, 1), new TypedValue((int)DxfCode.Start, "LINE"), new TypedValue((int)DxfCode.LayerName, "Layer1") };
下面是一个示例代码
演示如何实现选择图层名为"权利人"和"预编号"
并且类型为TEXT的实体:
SelectionFilter innerFilter = new SelectionFilter(new TypedValue[] { new TypedValue((int)DxfCode.Operator, "<or"), new TypedValue((int)DxfCode.LayerName, "权利人"), new TypedValue((int)DxfCode.LayerName, "预编号"), new TypedValue((int)DxfCode.Start, "TEXT"), // 实体类型为TEXT new TypedValue((int)DxfCode.Operator, "or"), new TypedValue((int)DxfCode.End, "or"), }); // 使用多边形窗口选择方式让用户选择位于外部多段线内的实体 PromptSelectionResult innerSelRes = ed.SelectWindowPolygon(outerPoints, innerFilter);
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。