zoukankan      html  css  js  c++  java
  • 我的第一个Autodesk Vault定制程序

    我们的Vault开发专家Barbara离开了,我不得不开始学习Vault API了。如果你也刚开始学习Vault,这篇文章也许对有你帮助。Vault客户端主要采用Web Service与Vault服务器通讯,Vault也提供了丰富的API,其中重要的就是各个WebService。Vault提供了.net的API,可以用C#或者VB.net来做定制开发,开发工具自然是Visual Studio了。 Vault 2013开始,Vault API支持.net framework 4.0, 所有这里使用VS2010. 做个最简单的WinForm程序,枚举Vault服务器中的所有文件。

    Vault 的SDK会随Vault  Server或者Vault Client安装,在Vault的安装目录\SDK 目录下可以找到Vault SDK的安装文件,安装完毕后可以得到下列目录:

    image

    首先创建一个WinForm的应用程序,注意对于Vault 2013来说,需要使用.net Framework 4.0 .在上面添加一个listbox和一个button,然后添加引用。这里作为一个独立的应用程序,只需要引用Autodesk.Connectivity.WebServices.dll即可,然后编写代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Autodesk.Connectivity.WebServicesTools;
    using
    Autodesk.Connectivity.WebServices;


    namespace
    HelloVault
    {
       
    public partial class Form1 : Form
        {
           
    public
    Form1()
            {
                InitializeComponent();
            }

           
    private void button1_Click(object sender, EventArgs
    e)
            {
               
    //用指定的用户名密码,连接到指定服务器的vault
                UserPasswordCredentials cred = new UserPasswordCredentials
                    ("Bei9m4jxix", "Vault", "Administrator", ""
    );

               
    //获取WebService Manager
                using (WebServiceManager mgr = new WebServiceManager
    (cred))
                {
                   
    //有WebServiceManager获取文档服务,还可以获取其他服务
                    //然后获取Vault根目录
                    Folder
    root = mgr.DocumentService.GetFolderRoot();
                   
    //递归打印Vault服务器中的目录和文件
                    PrintFolder(root, mgr);
                }
            }

           
    public void PrintFolder(Folder folder, WebServiceManager
    mgr)
            {
               
    File
    [] files = mgr.DocumentService
                    .GetLatestFilesByFolderId(folder.Id,
    true
    );
               
    if (files != null
    )
                {
                   
    foreach (var file in
    files)
                    {
                        //批量更改文件名
                        file.Name +=
    "_modi"
    ;
                        listBox1.Items.Add(folder.FullName +
    "\\"
    + file.Name);
                    }
                }
               
    Folder
    [] subFolders = mgr.DocumentService
                    .GetFoldersByParentId(folder.Id,
    false
    );
               
    if (subFolders != null
    )
                {
                   
    foreach (var subFolder in subFolders)
                    {
                        PrintFolder(subFolder, mgr);
                    }
                }

            }
        }
    }

    代码并不复杂,在编译时会提示'Microsoft.Web.Services3.WebServicesClientProtocol程序集找不到,

    Error    1    The type 'Microsoft.Web.Services3.WebServicesClientProtocol' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

    解决办法即按照提示添加'Microsoft.Web.Services3的引用即可。如果你安装了Vault Client,这个dll在C:\Program Files (x86)\Microsoft WSE\v3.0目录下。如果你没有安装Vault client,你需要自行从微软网站下载WSE3(Web Service Extension)

    另外还有错误信息:

    Error    1    The type 'System.Web.Services.Protocols.SoapHttpClientProtocol' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. 

    需要添加System.Web.Services的引用。


    然后编译运行,结果如下:

    image

  • 相关阅读:
    如何将一个PDF文件里的图片批量导出
    (二十二)golang--时间和日期相关函数
    (二十一)golang--字符串中的函数
    (二十)golang--变量的作用域
    (十九)golang--函数参数的传递方式
    (十八)golang--defer关键字
    (十七)golang--闭包(简单明了)
    (十六)golang--匿名函数
    (十五)golang--init函数
    【自然语言处理】双语数据预处理
  • 原文地址:https://www.cnblogs.com/junqilian/p/2872461.html
Copyright © 2011-2022 走看看