SolidWorks PDM API更新参考错误

朱利安50

我正在尝试通过Api在SolidWorks ePDM中的两个文件之间添加和删除引用。这是我根据帮助中的示例在c#中执行此操作的方法。你能告诉我我在做什么错吗?

using EPDM.Interop.epdm;
using EPDM.Interop.EPDMResultCode;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Service.EPDM.Data.Test
{
    [TestClass]
    public class Class1
    {

        private EdmVault5 _Vault1 = null;
        private IEdmVault15 _Vault2 = null;

        [TestMethod]
        public void Run()
        {
            try
            {
                _Vault1 = new EdmVault5();
                _Vault1.LoginAuto("MyVault", 32);
                _Vault2 = (IEdmVault15)_Vault1;

                var file1 = "99-Test\\OFTEST1\\test1.lnk.cvd";
                var file2 = "99-Test\\OFTEST1\\test2.lnk.cvd";

                UpdateReferences(file1, new List<string>() { file2 }, null);
            }
            catch (Exception ex)
            {
                throw ex;
            }          
        }

        private void UpdateReferences(string iFilePath, List<string> iAddReferenceFilePath, List<string> iRemoveReferenceFilePath)
        {
            if (iAddReferenceFilePath != null && iRemoveReferenceFilePath != null)
                throw new Exception("La liste des références à créer et supprimer est vide");

            var rootPath = _Vault2.RootFolderPath;

            IEdmFolder5 ppoRetParentFolder;
            var theFile = _Vault2.GetFileFromPath(rootPath + "\\" + iFilePath, out ppoRetParentFolder);
            var itemFile = (IEdmItem)theFile;

            EdmItemRef[] addRefs = null;

            addRefs = new EdmItemRef[iAddReferenceFilePath.Count];

            int addCounter = 0;
            foreach (var item in iAddReferenceFilePath)
            {
                IEdmFolder5 folder = null;
                var file = _Vault2.GetFileFromPath(rootPath + "\\" + item, out folder);
                addRefs[addCounter].moNamePathOrID = rootPath + "\\" + item;
                addRefs[addCounter].mlEdmRefFlags = (int)EdmRefFlags.EdmRef_Static + (int)EdmRefFlags.EdmRef_File;
                addRefs[addCounter].moParentNamePathOrItemID = itemFile.ID;
                addCounter++;
            }

            EdmItemRef[] removeRefs = null;
            removeRefs = null;

            itemFile.UpdateReferences(addRefs, removeRefs);
        }

    }
}

这是itemFile.UpdateReferences(addRefs, removeRefs)方法上的错误

“参数错误,结果:0x80070057(E_INVALIDARG)”

朱利安50

我没有使用好的方法。这是怎么做的:

private void AddReferences(string iFilePath, List iReferenceFile)
{
if (iReferenceFile.IsNullOrEmpty())
throw new Exception("La liste des références à créer est vide");

var rootFolder = (IEdmFolder8)_Vault2.RootFolder;

IEdmFolder5 parentFolder;
var theFile = _Vault2.GetFileFromPath(iFilePath, out parentFolder);

if (theFile == null)
throw new Exception("Le fichier '{0}' n'existe pas".FormatString(iFilePath));

var customReferences = (IEdmEnumeratorCustomReference6)theFile;

foreach(var iFilePathItem in iReferenceFile)
{
IEdmFolder5 parentFolderItem;
var theFileItem = _Vault2.GetFileFromPath(rootFolder.LocalPath + "\\" + iFilePathItem, out parentFolderItem);
customReferences.AddReference2(theFileItem.ID, parentFolderItem.ID, 1);
}
}

private void RemoveAllReferences(string iFilePath)
{
IEdmFolder5 parentFolder;
var theFile = _Vault2.GetFileFromPath(iFilePath, out parentFolder);

if (theFile == null)
throw new Exception("Le fichier '{0}' n'existe pas".FormatString(iFilePath));

var customReferences = (IEdmEnumeratorCustomReference6)theFile;
var customReferencePos = customReferences.GetFirstRefPosition();

while (!customReferencePos.IsNull)
{
int refFileId = 0;
int refFolderId = 0;
string path = null;
int quantity = 0;
customReferences.GetNextRef2(customReferencePos, out refFileId, out refFolderId, out path, out quantity);
customReferences.RemoveReference(refFileId, refFolderId);
}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SolidWorks PDM API更新参考错误

来自分类Dev

使用参数的Solidworks PDM Run PDM模板

来自分类Dev

在Solidworks PDM库上运行makepy后缺少类方法

来自分类Dev

solidworks EPDM API获取卡列表

来自分类Dev

solidworks EPDM API获取卡列表

来自分类Dev

为 Solidworks 2018 寻找 api.chm

来自分类Dev

Solidworks,在Isldworks.CloseDoc上跟踪内存访问冲突错误

来自分类Dev

SolidWorks 2016 SaveAs Access VBA运行时错误438

来自分类Dev

如何通过SolidWorks API更改孔台轴方向?

来自分类Dev

如何使用API在SolidWorks中获取对象的坐标数据

来自分类Dev

-SolidWorks API-查看轮廓和内部边界

来自分类Dev

Java参考错误

来自分类Dev

ThreadStart参考错误

来自分类Dev

奇怪的参考错误

来自分类Dev

参考错误| javascript

来自分类Dev

QML参考错误

来自分类Dev

尝试使用SolidWorks VBA发出HTTP请求时出现奇怪的错误

来自分类Dev

找不到Alfresco Java脚本API参考错误“文档”

来自分类Dev

从SolidWorks API中的装配体文件获取零件文件

来自分类Dev

在SolidWorks API中从装配体文件获取零件文件

来自分类Dev

IObableable模糊参考错误

来自分类Dev

Javascript全局参考错误

来自分类Dev

mysqlpp中的参考错误

来自分类Dev

FileUpload Null参考错误

来自分类Dev

Excel中的参考错误

来自分类Dev

Nativescript - 参考错误:FIRAuth

来自分类Dev

SolidWorks到OBJ导出

来自分类Dev

如何移动飞机-SolidWorks

来自分类Dev

Scala的错误前向参考错误