SolidWorks二次开发教程:深入解析文档操作与设置技巧

2026-02-08 0 815

在现代开发活动中,项目仓库访问及其相关操作构成了各项工作的基础。这其中包含了不少需要特别注意的地方,这些问题是大家普遍关注的焦点。

项目仓库访问初体验

PM> Install-Package Du.SolidWorks -Version 0.1.1

启动项目仓库访问可能遇到困难。比如,不同仓库可能有各自的权限配置。某公司项目就设置了多层权限,一般员工只能查阅部分资料。因此,我们得事先弄清楚权限规定。另外,网络状况也会影响访问。在信号不佳的地方,比如偏远山区的临时办公地点,访问可能会变得缓慢,甚至完全无法进行。

为了顺畅地进入项目仓库,掌握其具体位置和登录方法等基本信息是必须的。每个项目仓库都有各自独特的网址,而且登录时可能需要通过账号密码或数字证书进行身份验证。

在线文档查看有讲究

首先,我们要关注在线文档查阅时出现的版本差异问题。比如,文中提到的2016年版帮助文档,其中包含了一些已经过时的API。若完全依照旧版文档的指导,可能会遇到无法执行的情况。在具体的项目实施中,团队成员可能同时使用新旧两个版本的文档,这很容易导致混淆。

        /// 
        /// 静默模式打开隐藏文件
        /// 
        /// 
        /// 文件路径
        /// 是否隐藏 默认隐藏
        /// 
        public static ModelDoc2 OpenInvisibleDocClient(this SldWorks app, string filePath, bool Hidden = true)
        {
            int Errors = -1, Warning = -1;
            var type = app.FileType(filePath);
            try
            {
                if (Hidden) app.DocumentVisible(false, (int)type);
                ModelDoc2 doc = app.OpenDoc6(filePath, type.SWToInt(), swOpenDocOptions_e.swOpenDocOptions_Silent.SWToInt(),
                    \"\", ref Errors, ref Warning) as ModelDoc2;
                if (doc == null)
                {
                    throw new Exception(string.Format(\"errors:{0},warings{1}\",
                        Errors.CastObj().ToString(),
                        Warning.CastObj().ToString()));
                }
                return doc;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                app.DocumentVisible(true, (int)type);
            }
        }

查阅网络文档时,搜索工具同样关键。尤其在进行规模庞大的项目时,文档资料量极大。以一个大型软件开发项目为例,里面的文档资料多达数万行。若搜索不够方便,寻找所需信息就像在茫茫大海中寻找一根针。

        /// 
        /// 判断文件类型
        /// 
        /// 
        /// 文件全路径
        /// 
        public static swDocumentTypes_e FileType(this SldWorks app, string filePath)
        {
            string extension = Path.GetExtension(filePath).ToLower();
            swDocumentTypes_e type = swDocumentTypes_e.swDocPART;
            switch (extension)
            {
                case \".sldprt\":
                    type = swDocumentTypes_e.swDocPART;
                    break;
                case \".sldasm\":
                    type = swDocumentTypes_e.swDocASSEMBLY;
                    break;
                case \".slddrw\":
                    type = swDocumentTypes_e.swDocDRAWING;
                    break;
                default:
                    throw new FileFormatException(\"不支持的文件类型:\" + extension);
            }
            return type;
        }

Nuget与打开文档

打开文档用Nuget时,不同的打开方式适用于不同的情况。比如,在api接口里,有些方法专用于打开特定类型的文件。有个设计师在处理图形文件时,用常规方法一直没成功,后来才意识到得用那个特定的api方法来打开这种图形文件格式。

        /// 
        /// 以不可见模式打开文档  Open a document invisibly. It will not be shown to the user but you will be
        /// able to interact with it through the API as if it is loaded.
        /// 
        /// 
        /// 
        /// 是否对用户可见
        ///  SolidWorks 文件类型 ,默认为零件
        /// 
        public static ModelDoc2 OpenInvisibleReadOnly(this ISldWorks sldWorks, string toolFile, bool visible = false, swDocumentTypes_e type = swDocumentTypes_e.swDocPART)
        {
            try
            {
                if (!visible)
                    sldWorks.DocumentVisible(false, (int)type);
                var spec = (IDocumentSpecification)sldWorks.GetOpenDocSpec(toolFile);
                if (!visible)
                {
                    spec.Silent = true;
                    spec.ReadOnly = true;
                }
                var doc = sldWorks.OpenDoc7(spec);
                doc.Visible = visible;
                return doc;
            }
            finally
            {
                if (!visible)
                    sldWorks.DocumentVisible
                        (true,
                            (int)
                                type);
            }
        }

判断文档是否开启这一步骤同样至关重要。比如,在处理大量文档时,同一个文档可能需要反复操作。若不先确认其是否已打开,可能会引发操作重复或资源滥用等问题。

新建零件与装配体操作

在应用默认模板生成零件或装配体时,需注意不同环境下的差异。比如,在中文使用场景中,模板文件的命名规则与英文环境有所区别。有一次在产品开发过程中,由于未充分考虑中文环境下的命名变化,结果新创建的零件命名变得杂乱无章。

        /// 
        /// 对内存中所有文档进行操作
        /// 
        /// 
        /// 
        public static void UsingOpenDoc(this SldWorks swApp, Action action)
        {
            var docs = (swApp.GetDocuments() as Object[]).Cast();
            if (docs == null)
            {
                return;
            }
            foreach (var item in docs)
            {
                action?.Invoke(item);
            }
        }

创建新文档时常用模板,然而,模板的出处和准确性至关重要。某些小型公司项目里,模板可能会被错误使用或版本不匹配。这时,开发人员需细致辨别。

修改设置需谨慎

        /// 
        /// 判断此文档是否打开
        /// 
        /// 
        /// 
        /// 
        public static bool HasDocOpened(this SldWorks app, string DocFilePathName)
        {
            bool exist = false;
            app.UsingOpenDoc(d =>
            {
                if (d.GetPathName() == DocFilePathName)
                {
                    exist = true;
                }
            }
            );
            return exist;
        }

获取设置选项时,需明确基本步骤。比如,在某个特定接口下,需遵循特定操作。若获取方法有误,后续步骤将受到影响。在自动化测试项目中,若设置选项获取不当,整个测试方案可能需从头开始搭建。

调整配置并恢复至初始状态,旨在保持用户的个性化设置不被干扰。这在众多以用户为中心的软件设计中尤为重要。比如,一款广受欢迎的办公软件,若因调整设置而改变用户既有的使用习惯,很可能会招致众多用户的不满。

        /// 
        /// 对活动文档进行操作
        /// 
        /// 
        /// 
        public static void UsingActiveDoc(this SldWorks swApp, Action action)
        {
            if (swApp.ActiveDoc != null)
            {
                action?.Invoke((IModelDoc2)swApp.ActiveDoc);
            }
        }

操作中的常见失误

操作过程中可能会出现一些失误。比如,参数的配置不当。举个例子,在一个机械零件的设计项目中,由于在静默模式下打开文档时参数设置错误,结果文档无法顺利打开。

可能存在接口操作失误。比如,在通过API接口处理活动文件时,若调用顺序有误或参数类型不当,便可能造成问题。

        /// 
        /// 以默认设置的模板创建文档
        /// 
        /// 
        /// 
        /// 
        public static IModelDoc2 CreateDocument(this ISldWorks sldWorks, swDocumentTypes_e type)
        {
            string templatePath = string.Empty;
            switch (type)
            {
                case swDocumentTypes_e.swDocPART:
                    templatePath = sldWorks.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplatePart);
                    break;
                case swDocumentTypes_e.swDocASSEMBLY:
                    templatePath = sldWorks.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplateAssembly);
                    break;
                case swDocumentTypes_e.swDocDRAWING:
                    templatePath = sldWorks.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplateDrawing);
                    break;
                default:
                    break;
            }
            if (!File.Exists(templatePath))
            {
                templatePath =
                    Path.GetDirectoryName(templatePath) + \"\\\" +
                    Path.GetFileName(templatePath).
                    Replace(\"零件\", \"gb_part\").
                    Replace(\"装配体\", \"gb_assembly\").Replace(\"工程图\", \"gb_a1\");
            }
            if (!File.Exists(templatePath))
            {
                throw new FileNotFoundException(\"无法找到SolidWorks文件--\" + templatePath);
            }
            return sldWorks.CreateDocument(templatePath);
        }

最后有个问题想请教大家,在你们执行项目的过程中,有没有遇到过特别让人难忘的失误经历?希望各位能点赞、转发,并在评论区分享你们的经验。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 SolidWorks二次开发教程:深入解析文档操作与设置技巧 https://www.zuozi.net/75566.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务