SOLIDWORDS API修改零部件属性全部保存

通过SW提供的API接口,修改零部件属性,保存ALL修改,出现的问题

1、遍历装配体零部件修改零部件属性(ICustomPropertyManager.Add3)

// True仅获取特性管理器设计树的顶层组件,false用于在特性管理器设计树中获得顶层和子组件
vComponents = swAssy.GetComponents(false);
foreach (object SingleComponent in vComponents)
{
    swComponent = (Component2)SingleComponent;

    // 获取零部件的自定义属性
    swCompModel = swComponent.GetModelDoc2();
    if (swCompModel == null)
    {
        continue;
    }
	  if (swCompModel.GetType() == (int)swDocumentTypes_e.swDocPART)
	  {
			X = 0; Y = 0; Z = 0;
			GetXYZ(swCompModel, out X, out Y, out Z);
			swCustPropMgr = swCompModel.Extension.CustomPropertyManager[""];
			// 零部件新增长(Length:X)宽(Width:Y)高(Height:Z)属性值
			swCustPropMgr.Add3("Length", (int)swCustomInfoType_e.swCustomInfoDouble, X.ToString(),
			   (int)swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd);
			swCustPropMgr.Add3("Width", (int)swCustomInfoType_e.swCustomInfoDouble, Y.ToString(),
			   (int)swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd);
			swCustPropMgr.Add3("Height", (int)swCustomInfoType_e.swCustomInfoDouble, Z.ToString(),
			   (int)swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd);
		}
		else if (swCompModel.GetType() == (int)swDocumentTypes_e.swDocASSEMBLY)
		{
			X = 0; Y = 0; Z = 0;
			GetXYZ(swComponent, out X, out Y, out Z);
			swCustPropMgr = swCompModel.Extension.CustomPropertyManager[""];
			// 装配体新增长(Length:X)宽(Wide:Y)高(High:Z)属性值
			swCustPropMgr.Add3("Length", (int)swCustomInfoType_e.swCustomInfoDouble, X.ToString(),
			   (int)swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd);
			swCustPropMgr.Add3("Width", (int)swCustomInfoType_e.swCustomInfoDouble, Y.ToString(),
			   (int)swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd);
			swCustPropMgr.Add3("Height", (int)swCustomInfoType_e.swCustomInfoDouble, Z.ToString(),
			   (int)swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd);
	}
}

如上代码,修改零部件属性过程中,出现有些零部件可以修改属性,有些零部件不能修改属性,到底是什么原因导致的呢?
原因就是有些子装配体是轻化的,我们在遍历装配体写入属性的时候,需要先将轻化文件 设定轻化到还原

设定轻化到还原 就要调用的SW API是ResolveAllLightWeightComponents

// 获取当前活动的文档
swModel = (ModelDoc2)iSwApp.ActiveDoc;
swAssy = (AssemblyDoc)swModel;
// 写入属性之前,将装配体设定轻化到还原
swAssy.ResolveAllLightWeightComponents(true);

2、修改属性后,怎么通过SW API 保存所有修改
通过调用IModelDoc2.Save3,代码如下:

System.bool Save3( 
   System.int Options,
   out System.int Errors,
   out System.int Warnings
)

怎么保存,需要了解Options参数swSaveAsOptions_e
这里写图片描述
保存全部,我们需要选择swSaveAsOptions_e.swSaveAsOptions_SaveReferenced

// 保存所有修改的属性值
int iErrors = 0, iWarnings = 0;
swModel.Save3((int)swSaveAsOptions_e.swSaveAsOptions_SaveReferenced, ref iErrors, ref iWarnings);

大家都以为这样就可以保存所有修改的属性了吗,我当时也是这么认为的,结果- _ -,当我们对同一装配体进行多次修改,多次调用Save3保存全部时,发现只有第一调用Save3才会全部保存,之后调用Save3时,只会保存总装配体属性,子装配体和零部件属性保存,到底是什么原因导致的,我还没有找到原因,忘读者找到了通知一下我,但找到了一个解决的方法。每次修改一个零部件的时候调用SetSaveFlag标记该文档需要保存,再次调用Save3的时候就会保存该文档;

// 标记该文档需要保存
swModel.SetSaveFlag();
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Solidworks API 光盘是 Solidworks 公司制作的一个软件开发工具包,用于帮助程序员利用 Solidworks 软件的功能,编写自己的定制化程序。这个光盘包含了大量的开发工具、文档和示例代码,可以帮助程序员轻松地学习和使用 Solidworks API 进行开发,从而提高工作效率和编程水平。 Solidworks API 光盘的使用涉及到编程技术和 Solidworks 软件的使用知识,因此需要一定的编程和 Solidworks 软件操作经验。程序员可以根据自己的需求,自由定制 Solidworks 的功能,并将其集成到自己的应用程序中,从而提供更加完整的解决方案。 使用 Solidworks API 光盘可以帮助程序员快速地实现一些常见的功能,如创建零件、装配体和绘图、进行数据管理、导入和导出 CAD 数据等。同时,也可以结合 Solidworks 的其他功能,例如基于特征的建模、自由曲面设计等,进行创新的开发。 总之,Solidworks API 光盘是一个非常实用的软件工具,可以帮助程序员更轻松地利用 Solidworks 的功能进行开发,并且可以根据自己的需求进行自定义扩展,有效提高工作效率和开发质量。 ### 回答2: SolidWorks API 光盘是 SolidWorks 公司出品的一套软件开发工具包(SDK),用于开发 SolidWorks 应用程序。该光盘包含多种编程语言的 API 接口,包括 C++、C#、VB.NET 等,可以通过这些接口实现自定义的 SolidWorks 功能和操作。 SolidWorks API 光盘提供了详细的编程指南和示例代码,帮助用户快速入门 SolidWorks API 开发。用户可以使用这些工具开发自己的插件和应用程序,例如自定义特征、宏程序、独立程序等。 该工具包还包括一组强大的 CAD 程序集,可帮助用户快速构建自己的图形用户界面(GUI)和用户交互功能。此外,该光盘还提供了与 SolidWorks 相关的许可证管理、版本控制和升级管理等工具。 总之,SolidWorks API 光盘是 SolidWorks 应用程序开发者的必备工具,它提供了丰富的 API 接口和工具,使得用户可以通过编程实现自己的 SolidWorks 解决方案和应用程序。 ### 回答3: SolidWorks API 光盘是 SolidWorks 公司推出的一种专用的 API(应用程序接口)开发工具,它可以让 SolidWorks 用户通过编写自定义代码来扩展 SolidWorks 的功能。 这张光盘包含了 SolidWorks API 的相关软件库、文档和示例代码等资源,可以帮助开发者更加便捷地编写和测试 SolidWorks 插件和应用程序。使用 SolidWorks API 光盘还可以让开发者更加深入地了解 SolidWorks 的架构和内部实现,提高对 SolidWorks 开发的理解和能力。 SolidWorks API 光盘支持多种编程语言,如 C++、C#、VB.NET 等,开发者可以根据自己的喜好和需求选择适合自己的开发语言。 总之,SolidWorks API 光盘为 SolidWorks 用户和开发者提供了一个丰富的开发资源和平台,能够提高 SolidWorks 的灵活性和功能性,让用户和开发者能够更好地利用 SolidWorks 的优势,实现更多实用的应用程序和插件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值