C# Solidworks二次开发 输入零件名选中零件

实现功能

基于.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!");
            }
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值