C# SolidWorks 二次开发 API---替换工程图文件关系

news/2024/11/28 23:39:19/

这篇博文讲的是在某些情况下需要把工程图中的模型进行替换。其实代码写好很久了,没有时间写博客

比如: 本来有A.sldprt和A.slddrw这两个文件,是A零件的模型与A零件的工程图。
我们需要去利用A零件衍生零件B,就改一些尺寸,特征什么的。
正常情况的操作是利用打包功能把A零件与工程图打包并改名为B.sldprt和B.slddrw.
在这里插入图片描述

但是也不排除经常会先直接把零件B做完了。然后没有图纸,

这样笨办法比较多,重新出图或者重新打包后改零件。
在这里插入图片描述
熟悉的人知道工程图中有下面这个替换模型:
在这里插入图片描述
这一步操作下来,你的图纸模型换过来了,但是有时候一些明明同样的参考关系尺寸会找不到参考了。这个bug Solidworks好像还存在,有时候没问题。

更加熟悉软件的人可能 会注意到,打开零件图纸的时候,有一个修改参考关系的选项。
在这里插入图片描述
这样可以修改参考的

在这里插入图片描述

这一步操作使用起来好像没有报错,我们来看一下这一步的实现,要实现引用关系的修改,其实只需要利用Document Manager来修改,对于装配体 下的零件改名,也是很好的办法。改完之后 重新修改下装配体的引用关系。

 private void btnReplaceReference_Click(object sender, EventArgs e){const string sLicenseKey = "yourLicenseKey";//如果正版用户,请联系代理商申请。string sDocFileName = @"E:\01_Work\22_Gitee\CSharpAndSolidWorks\CSharpAndSolidWorks\TemplateModel\repleaceReference\part1.SLDDRW";SwDMClassFactory swClassFact = default(SwDMClassFactory);SwDMApplication swDocMgr = default(SwDMApplication);SwDMDocument swDoc = default(SwDMDocument);SwDMDocument10 swDoc10 = default(SwDMDocument10);SwDMDocument22 swDoc22 = default(SwDMDocument22);SwDmDocumentType nDocType = 0;SwDmDocumentOpenError nRetVal = 0;SwDmPreviewError nError = 0;// Determine type of SOLIDWORKS file based on file extensionif (sDocFileName.ToLower().EndsWith("sldprt")){nDocType = SwDmDocumentType.swDmDocumentPart;}else if (sDocFileName.ToLower().EndsWith("sldasm")){nDocType = SwDmDocumentType.swDmDocumentAssembly;}else if (sDocFileName.ToLower().EndsWith("slddrw")){nDocType = SwDmDocumentType.swDmDocumentDrawing;}else{// Probably not a SOLIDWORKS file,// so cannot opennDocType = SwDmDocumentType.swDmDocumentUnknown;return;}swClassFact = new SwDMClassFactory();swDocMgr = (SwDMApplication)swClassFact.GetApplication(sLicenseKey);swDoc = (SwDMDocument)swDocMgr.GetDocument(sDocFileName, nDocType, false, out nRetVal);swDoc10 = (SwDMDocument10)swDoc;swDoc22 = (SwDMDocument22)swDoc;object vBrokenRefs = null;object vIsVirtuals = null;object vTimeStamps = null;object vIsImported = null;string[] vDependArr = null;SwDMSearchOption swSearchOpt = default(SwDMSearchOption);swSearchOpt = swDocMgr.GetSearchOptionObject();vDependArr = (string[])swDoc22.GetAllExternalReferences5(swSearchOpt, out vBrokenRefs, out vIsVirtuals, out vTimeStamps, out vIsImported);if ((vDependArr == null)) return;var doc16 = (SwDMDocument16)swDoc;doc16.ReplaceReference(vDependArr[0], @"E:\01_Work\22_Gitee\CSharpAndSolidWorks\CSharpAndSolidWorks\TemplateModel\repleaceReference\part1new.SLDPRT");swDoc.Save();swDoc.CloseDoc();}

在这里插入图片描述

一切都在源码中,请自行下载。记得加个关注,点个赞哈。。。
如果有想法,来发表意见。
在这里插入图片描述


http://www.ppmy.cn/news/500668.html

相关文章

concet php_[PHP是世界上最好的语言] 不信你看这款PHP写的敲诈者木马

有个笑话:女的说,你们能让论坛上的人吵起来,我就做你女朋友。男的发了一句话:PHP是世界上最好的语言。瞬间论坛就炸锅了,女的说好吧,我同意了,咱们去吃饭吧。男的:不!我一…

SOLIDWORKS PDM如何在流程变更的同时实现图纸的转换

摘要: 本文将介绍SOLIDWORKS PDM在设置工作流程的时候,在变换中添加任务以实现slddrw格式的图纸自动转换为pdf文件。 插件的添加 实现文件格式的转换,我们所需要用到的插件为“SOLIDWORKS Task Add-in”。 首先,我们需要在“任…

IBomFeature Interface

Solidworks学习笔记-链接Solidworks NameDescription备注ConfigurationGets or sets the name of configuration for this BOM table. 获取或设置此 BOM 表的配置名称。DetailedCutListGets or sets whether to show the detailed cut list in this BOM table. 获取或设置是否…

C++编译过程

How the C Compiler works? 文章目录 How the C Compiler works?compilingExamples总结欢迎关注公众号【三戒纪元】 通过编程,是的text程序编程可执行文件,基本上主要有2个操作发生: compiling 编译linking 链接 compiling C 编辑器要做的…

IComponent2 Interface 学习

Solidworks学习笔记-链接Solidworks 在此基础上学习 允许访问程序集中的组件。 属性 NameDescription备注ComponentReferenceGets or sets a component reference for this component. 获取或设置此组件的组件引用。IMaterialPropertyValuesGets or sets the material pro…

IDrawingComponent Interface 学习

Solidworks学习笔记-链接Solidworks 在此基础上学习 属性 NameDescription备注ComponentGets the referenced component for this drawing component. 获取此绘图组件的引用组件。LayerGets or sets the name of the layer on which the component resides in the view. 获…

C# SolidWorks二次开发-工程图-更换工程图图纸格式/模板

这两天有朋友提问,怎么更换工程图模板。 正好晚上还能挤点时间,就来写一篇文件解答一下。 首先,更换工程图模板,你需要知道手动怎么修改。 如下图,我这个没有模板,只有个纸张大小。 对着视图,右…

C# SolidWorks二次开发---工程图中心标记(Center Marks)

工程图的中心标记 作为一个不专业的制图人员,我就不解释中心标记是什么了。大家自己看Solidworks的官方帮助说明(好像不应该放英文的,大家都看不懂了 )。 就是这么个东东。 我自己画了一个非常复杂的图纸,创建主视图的时候好像就自动增加了…