C# Solidworks二次开发:Pack And Go相关API详解(第二讲)

大家好,今天要介绍的是和打包相关的API,之前讲过一篇文章是关于打包时候的注意事项,这里就不再介绍了,有需要的家人可以访问前一个文章:

C# Solidworks二次开发:Pack and Go打包时需要注意的地方,纯干货(可以节省大量查找资料时间)-CSDN博客

下面介绍相关API:

(1)第一个为AddExternalDocument,这个API的含义为将非solidworks文件添加到打包或是移动中,下面是官方的具体解释:

其输入参数值只有一个为要添加到打包和移动的非solidworks文件的路径和文件名的数组,返回值为bool类型,成功为true,失败为false。

下面是官方使用的例子:

This example shows how to add SOLIDWORKS, render reference, and non-SOLIDWORKS files to Pack and Go. This example also shows how to remove a non-SOLIDWORKS file from Pack and Go.

//-------------------------------------------
// Preconditions:
// 1. Verify that the specified assembly exists.
// 2. Createc:\PackAndGo .
// 3. Open the Immediate window.
//
// Postconditions:
// 1. Gets the names of SOLIDWORKS, render reference, and
// non-SOLIDWORKS files for Pack and Go.
// 2. Gets the the name of non-SOLIDWORKS file to remove.
// 3. Packs up SOLIDWORKS, render reference, and
// non-SOLIDWORKS files and copies them to c:\PackAndGo .
// 4. Examine c:\PackAndGo and the Immediate window.
//-------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace AddExternalDocumentsPackAndGo.csproj
{
partial class SolidWorksMacro
{
public void Main()
{
ModelDoc2 swModel = default(ModelDoc2);
ModelDocExtension swModelDocExt = default(ModelDocExtension);
PackAndGo swPackAndGo = default(PackAndGo);
string openFile = null;
int namesCount = 0;
int errors = 0;
int warnings = 0;
bool status = false;
int i = 0;
object[] renderReferences = null;
string myPath = null;
object statuses = null;

// Open assembly document
openFile = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\EDraw\\claw\\claw-mechanism.sldasm";
swModel = (ModelDoc2)swApp.OpenDoc6(openFile, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
swModelDocExt = (ModelDocExtension)swModel.Extension ;

// Get Pack and Go object
Debug.Print("Pack and Go");
swPackAndGo = (PackAndGo)swModelDocExt.GetPackAndGo ();

// Get number of documents in assembly
namesCount = swPackAndGo.GetDocumentNamesCount ();

// Get current paths and filenames of the assembly's documents
object fileNames;
object[] pgFileNames = new object[namesCount - 1];
status = swPackAndGo.GetDocumentNames(out fileNames);
pgFileNames = (object[])fileNames;

Debug.Print("");
Debug.Print(" Add SOLIDWORKS files' paths and filenames: ");
if ((pgFileNames != null))
{
for (i = 0; i <= pgFileNames.GetUpperBound(0); i++)
{
Debug.Print(" The path and filename is: " + pgFileNames[i]);
}
}

// Set document paths and names for Pack and Go
status = swPackAndGo.SetDocumentSaveToNames (pgFileNames);

// Get the render stock references in this assembly
// and print them to the Immediate window
Debug.Print(" ");
renderReferences = (object[])swModelDocExt.GetRenderStockReferences ();
Debug.Print(" Add render references:");
for (i = 0; i <= renderReferences.GetUpperBound(0); i++)
{
Debug.Print(" The path and filename is: " + renderReferences[i]);
}

// Add render stock files to Pack and Go
status = swPackAndGo.AddExternalDocuments (renderReferences);

// Add other non-SOLIDWORKS files to Pack and Go
object[] otherFiles = new object[2];
string otherFile = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\edraw\\claw\\claw-mechanism.easm";
otherFiles[0] = (object)otherFile;
otherFile = "C:\\Users\\Public\\Documents\\SOLIDWORKS\\SOLIDWORKS 2018\\samples\\tutorial\\edraw\\claw\\claw-mechanism.emodel_debugonly.xml";
otherFiles[1] = (object)otherFile;

Debug.Print(" ");
Debug.Print(" Add non-SOLIDWORKS files:");
for (i = 0; i <= otherFiles.GetUpperBound(0); i++)
{
Debug.Print(" The path and filename is: " + otherFiles[i]);
}

// Add non-SOLIDWORKS file to Pack and Go
status = swPackAndGo.AddExternalDocuments (ObjectArrayToBStrWrapperArray(otherFiles));

// Remove one of the non-SOLIDWORKS files from Pack and Go
object[] delOtherFiles = new object[1];
delOtherFiles[0] = (object)otherFiles[0];

Debug.Print(" ");
Debug.Print(" Remove non-SOLIDWORKS file:");
Debug.Print(" The path and filename is: " + delOtherFiles[0]);

status = swPackAndGo.RemoveExternalDocuments (ObjectArrayToBStrWrapperArray(delOtherFiles));

// Override path where to save documents
myPath = "c:\\PackAndGo\\";
status = swPackAndGo.SetSaveToName(true, myPath);

// Pack and Go both SOLIDWORKS and non-SOLIDWORKS files
statuses = swModelDocExt.SavePackAndGo (swPackAndGo);
}

public BStrWrapper[] ObjectArrayToBStrWrapperArray(object[] SwObjects)
{
int arraySize;
arraySize = SwObjects.GetUpperBound(0);
BStrWrapper[] dispwrap = new BStrWrapper[arraySize + 1];
int arrayIndex;

for (arrayIndex = 0; arrayIndex < arraySize + 1; arrayIndex++)
{
dispwrap[arrayIndex] = new BStrWrapper((string)(SwObjects[arrayIndex]));
}

return dispwrap;

}

/// <summary>
/// The SldWorks swApp variable is pre-assigned for you.
/// </summary>

public SldWorks swApp;

}
}

(2)第二个为GetDocumentNames,这个API的含义为获取打包和移动所有文件的名称,下面是官方的具体解释:

其输入参数值只有一个为要添加到打包和移动的非solidworks文件的路径和文件名的数组,返回值为bool类型,成功为true,失败为false。和上面的一致。

(3)第三个为GetDocumentSaveToNames,这个API的含义为获取保存模型文档的路径和模型名,下面是官方的具体解释:

输入参数有两个,分别为:

PathNameList

包含保存模型文档的路径和文件名的字符串数组(参见备注)

DocumentStatusList

包含swPackAndGoDocumentStatus_e中定义的文档类型的数组

其对应的类型有三个:

Member Description
swPackAndGoDocumentStatus_Normal 0 = Normal
swPackAndGoDocumentStatus_UnKnown 2 = Unknown
swPackAndGoDocumentStatus_Virtual 1 = Virtual

本篇文章要介绍的API就是这些,我们下篇文章再见。

相关推荐
牧夏。1 分钟前
vscode运行java中文乱码,引发的mac配置问题
java·vscode·macos
吃饱很舒服13 分钟前
kotlin distinctBy 使用
android·java·开发语言·前端·kotlin
Cindy辛蒂13 分钟前
python办公自动化之分析日志文件
开发语言·python
老马啸西风15 分钟前
MySQL-18-mysql source 执行 sql 文件时中文乱码
java
mosi35718 分钟前
使用C#进行MySQL删改查操作
mysql·c#
源码宝21 分钟前
基于java语言+ Vue+ElementUI+ MySQL8.0.36数字化产科管理平台源码,妇幼信息化整体解决方案
java·源代码·产科电子病历系统源码·医院产科信息管理系统源码·数字化产科管理平台源码
优秀的颜31 分钟前
RabbitMQ(集群相关部署)
开发语言·后端
FREE技术1 小时前
基于java+springboot+vue实现的畅销图书推荐系统(文末源码+lw+ppt)23-500
java·vue.js·spring boot
ToBeWhatYouWannaBe.1 小时前
代码随想录-Day49
java·数据结构·算法·leetcode