| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | InnovateNext 26. in Donaueschingen, eine Veranstaltung am 13.11.2025
|
Autor
|
Thema: api zum Datenkarte ändern (setvar)ergibt fehler (1856 / mal gelesen)
|
LeonardStark Mitglied
 
 Beiträge: 108 Registriert: 14.08.2018
|
erstellt am: 28. Jun. 2019 13:15 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ich bekomme immer eine Fehlermeldung, wenn ich über setvar ein Feld in einer Datenkarte ändern möchte: " Es wurde versucht eine Datei zu öffnen, die von einer anderen Anwendung geöffnet ist" Hat jemand eine Idee, was mein Fehler ist? Hier der Code: Code:
IEdmFile5 afile = null; swPart = swApp.ActiveDoc; //ModelDoc2 swModel = swApp.ActiveDoc; string Pfad = swPart.GetPathName(); object HArt = null; object Ben2 = null; afile = eVault.GetFileFromPath(Pfad, out ParentFolder); string mytemp=null; string[] ConfigNames; IEdmEnumeratorVariable5 myvarEnum_openPart = null; ConfigNames = swApp.GetConfigurationNames(swPart.GetPathName()); myvarEnum_openPart = afile.GetEnumeratorVariable(); myvarEnum_openPart.GetVar("HArtikelnummer", "@", out HArt); myvarEnum_openPart.GetVar("Benennung2", "@", out Ben2); foreach (string myConfigName in ConfigNames) { myvarEnum_openPart.SetVar("Benennung2 ", myConfigName, HArt.ToString()); //Diese Zeile Produziert den Fehler myvarEnum_openPart.Flush(); } MessageBox.Show("fertig");
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
  
 Beiträge: 729 Registriert: 17.01.2007 SWX 2023 SP5 Draftsight 2023 Win 11 Enterprise Intel i7-13700 2.10 GHz 64GB RAM Nvidia RTX A2000 12GB SWx EPDM AP+ CSWE 2018
|
erstellt am: 28. Jun. 2019 14:03 <-- editieren / zitieren --> Unities abgeben:          Nur für LeonardStark
Zitat: Original erstellt von LeonardStark: Hat jemand eine Idee, was mein Fehler ist?
SolidWorks hat dir doch schon gesagt, was dein Fehler ist: "Es wurde versucht eine Datei zu öffnen, die von einer anderen Anwendung geöffnet ist." Du hast die Datei im SolidWorks offen. Währenddessen kannst du in der Datenkarte keine Änderungen vornehmen. Nicht per API und übrigens auch nicht von Hand. Genausowenig wie du eine Datei im Explorer ein- oder auschecken kannst, während sie geöffnet ist. Möglichkeit 1: Die Eigenschaft direkt im Modell ändern und das speichern. Möglichkeit 2: Die Änderung vornehmen ohne das Teil zu öffnen. Edit: Möglichkeit 3: Theoretisch kannst du im Admin-Tool die Warnung deaktivieren (lassen). Die Folgen von inkosistenten Daten malst du dir bitte selbst aus... Gruß, Jens ------------------ CSWE =) [Diese Nachricht wurde von CAD-Maler am 28. Jun. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LeonardStark Mitglied
 
 Beiträge: 108 Registriert: 14.08.2018
|
erstellt am: 28. Jun. 2019 14:51 <-- editieren / zitieren --> Unities abgeben:         
Hallo jens, vermutlich versteh ich dich da falsch, also korrigier mich bitte, aber von hand kann ich sehr wohl im geöffneten Solidworks die Datenkarte anzeigen lassen und dort Werte ändern. Aber wie stell ich denn das per API an? Ich geh jetzt den weg, die Datei zu schließen, stehe aber dann vor dem nächsten Problem, dass die Datei Schreibgeschützt ist, wenn ich sie wieder öffne. (Zur Erklärung, mein Makro läuft über eine separate WindowsForm). Damit ich daraus eine Lösung ziehen kann, könntest du mir bitte noch sagen, welche methode/Funktion/Ansatz/google suche du meinst mit“direkt im Modell und das speichern“? Und hat vielleicht noch jemand eine Idee, wie man das dokument nach der Bearbeitung wieder öffnet ohne dass es schreibgeschützt ist?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1362 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 28. Jun. 2019 16:21 <-- editieren / zitieren --> Unities abgeben:          Nur für LeonardStark
Hi Leonard, Du wirst hier ".ForceReleaseLocks()" verwenden müssen da Solidworks die Datei in Zugriff hat und du so keine Änderungen durchführen kannst. Danach kannst du die Datei Solidworks mit ".ReloadOrReplace" wieder in Zugriff geben. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Olls Lai Lolli Mitglied Konstrukteur
 
 Beiträge: 381 Registriert: 07.05.2009 MS Windows 10 Prof. Intel Xeon E5-1630 v 3 3.7 GHz 32 GB Ram Nvidia Quadro M4000 SWX 2019 x64 SP 5 PDM Enterprise 2019 SP 3
|
erstellt am: 29. Jun. 2019 16:08 <-- editieren / zitieren --> Unities abgeben:          Nur für LeonardStark
|
LeonardStark Mitglied
 
 Beiträge: 108 Registriert: 14.08.2018
|
erstellt am: 01. Jul. 2019 08:47 <-- editieren / zitieren --> Unities abgeben:         
Super Carsten, danke für den Tipp. Das probier ich aus. Nicht direkt OLL, ich ändere Bauteilabmessungen, die automatisiert in der Datenkarte geschrieben bzw dort aktualisiert werden sollen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LeonardStark Mitglied
 
 Beiträge: 108 Registriert: 14.08.2018
|
erstellt am: 01. Jul. 2019 14:11 <-- editieren / zitieren --> Unities abgeben:         
Mit dem Forcereleaslocks läuft das Makro jetzt gut durch und tut was es soll. Der Teil Code:
string Pfad = swPart.GetPathName(); swPart.ReloadOrReplace(false, Pfad, true);
scheint aber noch nicht zu funktionieren. Die Datei ist nach Ablauf wieder schreibgeschützt für SldWks. Benutze ich da was falsch? [Diese Nachricht wurde von LeonardStark am 01. Jul. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1362 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 01. Jul. 2019 14:35 <-- editieren / zitieren --> Unities abgeben:          Nur für LeonardStark
|

| |
LeonardStark Mitglied
 
 Beiträge: 108 Registriert: 14.08.2018
|
erstellt am: 01. Jul. 2019 14:39 <-- editieren / zitieren --> Unities abgeben:         
|