C# SolidWorks 二次开发 API—给零件加材质

C# SolidWorks 二次开发 API—给零件加材质

这两天比较忙,在整理一份api帮助的功能翻译清单.

今天看一下如何获取零件的材质 以及修改材质.

我们先打开一个零件,如下图:

 

 

        private void btn_SetMaterial_Click(object sender, EventArgs e)
        {
            ISldWorks swApp = Utility.ConnectToSolidWorks();

            ModelDoc2 swModel = swApp.ActiveDoc;
            ModelDocExtension swModelDocExt = (ModelDocExtension)swModel.Extension;
            string swMateDB = "";
            string tempMaterial = "";
            //获取现有材质
            tempMaterial = ((PartDoc)swModel).GetMaterialPropertyName2("", out swMateDB);

            MessageBox.Show($"当前零件材质为 {swMateDB} 中的 {tempMaterial} ");

            string configName = null;
            string databaseName = null;
            string newPropName = null;
            configName = "默认";
            databaseName = "SOLIDWORKS Materials";
            newPropName = "Beech";
            ((PartDoc)swModel).SetMaterialPropertyName2(configName, databaseName, newPropName);

            tempMaterial = ((PartDoc)swModel).GetMaterialPropertyName2("", out swMateDB);

            MessageBox.Show($"修改之后  当前零件材质为 {swMateDB} 中的 {tempMaterial} ");
        }

 

效果如下:

posted @
2019-10-28 21:56 
painezeng  阅读(
112)  评论(
0
编辑 
收藏 
举报

C# 内部共享链接小工具

C# 内部共享链接小工具

企业内部各个部分用来共享的文件夹太多,找起来也麻烦。所以最近花了几天时间弄了一个内部共享链接的小工具。

昨天增加了全局快捷键的功能。在增加之后可以设定相关快捷键。

目前代码已经共享:https://gitee.com/painezeng/Link_Public

虽然网上这类工具也不少,但是无法再扩展。 并且我想针对一些标准件可以快速的打包到本地路径下(公司采用的是标准件网络盘只读方式管理,有专门的人管理维护)。因为暂时没有上PDM系统,所有文件夹的很多方面还是可以改进的。

我们是定制化产品的公司,所以有大量的项目资料夹。

小工具界面如下:做为一个小工具条显示在最顶端,需要找标准或者文件夹的时候就可以进去搜索。

采用的数据库管理,可以大家同时使用。(采用了是sqlSuger ORM框架)

同时针对不同的文件做了不同的操作,可以打开或者浏览到文件夹中。

目前是每个使用的人都可以增加链接,可以设定为私有链接,其它用户看不到。

工具会记录链接的点击次数,点击的次数越多,排名就会越靠前。

此工具应该解决了以下问题:

新同事对这些共享盘不熟悉,可以直接搜索出来。

可以设置显示名称,并且可以做一些备注。

设计标准,以及标准件的快速查看与打包。

还做了直接调用系统右键菜单的功能:

 

 

 

posted @
2019-10-22 16:15 
painezeng  阅读(
83)  评论(
0
编辑 
收藏 
举报

C# SolidWorks 二次开发 API — 创建Pane页面(预览BOM)

C# SolidWorks 二次开发 API — 创建Pane页面(预览BOM)

今天讲一下怎么在Solidworks界面中显示出窗体界面。

今天的功能是在右边提前预览BOM 清单,功能比较简单。预览图如下:

由于不是插件的形势,所以效率不是太高,如果大家想速度快,请自己改成插件形式,其实更好的方法是做成插件,可以在打开装配体之后自动预览BOM, 时间关系,这里仅作为示例。

这里面涉及到的功能大概有,遍历装配体,遍历零件属性,组织层级结构等等。

完成后效果如下图:

下面只显示了关键的页面加载代码,实际的代码请参考源码: 

https://gitee.com/painezeng/CSharpAndSolidWorks

 private void btn_Pane_Click(object sender, EventArgs e)
        {
            //注意: 这里只是显示自己的窗体到solidworks中,目前还是走的exe的方式 .
            //真正开发的时候应该在DLL中加入,这样速度会快很多.  exe读bom需要40s dll 只需要3秒左右.
            //获取当前程序所在路径
            string Dllpath = Path.GetDirectoryName(typeof(MyPane).Assembly.CodeBase).Replace(@"file:\", string.Empty);

            var imagePath = Path.Combine(Dllpath, "bomlist.bmp");

            ISldWorks swApp = Utility.ConnectToSolidWorks();

            string toolTip;

            toolTip = "BOM List";

            //创建页面
            if (taskpaneView != null)
            {
                taskpaneView.DeleteView();
                Marshal.FinalReleaseComObject(taskpaneView);
                taskpaneView = null;
            }

            taskpaneView = swApp.CreateTaskpaneView2(imagePath, toolTip);

            MyPane myPane = new MyPane(swApp);

            myPane.Dock = DockStyle.Fill;
            // myPane.Show();

            //在页面中显示窗体(嵌入)

            taskpaneView.DisplayWindowFromHandlex64(myPane.Handle.ToInt64());
        }

如果大家有什么问题,可以留言给我。

posted @
2019-10-22 14:32 
painezeng  阅读(
163)  评论(
0
编辑 
收藏 
举报

C# SolidWorks 二次开发 API — 插件Add-In的自动更新

C# SolidWorks 二次开发 API — 插件Add-In的自动更新

写了程序,难免需要更新。所以大家都各自有各自的更新方案。

一般的.net可执行程序可以通过oneclick发布,从而自己更新,在每次用户打开时完成更新,

但是插件的更新有个问题,不能热更新。因为Solidworks在加载完dll之后 无法完全释放,所以无法直接替换。

所以一般的做法是在程序加载完成之后,提示用户有更新,这样就会要求用户必须重启一次Soldiworks.

—————————————————————————————————————————————————–

目前我的做法是创建一个新的Soldiworks插件,用于更新。需要注意的是要保证这个更新程序被solidworks先于功能的DLL加载。

具体我也没有研究它是基于名字还是基于GUID,至少我测试是能用的。

然后就需要在Update.dll中写具体更新的过程了。

需要在实体这个类的时候就去更新,这时solidworks只是加载了这个update.dll 

Tool.dll是还没有加载到内存的,所以这个时候是可以替换的。

此时是基于网络或者局域网都可以实现更新。

这样用户就会在每次重新开启Solidworks的时候实现了更新。

 

posted @
2019-10-18 13:20 
painezeng  阅读(
151)  评论(
0
编辑 
收藏 
举报

C# SolidWorks 二次开发 API — 另一种方式插件Add-In

C# SolidWorks 二次开发 API — 另一种方式插件Add-In

上一篇介绍了使用solidworks自带帮助的模板来创建插件。今天来介绍github上一个框架,使用它来创建插件似乎更方便易懂。

地址是:https://github.com/codestackdev/swex-addin

我们先下载zip压缩包,然后解压。用VS打开 swex-addin.sln 

然后重建项目,nuget会自动恢复引用 。

然后就可以编辑 SwSampleAddIn.cs类中的信息了。

这个是一个例子,里面包含了各种事件以及命令。要弄懂还是要一些功底的。

调试的话可以直接在AddInExample中调试中配置Solidworks的路径,并设置为默认启动项目,然后启动调试。

启动成功之后新建一个零件,即会出现一些信息,你可以代码中找到。

界面上也出现了:

大家可以参考它的github或者网站自己研究,有很多学习的地方。

posted @
2019-10-17 12:46 
painezeng  阅读(
153)  评论(
0
编辑 
收藏 
举报

C# SolidWorks 二次开发 API—创建插件Add-In

C# SolidWorks 二次开发 API—创建插件Add-In

在新建项目时选择SwCSharpAddin

如果没有这一项,可以在把swcsharpaddin.zip放到对应的模板目录下.

https://download.csdn.net/download/zengqh0314/12182239

一般在安装过电脑上都会有这个文件,如果实在找不到可以去网上搜索.

SolidWorks API SDK.msi这个里面有: 可以利用下面的命令解压出来 msiexec /a “SolidWorks API SDK.msi” /qb TARGETDIR=”d:\”

在上面输入自己想要的命字之后 .项目会自动创建,并加好引用.

双击swAddin.cs查看内容.

 这里会自动做了一些注释:

在调试选项中确认使用的sldworks文件位置.点击启动进行调试.(注意Visual Studio需要用管理员权限启动)

这里会自动启动Solidworks, 手动新建一个零件 ,即可发现新多了菜单 .

然后下一步就是参考这个Addin实例 去修改成自己想要的界面了.

 

 

 

posted @
2019-10-15 21:43 
painezeng  阅读(
234)  评论(
0
编辑 
收藏 
举报