今天要讲的是关于在solidworks中如何自动创建虚拟零件的功能,也就是solidworks中插入新零件这个功能。
实现这个功能需要使用的API如下所示:
InsertNewVirtualPart(swFaceOrPlane1, out swcomp2);
其中这个方法中使用到了两个参数。
第一个参数:为一个平面,或是一个基准平面。
第二个参数:为成功创建这个虚拟零件以后,返回的Component2类型文件。
下面这个图片是官方给出的关于API的解释:
下面展示一段使用这个方法的代码:
Component2 swcomp2 = null;
int longstatus1 = 0; object swFaceOrPlane1 = null;
longstatus1 = swAss.InsertNewVirtualPart(swFaceOrPlane1, out swcomp2);
当然一般的情况下,这样使用是没有问题的,只要设置了零件的模板。在使用这个方法的时候solidworks会自动寻找模板,但是有的时候会有一些问题,导致你在创建虚拟零件的时候返回的Component2类型文件为空。
下面介绍一下使用时候的注意事项:
1、solidworks的一些配置会影响你在使用方法的方式,如果你像我一样在使用上面方法的时候传入的第一个参数为空,那么必须要做一些配置才能保证返回第二个参数不为空。具体设置为打开选项,然后找到外部参考,把允许创建模型外部参考勾选上。这样就没有问题了。操作如下图所示:
2、如果你不想这样设置,那么你在使用这个方法的时候就不能给第一个参数为空,需要给一个平面或者基准平面。这样使用也没有问题。
下面要介绍的是,如果你想自动把这个默认配置勾选上,也是可以通过程序自动实现的。
如下面代码所示:
public static void AutomaticSetting(ISldWorks swApp)
{
swApp.SetUserPreferenceToggle(((int)(swUserPreferenceToggle_e.swAllowCreationOfReferencesExternalToModel)), true);
swApp.SetUserPreferenceToggle(((int)(swUserPreferenceToggle_e.swReferenceOnlyEnvelopeComponentType)), false);
swApp.SetUserPreferenceToggle(((int)(swUserPreferenceToggle_e.swReferenceInContextOfTopLevelAssembly)), false);
}
如上面所示代码可以实现自动默认配置solidworks。
当然这个位置还有一点需要说的,当你在使用这两个方法的时候, swApp.SetUserPreferenceToggle(((int)(swUserPreferenceToggle_e.swReferenceOnlyEnvelopeComponentType)), false);
swApp.SetUserPreferenceToggle(((int)(swUserPreferenceToggle_e.swReferenceInContextOfTopLevelAssembly)), false);
我给的参数是false,当你给true的时候。就又是一个结果了,这里我就不说区别了。
把这个验证留给评论区的大佬们吧。
本篇文章介绍到此结束,我们下篇文章再见。