实现功能
基于.NET Framework控制台应用程序进行SolidWorks二次开发,实现输入零件名,在软件中选中零件。
注意:(1)进行SolidWorks控制台程序二次开发不能使用.NET Core,有一些方法会无法调用
(2)添加SolidWorks引用路径:安装盘:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist
总体思路
使用SelectByID2方法,传入零件名数组,进行零件选中;也可以在控制台中输入,使用ReadLine然后Split,形成零件名数组,此处选择直接传入。
注意:如果出现无法选中的情况,可能是输入的零件名有问题,本文中零件命名规则为:零件名-sw软件中的序号(在sw软件中为零件名<序号>),之前使用2018年版本的SolidWorks做二次开发的命名规则为:零件名@装配体名,需要多尝试修改几次。
方法介绍
System.bool SelectByID2(
System.string Name,
System.string Type,
System.double X,
System.double Y,
System.double Z,
System.bool Append,
System.int Mark,
Callout Callout,
System.int SelectOption
)
Name:待选中对象名称
Type:待选中对象类型
X、Y、Z:X、Y、Z选择位置,可以填0
Append:
如果是True - ①对于未被选中的对象,实体追加到当前选择列表;②对于已经被选中的对象,实体被移出当前选择列表。
如果是False - ①对于未被选中的对象,清除当前选择,然后将实体放在列表中;②对于已经被选中的对象,当前选择列表保持不变。
Mark:要用作标记的值,此值由需要顺序选择的其他函数使用,可以填0
Callout:指向关联标注的指针,可以为空
SelectOption:swSelectOption_e中定义的选择选项
具体代码
public static void SelectComponent()
{
string[] selComp = { "part2-1", "part3-1" };
int nSelCount;
bool boolstatus = false;
SldWorks swApp = (SldWorks)Marshal.GetActiveObject("Sldworks.Application");
ModelDoc2 swModel = swApp.ActiveDoc;
SelectionMgr swSelMgr = swModel.SelectionManager;
SelectData selData = swSelMgr.CreateSelectData();
if (swApp != null)
{
swModel.ClearSelection();
for (int i = 0; i < selComp.Length; i++)
{
Debug.WriteLine(selComp[i].ToString());
boolstatus = swModel.Extension.SelectByID2(selComp[i], "COMPONENT", 0, 0, 0, true, 0, null, 0);
swSelMgr.AddSelectionListObject(selComp[i], selData);
}
nSelCount = swSelMgr.GetSelectedObjectCount();
Debug.WriteLine(nSelCount);
if (nSelCount != 0) { Console.WriteLine("Successfully selected!"); }
}
else
{
Console.WriteLine("SolidWorks is not connected!");
}
}