SolidWorks二次开发官方教程-API Fundamentals学习分享

SolidWorks二次开发官方教程-API Fundamentals学习分享

今天618,送大礼!
间断的花了快两个月时间,终于把官方的API基础知识学习完了。
下面是链接和截图:

API Fundamentals https://my.solidworks.com/training/elearning/68/api-fundamentals
这个访问需要正版Solidworks订阅用户。

文章目录

课程目录:

  1. Course Modules
  2. eCourse Overview
  3. Course Introduction
  4. Using the Macro Recorder (1 of 2)
  5. Using the Macro Recorder (2 of 2)
  6. Understanding the API Object Model (1 of 2)
  7. Understanding the API Object Model (2 of 2)
  8. Setting System Options and Document Properties
  9. Automating Part Design
  10. Automating Assembly Design
  11. Automating Drawing Development
  12. Using Selection and Traversal Techniques
  13. Adding Custom Properties and Attributes
  14. Installing and Using the SOLIDWORKS API SDK (1 of 2)
  15. Installing and Using the SOLIDWORKS API SDK (2 of 2)
  16. Customizing the SOLIDWORKS User Interface (1 of 2)
  17. Customizing the SOLIDWORKS User Interface (2 of 2)
  18. Understanding Notifications

我的学习PPT记录 截图:



官方提供的代码与练习资料:
我把我的学习记录与资料放在了新的开源库里:

下载地址:

https://gitee.com/painezeng/api-fundamentals

里面包括文字,教材与 对应的基本上每页的PPT。

大家可以去这里拿。

学习总结:

这是官方提供的原生的视频教程,市面上的官方教程也是参考这个来编写的。
这里面基本上是从零基础讲解的,很多基础知识都有涉及,包括api帮助的使用,宏特征,对象关系 等等。
当然也是全英文的,里面有一些跟着视频动手操作的交互过程,用来加深印象。
通过这一次系统的学习官方的API基础知识,我也是收获了不少。

posted @
2021-06-18 08:42 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

SolidWorks二次开发-Z轴直线全部倒圆角

SolidWorks二次开发-Z轴直线全部倒圆角

做机械加工的小伙伴肯定都知道,像如下这个图加工的时候,我们肯定要倒些圆角 。
今天我们来做一个小功能,自动倒圆角 。

文章目录

思路:

	通过遍历一边,根据边的方向来判断是否需要倒圆角。 这个示例我们就要以根据边线的方向是沿Z轴的来判断这条边是要倒圆角的。

代码:

//遍历Z轴方向的直线
            SldWorks swApp = PStandAlone.GetSolidWorks();//连接solidworks
            swApp.CommandInProgress = true; //因为是exe测试,所以启动该选项,加快速度
            ModelDoc2 swModel = default(ModelDoc2);
            ModelDocExtension swModelDocExt = default(ModelDocExtension);
            SelectionMgr swSelMgr = default(SelectionMgr);
            Feature swFeature = null;

            swModel = (ModelDoc2)swApp.ActiveDoc; //获取当前零件

            swModelDocExt = (ModelDocExtension)swModel.Extension;

            //选择所有,零件中是选中所有的边。 swModelDocExt.SelectAll();

            swSelMgr = (SelectionMgr)swModel.SelectionManager;

            var edgeCount = swSelMgr.GetSelectedObjectCount();  //获取 已经选中的边数

            Debug.Print("总边数:" + edgeCount);

            int faceidStart = 10000;  //设定一个面的起始id,用于识别该面是否已经被获取到。

            //List<Face2> face2sList001 = new List<Face2>();
            //List<Face2> face2sList002 = new List<Face2>();

            List<Edge> ZEdges = new List<Edge>();

            for (int i = 1; i <= edgeCount; i++)
            {
                var thisEdge = (Edge)swSelMgr.GetSelectedObject(i);

                var swCurve = (Curve)thisEdge.GetCurve();

                var thisCurveP = thisEdge.GetCurveParams3();

                if (swCurve.IsLine() == true)
                {
                    var lineV = (double[])swCurve.LineParams;

                    Debug.Print($"Root Point-> X {lineV[0].ToString()} ,Y {lineV[1].ToString()} ,Z {lineV[2].ToString()}");
                    Debug.Print($"Direction Point-> X {lineV[3].ToString()} ,Y {lineV[4].ToString()} ,Z {lineV[5].ToString()}");

                    if (lineV[3] == 0 && lineV[4] == 0)
                    {
                        ZEdges.Add(thisEdge);
                    }
                }
            }

            swModel.ClearSelection();//清除掉所有选择的边

            // 重新选中 需要处理掉0.001的面
            for (int i = 0; i < ZEdges.Count; i++)
            {
                var faceEntity = (Entity)ZEdges[i];

                // faceEntity.Select4(true, selectData);

                faceEntity.SelectByMark(true, 1);
            }
            double AsyRadius1;
            double AsyRadius2;
            double AsyRadius3;
            double AsyRadius4;
            bool boolstatus;
            double[] radiis = new double[2];
            object radiiArray0;
            object conicRhosArray0;
            object setBackArray0;
            object pointArray0;
            object pointRhoArray0;
            object dist2Array0;
            object pointDist2Array0;

            conicRhosArray0 = 0;
            setBackArray0 = 0;
            pointArray0 = 0;
            pointRhoArray0 = 0;
            pointDist2Array0 = 0;

            var FilletFea = (Feature)swModel.FeatureManager.FeatureFillet3(195, 0.002, 0.010, 0, (int)swFeatureFilletType_e.swFeatureFilletType_Simple, (int)swFilletOverFlowType_e.swFilletOverFlowType_Default, (int)swFeatureFilletProfileType_e.swFeatureFilletCircular, 0, 0, 0,
            (setBackArray0), (pointArray0), (pointDist2Array0), (pointRhoArray0));
            FilletFea.Name = "AutoFillet";

结果:

小结:

这只是一个简单的功能,实际情况肯定是要复杂 很多,大家可以思考 一下,比如内边和外边如何判断?  

posted @
2021-06-11 10:36 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

SolidWorks PDM二次开发—学习线路

SolidWorks PDM二次开发—学习线路

最近比较忙,所以博客的频率更新不太高。
Solidworks二次开发入门基本结束了,后面有新的知识点我还会持续更新的。

下面这个图列了个Solidworks PDM Professional(Solidworks EPDM)的二次开发大纲,后面有机会慢慢带大家入门。


SolidWorks PDM 二次开发

前提

  • 编程语言基础:C# / VB.net /VBA 基础,以及面向对象编程
  • 窗体应用程序/控制台/DLL
  • 方法/属性/事件/类/调试/集合…
  • SolidWorks PDM Professional 客户端
  • 本机管理员帐号
  • SolidWorks PDM管理员工具权限
  • Visual Studio 2017或以上(Community即可)
  • SolidWorks 使用基础
  • MSSQL查询

基础

  • PDM对象结构介绍

  • 学习方法
    API 帮助
    官方论坛

  • 开发方法
    Dispatch
    EXE
    DLL

  • Dispatch示例

  • 以序列号修改文件名

  • 与PDM系统连接
    输入用户名,密码,以及登陆库名称
    自动登陆-> 已经登陆的直接获取,未登陆的弹窗登陆

  • 遍历本地库名称

  • 获取文件的信息
    根目录与文件夹
    名称,版本 状态。。。
    通f过路径获取文件对象
    通过搜索获取文件

  • 遍历文件夹中的文件

  • 检入 检出 取消检出 文件

  • 变量

     	遍历变量名
     	文件卡变量
     		读取
     		修改
    
  • 插件的创建

  • 插件的调试

  • 增加菜单

     	右键调用
     	文件卡中调用
    
  • 读取文件引用

  • 获取 装配体中的 BOM 表

  • 工程图中的材料明细表

  • 批量操作
    检出
    写属性

  • 字典的使用

  • 事件
    状态
    预提交
    流程

  • 文件链接

  • 获取文件最新版本

  • 缓存

  • 从数据库获取变量值

  • 利用代码增加变量

  • 获取指定版本的变量值

posted @
2021-06-01 08:36 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源