C# SolidWorks二次开发 干涉检查

总体思路

基于.NET Framework控制台应用程序进行SolidWorks二次开发,选中输入零件,实现干涉检查功能。

使用SelectByID2方法,选中待检查零件,然后使用ToolsCheckInterference2方法,传入待检查零件,进行检测。

注意:如果出现无法选中的情况,可能是输入的零件名有问题,本文中零件命名规则为:零件名-sw软件中的序号(在sw软件中为零件名<序号>),之前使用2018年版本的SolidWorks做二次开发的命名规则为:零件名@装配体名,需要多尝试修改几次。

方法介绍

void ToolsCheckInterference2( 
   System.int NumComponents,
   System.object LpComponents,
   System.bool CoincidentInterference,
   out System.object PComp,
   out System.object PFace
)
NumComponents待检查的组件数
LpComponents待检查干涉的组件阵列
CoincidentInterference如果为 True,则将实体视为干涉,否则为False
PComp输出 发现干涉的组件阵列
PFace输出 发现干涉的面阵列

具体代码

        static void Main(string[] args)
        {
            string[] checkComp = { "part2-1", "part5-1" };
            InterCheck(checkComp);
            Console.Read();
        }

        // 对零件执行干涉检查
        public static bool InterCheck(string[] checkComp)
        {
            SldWorks swApp = (SldWorks)Marshal.GetActiveObject("Sldworks.Application");
            ModelDoc2 swModel = swApp.ActiveDoc;
            SelectionMgr swSelMgr = swModel.SelectionManager;
            SelectData selData = swSelMgr.CreateSelectData();
            AssemblyDoc swAssy = swModel as AssemblyDoc;

            bool checkstatus = false;
            object vIntCompArray = null;
            object vIntFaceArray = null;
            Component2[] compArray = new Component2[checkComp.Length];


            int nSelCount;
            bool boolstatus = false;

            if (swApp != null)
            {
                // 读取零件名
                swModel.ClearSelection();
                for (int i = 0; i < checkComp.Length; i++)
                {
                    // 选中零件
                    boolstatus = Global.swModel.Extension.SelectByID2(checkComp[i], "COMPONENT", 0, 0, 0, true, 0, null, 0);
                    Global.swSelMgr.AddSelectionListObject(checkComp[i], selData);
                }
                nSelCount = swSelMgr.GetSelectedObjectCount();
            }
            else
            {
                Console.WriteLine("SolidWorks is not connected!");
            }

            for (int i = 0; i < checkComp.Length; i++)
            {
                compArray[i] = swSelMgr.GetSelectedObjectsComponent2(i + 1);
            }
            // 干涉检查 
            swAssy.ToolsCheckInterference2(checkComp.Length, ObjectArrayToDispatchWrapper(compArray), checkstatus, out vIntCompArray, out vIntFaceArray);
            if (vIntCompArray == null && vIntFaceArray == null)
            {
                checkstatus = false;
                Console.WriteLine("不干涉");
            }
            else
            {
                checkstatus = true;
                Console.WriteLine("干涉");
            }
            return checkstatus;
        }
        public static DispatchWrapper[] ObjectArrayToDispatchWrapper(IEnumerable<object> objects)
        {
            return objects.Select(o => new DispatchWrapper(o)).ToArray();
        }

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# SolidWorks二次开发是指使用C#编程语言来扩展和定制SolidWorks软件的功能。下面是进行C# SolidWorks二次开发的步骤: 1. 环境配置: - 首先,确保您已经安装了SolidWorks软件和Visual Studio开发环境。 - 然后,安装SolidWorks API SDK。您可以在SolidWorks安装包中找到"SolidWorks API SDK.msi"文件,并按照安装向导进行安装。 2. 创建插件Addin: - 打开Visual Studio,并创建一个新的C#项目。 - 在项目中,添加对SolidWorks API的引用。您可以在项目的引用中添加SolidWorks.Interop.sldworks和SolidWorks.Interop.swcommands等引用。 - 创建一个类,并实现SolidWorks的事件接口,例如ISwAddin或ISwAddin2。 - 实现所需的功能,例如创建自定义工具栏、菜单或按钮,并实现其相应的事件处理程序。 3. 运行和调试: - 在Visual Studio中编译和生成项目。 - 将生成的插件文件(.dll文件)复制到SolidWorks的插件目录中,一般为"C:\ProgramData\SolidWorks\SOLIDWORKS 20XX\addins"。 - 启动SolidWorks软件,您应该能够看到您创建的自定义工具栏、菜单或按钮。 - 单击按钮或执行其他操作来测试和调试您的插件功能。 通过以上步骤,您可以开始使用C#编程语言进行SolidWorks二次开发,实现自定义的功能和工具,以满足您的需求。请确保在开发过程中参考官方文档和其他相关教程,以便更好地理解和掌握C# SolidWorks二次开发的技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值