一个会的不多的人

一个会的不多的人

今天要讲的是关于在solidworks中如何自动创建虚拟零件的功能,也就是solidworks中插入新零件这个功能。

实现这个功能需要使用的API如下所示:

InsertNewVirtualPart(swFaceOrPlane1, out swcomp2);

其中这个方法中使用到了两个参数。

第一个参数:为一个平面,或是一个基准平面。

第二个参数:为成功创建这个虚拟零件以后,返回的Component2类型文件。

下面这个图片是官方给出的关于API的解释:

C# Solidworks二次开发:自动创建虚拟零件及使用注意事项-LMLPHP 

下面展示一段使用这个方法的代码:

  Component2 swcomp2 = null;
  int longstatus1 = 0;   object swFaceOrPlane1 = null;

 longstatus1 = swAss.InsertNewVirtualPart(swFaceOrPlane1, out swcomp2);

当然一般的情况下,这样使用是没有问题的,只要设置了零件的模板。在使用这个方法的时候solidworks会自动寻找模板,但是有的时候会有一些问题,导致你在创建虚拟零件的时候返回的Component2类型文件为空。

下面介绍一下使用时候的注意事项:

1、solidworks的一些配置会影响你在使用方法的方式,如果你像我一样在使用上面方法的时候传入的第一个参数为空,那么必须要做一些配置才能保证返回第二个参数不为空。具体设置为打开选项,然后找到外部参考,把允许创建模型外部参考勾选上。这样就没有问题了。操作如下图所示:

C# Solidworks二次开发:自动创建虚拟零件及使用注意事项-LMLPHP

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的时候。就又是一个结果了,这里我就不说区别了。

把这个验证留给评论区的大佬们吧。

本篇文章介绍到此结束,我们下篇文章再见。

07-29 12:45