SolidWorks二次开发---装配体中打开零件时保持方向

发布于:2023-01-04 ⋅ 阅读:(229) ⋅ 点赞:(0)

不出意外,这是8月份最后一篇博文了。
其实代码在gitee上提交了很久了,一直没写博文。
前一段时间,在solidworks看到了这个小图标,这个功能是在装配体界面上查看零件预览,它和单独打开零件时的区别在于,在这里预览的时候零件的方向和选中时一样。
在这里插入图片描述
在这里插入图片描述
零件单独打开时是这样的状态,这个状态是零件保存时的方向,和资源管理器上预览图标显示一致。
在这里插入图片描述
今天要做的功能,就是做个小功能,让零件单独打开的时候保持和装配体右侧预览的方向一样。
(大家可以自己想一想,要怎么实现。)

-------------------------------------------------------分-----------------分-----------------------------------------------------------

这样有某些特定情况下,会更方便确定我要修改的位置。
在这里插入图片描述
先大概说一下原理,就是在装配环境下先获取选中零件的变换矩阵,然后打开零件之后,把当前视角的矩阵变换为装配体相对的方向。
上代码:

 private void btnKeepView_Click(object sender, EventArgs e)
        {
            var swApp = PStandAlone.GetSolidWorks();

            var swModel = (ModelDoc2)swApp.ActiveDoc;                     

            var oldView = swApp.IActiveDoc2.IActiveView;

            var oldAsmOrientation = oldView.Orientation3; //矩阵向量
            var oldAsmsc = oldView.Scale2; //比例

            var swModelAsm = (AssemblyDoc)swModel; //获取当前零件
                                 
            var baseComp = swModel.ISelectionManager.GetSelectedObjectsComponent3(1, -1);

            var PartTransform2 = baseComp.Transform2;//零件与装配体坐标完全重合 变换到安装位置的变换
                           
            baseComp.Select(false);
            
            swModelAsm.OpenCompFile();

            swModel = (ModelDoc2)swApp.ActiveDoc;

            var newView = swApp.IActiveDoc2.IActiveView;

            newView.Orientation3 = PartTransform2.IMultiply(oldAsmOrientation);
           
            //newView.Scale2 = oldAsmsc;  

            swModel.ViewZoomtofit();

            newView.GraphicsRedraw(null);

        }

代码很简单,但是解释起来也有点麻烦,因为我的数学也不好,我就不解释了,怕误导大家。

在这里插入图片描述
在装配中选中零件后,执行命令后,零件被打开,并自动切换和装配一样的相对视角。
在这里插入图片描述
好,就写这么多了。将就看吧。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到