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

这篇具有很好参考价值的文章主要介绍了C# Solidworks二次开发:Pack And Go相关API详解(第二讲)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

下面介绍相关API:

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

C# Solidworks二次开发:Pack And Go相关API详解(第二讲),Solidworks二次开发,c#,golang,java,开发语言

其输入参数值只有一个为要添加到打包和移动的非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. Create c:\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的含义为获取打包和移动所有文件的名称,下面是官方的具体解释:

C# Solidworks二次开发:Pack And Go相关API详解(第二讲),Solidworks二次开发,c#,golang,java,开发语言其输入参数值只有一个为要添加到打包和移动的非solidworks文件的路径和文件名的数组,返回值为bool类型,成功为true,失败为false。和上面的一致。

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

C# Solidworks二次开发:Pack And Go相关API详解(第二讲),Solidworks二次开发,c#,golang,java,开发语言输入参数有两个,分别为:

PathNameList
包含保存模型文档的路径和文件名的字符串数组(参见备注)
DocumentStatusList
包含swPackAndGoDocumentStatus_e中定义的文档类型的数组

其对应的类型有三个:

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

本篇文章要介绍的API就是这些,我们下篇文章再见。文章来源地址https://www.toymoban.com/news/detail-854502.html

到了这里,关于C# Solidworks二次开发:Pack And Go相关API详解(第二讲)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# SolidWorks 二次开发 -从零开始创建一个插件(2)

    上一篇我详细讲解了如何创建一个插件,但是无界面无按钮,这种插件适合配合事件偷偷的在后台做点什么事情。今天这篇讲一下如何增加一些按钮到工具栏、菜单上去。 先告诉大家这个东西注册表在哪,因为solidworks在这方面做的不太好,插件你改个名字,就有多个工具栏

    2024年02月15日
    浏览(40)
  • C# Solidworks二次开发:自动创建虚拟零件及使用注意事项

    今天要讲的是关于在solidworks中如何自动创建虚拟零件的功能,也就是solidworks中插入新零件这个功能。 实现这个功能需要使用的API如下所示: InsertNewVirtualPart(swFaceOrPlane1, out swcomp2); 其中这个方法中使用到了两个参数。 第一个参数:为一个平面,或是一个基准平面。 第二

    2024年02月15日
    浏览(47)
  • Python SolidWorks 二次开发---Python如何连接SolidWorks

    用Python来进行SolidWorks的二次开发其实是有点非主流的,因为Python本身的特性导致程序运行的效率会比VBA等SolidWorks原生支持的二次开发软件运行效率降低50%以上,用Python仅仅是因为语法简单,实现起来快捷,且所开发的功能仅供个人提高效率使用。这里记录一些开发过程,如

    2024年02月11日
    浏览(30)
  • SOLIDWORKS二次开发——拓展设计能力与定制化解决方案

    SOLIDWORKS是一款广泛应用于机械设计行业的三维CAD软件,它提供了丰富的功能和工具,满足了企业的基本设计需求。然而,有时候标准软件的功能无法满足特定的要求,这就需要进行二次开发来扩展SOLIDWORKS的功能,制定定制化的解决方案。   1. 什么是SOLIDWORKS二次开发? SOLI

    2024年02月07日
    浏览(41)
  • 如何利用chatGPT/GPT4高效学习Solidworks二次开发

    要不我们来试试它? 先用这个试试,据说这个比较方便,直接是在对应的文件中进行对话。 安装后,直接在左侧建立一个你熟悉的后缀格式。我就用main.cs吧 按Ctrl+K和它进行对话。 看看它的结果: 哇靠,写的水平可以呀。我假装看不懂。让他给我在上面加一些注释吧。 这时它

    2024年02月08日
    浏览(48)
  • 【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用

    博主简介: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: Go语言核心编程 近期目标: 写好专栏的每一篇文章 全称: “万维网”(World Wide Web) 本质: 系统(基于互联网).

    2024年02月03日
    浏览(42)
  • 【Elkeid开源版及相关二次开发部署】

    1、配置目标机器root用户ssh免密登录 如果部署机器为本机,依旧需要配置本机免密登录,登录耗时需要小于1s。 可用以下命令进行验证,两次date命令的输出结果需要相同。 2、解压release产物并配置目录 下载release产物(分卷压缩包),并合并压缩包 也可以参考从源码构建 E

    2024年02月03日
    浏览(37)
  • Autocad C#二次开发煤矿数据处理

    2024年02月10日
    浏览(35)
  • UG NX二次开发(C#)-建模-删除面

            在三维建模后,为了仿真的需要,需要对建好的模型进行简化处理,这时候同步建模的功能就非常有必要了。本文主要介绍一个删除面的操作,这样可以去掉孔面、倒圆角面、倒斜角面,以用于模型仿真的完整性。          采用UG NX的UIStyler创建一个测试界面,如

    2023年04月14日
    浏览(81)
  • 【VisionMaster SDK开发】第三讲 C#二次开发介绍及应用案例

    VisionMaster(后简称VM)作为一款功能强大的工业图像算法平台,可对工业中遇到的各种图像进行处理,同时拥有性能强大的算子以及丰富的教学例程,作为图像处理的通用平台是非常不错的选择。但Vision Master软件依旧有不足,就是难以配置复杂或定制化的图形界面,故需要结

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包