2016-08-05 54 views
1

有沒有辦法從solidworks EPDM API獲取卡片列表的值?如果不是,我唯一的辦法就是要求數據庫。在這種情況下,有沒有辦法從API獲取數據庫連接字符串? 謝謝solidworks EPDM API獲取卡片列表

回答

0

不幸的是,這兩個問題的答案是否定的。沒有IEdmCardList對象,或從API獲取連接字符串的方法。

我所做的是創建自己的IEdmCardList對象,它繼承自IEdmObject5。然後,您可以創建它並將其用作對象,而不是將數據庫代碼放入項目中。我使用IEdmDictionary5來存儲連接字符串(在數據庫上只有一個只讀用戶)。這是不安全的,但我還沒有找到一個安全的方法來做到這一點。

對於此任何SOLIDWORKS提供的API示例也要小心。大多數都受到簡單的SQL注入。

0

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 
        } 
       } 
      }