| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| myCAD 2024 Visiativ-Kundentag in Rosenheim, eine Veranstaltung am 29.10.2024
|
Autor
|
Thema: api zum Datenkarte ändern (setvar)ergibt fehler (1536 / 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: 727 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: 1358 Registriert: 24.07.2002 AutoCAD ACA 2019 Solidworks 2021 Sp5.1 Enterprise PDM 2021 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell T3620 Intel Core i7-7700K 16 GB Arbeitsspeicher 2x Dell Ultrasharp U2415 Dell M4800
|
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: 376 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: 1358 Registriert: 24.07.2002 AutoCAD ACA 2019 Solidworks 2021 Sp5.1 Enterprise PDM 2021 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell T3620 Intel Core i7-7700K 16 GB Arbeitsspeicher 2x Dell Ultrasharp U2415 Dell M4800
|
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:
|