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
}
}
}
有没有办法从 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
}
}
}