solidworks EPDM API 获取卡片列表

solidworks EPDM API get list for cards

有没有办法从 solidworks EPDM API 中获取卡片列表的值?如果不是,我唯一的方法就是请求数据库。在这种情况下,有没有办法从 API 获取数据库连接字符串? 谢谢

不幸的是,这两个问题的答案是否定的。没有 IEdmCardList 对象,也没有从 API 获取连接字符串的方法。

我所做的是创建我自己的继承自 IEdmObject5 的 IEdmCardList 对象。然后您可以创建它并将其用作对象,而不是将数据库代码放在您的项目中。我使用 IEdmDictionary5 来存储连接字符串(在数据库上有一个只读用户)。这不安全,但我还没有找到安全的方法。

还要注意任何 SOLIDWORKS 为此提供的 API 样本。大多数都受到简单的 SQL 注射。

2018 年新增,他们添加了一种使用 API 获取卡片列表数据的方法。您可以使用此代码执行此操作:

            String selectedFile = @"C:\path\to\file.sldprt";
            String selectedVariable = "Variable Name";
            String selectedVault = "My Vault Name";
            vault = new EdmVault5();
            vault.LoginAuto(selectedVault, 0);
            if (vault.IsLoggedIn) {
                IEdmFile5 file = vault.GetFileFromPath(selectedFile, out IEdmFolder5 folder);
                IEdmCard5 card = folder.GetCard(Path.GetExtension(selectedFile).Substring(1));
                Object variableName = selectedVariable;
                IEdmCardControl7 cardControl = (IEdmCardControl7)card.GetControl(card.GetControlID(ref variableName));
                if (cardControl.GetControlVariableList(file.ID, out String[] cardListStrings)) {
                    foreach (String cardListItem in cardListStrings) {
                        // do something with this string
                    }
                }
            }