C# SolidWorks 二次开发 API --- 包围框(Bounding Box)

很多情况下我们都要获取零件的尺寸,用来包装. 在2018版之前,solidworks提供了GetBox这个函数来获取相关数据.

但是默认获取的都是零件坐标系方向上的,当然特定情况下我们也是可以通过旋转零件来获取最小空间上的包装尺寸.

在2018版中,Solidworks提供了一个自带的BoundingBox 新功能.它默认显示的就是空间上的最小方向,最好的一点就是它会随着零件的修改自动更新.虽然测试下来有一些bug.但是平时使用没有问题.

提示下: 装配体中没有这个功能,而之前版本中提供的装配体的那个GetBox尺寸不准确,要获取精确的包装箱大小,可以先把装配体存成一个零件,再通过此方法来获取大小.

上代码:

 private void btnBounding_Click(object sender, EventArgs e)
        {
            //首先请打开一个零件.

            ISldWorks swApp = Utility.ConnectToSolidWorks();

            ModelDoc2 swModel = swApp.ActiveDoc;

            FeatureManager featureManager = swModel.FeatureManager;

            PartDoc partDoc = (PartDoc)swModel;
            //通过特征名字获取特征
            Feature feature = partDoc.FeatureByName("Bounding Box");
            int longstatus;
            if (feature == null)//特征为null时将创建Bounding Box

            {
                feature = featureManager.InsertGlobalBoundingBox((int)swGlobalBoundingBoxFitOptions_e.swBoundingBoxType_BestFit, true, false, out longstatus);
            }

            // 显示 Bounding Box sketch
            var b = swModel.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swViewDispGlobalBBox, true);

            //获取自动生成的属性值
            string str;
            string str2;
            string str3;
            string str4;
            IConfiguration configuration = swModel.GetActiveConfiguration();
            CustomPropertyManager manager2 = swModel.Extension.get_CustomPropertyManager(configuration.Name);

            manager2.Get3("Total Bounding Box Length", true, out str, out str2);
            manager2.Get3("Total Bounding Box Width", true, out str, out str3);
            manager2.Get3("Total Bounding Box Thickness", true, out str, out str4);

            swApp.SendMsgToUser($"size={str2}x{str3}x{str4}");
        }
发布了51 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zengqh0314/article/details/102464384
今日推荐