在自动化操作Solidworks零件,装配体,工程图时,都会频繁使用的选择的方法。基于上一文《Solidworks文档操作--草图几何关系与尺寸》的代码实例,在添加草图几何关系时,需要先选中草图元素。本文我们一起来看下几个较为常用的选择方法。
在Solidworks API中最常用的选择方法有2类:
类型一:通用型选择,其中参数Name, Type, X, Y, Z主要用于确定选择对象。
bool value= ModelDocExtension.SelectByID2(Name, Type, X, Y, Z, Append, Mark, Callout, SelectOption)
类型二:必中型
Object.Select(Append)
Object.Select2(Append,Mark)
Object.Select3(Append,Mark,Callout)
Object.Select4(Append,SelectData)
通用型SelectByID2主要用于场合是已经被选中对象的名称,或能通过空间坐标唯一选中一个指定类型的对象。
必中型主要用于已知被选中的对象,并且被选中的对象拥有Select方法,可以很方便地通过这个方法选中该对象。
一、被选对象相关参数
如下图,一个矩形草图,我们需要选中图中的蓝线:
蓝线在Solidworks中属于草图段(SKETCHSEGMENT)类型,在Solidworks内部该线段的名称Line8
红点A为仅通过蓝色线段的点。
红点B为同时通过蓝色线段与橘色线段的点
而蓝色线段本身,为草图段对象SketchSegment的一个实例,实例名为SwLine。
1)通过ModelDocExtension.SelectByID2方法选中蓝色线段,可以使用如下两种方法:
A.通过点A的坐标选中蓝色线段,假设点A的坐标为Xa,Ya,Za
bool value= ModelDocExtension.SelectByID2("", "SKETCHSEGMENT", Xa, Yb, Zc, Append, Mark, Callout, SelectOption)
注意:无法通过点B的坐标选中蓝色线段,因为点B同时在蓝色线段与橘色线段上,无法保证唯一选中一条线段。
B.通过草图段的名称Line8选中蓝色线段
bool value= ModelDocExtension.SelectByID2("Line8", "SKETCHSEGMENT", 0, 0, 0, Append, Mark, Callout, SelectOption)
SelectByID2方法可以通过坐标点或者对象名字获得对象(二选一即可)。
2)通过草图段对象的Select方法直接选中。
SwLine.Select(false)
二、Append参数
无论在ModelDocExtension.SelectByID2方法中,还是在Object.Select方法中,都有一个参数Append,代表是否追加.
如下图,Solidworks每个文档中都有一个选择集合列表,记录当前被选中的所有内容。下图中选择集合中已经存在了线段1,圆弧2,现在要选择线段2:
若使用Append=true,则选择完线段2后,选择集合中一种有3个对象。
若使用Append=false,则选择线段2时,将先清空选择集合中的所有内容,最终选择集合中只有1个对象。
三、MARK参数
在ModelDocExtension.SelectByID2方法中,还是在Object.Select2与Object.Select3方法中,都有一个参数Mark,用于标记被选中的对象。
MARK参数一般不起作用,主要用于部分如生成特征时候,需要同时选中多个对象时,给这些对象做标记,具体标记值多少,需要根据相关方法的说明进行设置。
如下图,创建一个扫描特征,需要选中一个轮廓与一个路径,此时选择中的Mark参数就会起作用,而具体Mark值的给定需要结合使用场景,本图中就要按照扫描特征创建的要求给定相应选择对象的Mark值,以帮助扫描特征知道哪个选中对象是轮廓,哪个选中对象是路径。
ModelDocExtension.SelectByID2("草图2", "SKETCH", 0, 0, 0, false, 1, null, 0)
ModelDocExtension.SelectByID2("草图1", "SKETCH", 0, 0, 0, True, 4, null, 0)
如下图,以扫描特征为例,其使用方法中有说明路径对象选择时,Mark为4
四、SelectData参数
Object.Select4中存的参数SelectData就是选择参数集合。可以通过ModelDoc2::SelectionManager属性获得选择管理器对象,再通过SelectionMgr::CreateSelectData方法创建SelectData对象。SelectData中含有被选择对象的一些数据。
总结
当我们已知对象的时候,最好直接使用Select~Select4方法(只要对象提供此方法),这样可以避免去确认选择对象的名称或计算需要选中该对象的坐标点。
若我们可以很明确地知道选择对象的名称,或很容易通过计算获得选择需要使用的坐标点时候,可以采用SelectByID2的方法。
以上是Solidworks中比较常用的两种选择方法的对比,随着后续学习的深入,还会给大家带来其他的选择方式。
如下图为本文的示例程序(基于上一文《Solidworks文档操作--草图几何关系与尺寸》的实例),源码可上我的Github下载。操作步骤可见文章《公众号源码Github分享库》, 实例序号7