SolidWorks二次开发API (C#)—删除草图中的错误关系

SolidWorks二次开发API (C#)—删除草图中的错误关系

下面这个图有没有见过?


是不是好像在哪见过,而且还比较讨厌?
这就是传说中的关系有问题了,这个关系就是大家常说的“关系”。自己想想这个关系重要不重要。

好了,正文到此结束。 大家耗子尾汁…


下面是菜单:

  1. 编辑草图
  2. 获取草图中的关系
  3. 删除错误的关系

首先打开我精心设计的一个零件:
大概用了十多年时间吧,不要问:

然后进行关键代码的编写:

不好意思 ,上面贴错了。。。

    /// <summary>
        /// 删除草图中的错误关系
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDeleteRelation_Click(object sender, EventArgs e)
        {
            SldWorks swApp = PStandAlone.GetSolidWorks();

            var swModel = swApp.IActiveDoc2;

            //请先打开 D:\09_Study\CSharpAndSolidWorks\CSharpAndSolidWorks\TemplateModel\57_DeleteRelation.sldprt

            swModel.Extension.SelectByID2("Sketch11", "SKETCH", 0, 0, 0, false, 1, null, 0);
            swModel.EditSketch();

            swModel.ClearSelection2(true);

            var swSketch = swModel.IGetActiveSketch2();

            var skRelMgr = swSketch.RelationManager;

            var vRel = (object[])skRelMgr.GetRelations((int)swSketchRelationFilterType_e.swDangling + (int)swSketchRelationFilterType_e.swOverDefining);

            if (vRel != null)
            {
                for (int j = vRel.Length - 1; j >= 0; j--)
                {
                    var swSkRel = (SketchRelation)vRel[j];

                    //这一句是删除
                    skRelMgr.DeleteRelation(swSkRel);

                    //这一句是压缩掉 swSkRel.Suppressed = true;
                }
            }


            swModel.ForceRebuild3(true);




        }

执行还我漂漂拳之后 ,世界终于安静了。



如果真设计成这样,估计饭碗都保不住了。

这只是提供了一个思路,大家别想多了。

所有源代码获取:
https://gitee.com/painezeng/CSharpAndSolidWorks

https://github.com/painezeng/CSharpAndSolidWorks

posted @
2022-06-17 11:05 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源