Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  api zum Datenkarte ändern (setvar)ergibt fehler

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
SOLIDWORKS im Browser: Das neue SOLIDWORKS Cloud Offer
Autor Thema:  api zum Datenkarte ändern (setvar)ergibt fehler (1446 / mal gelesen)
LeonardStark
Mitglied



Sehen Sie sich das Profil von LeonardStark an!   Senden Sie eine Private Message an LeonardStark  Schreiben Sie einen Gästebucheintrag für LeonardStark

Beiträge: 100
Registriert: 14.08.2018

erstellt am: 28. Jun. 2019 13:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von CAD-Maler an!   Senden Sie eine Private Message an CAD-Maler  Schreiben Sie einen Gästebucheintrag für CAD-Maler

Beiträge: 720
Registriert: 17.01.2007

SWX 2019 SP5
AutoCAD 2019
Win 10 pro 64 bit
Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 28. Jun. 2019 14:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LeonardStark 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von LeonardStark an!   Senden Sie eine Private Message an LeonardStark  Schreiben Sie einen Gästebucheintrag für LeonardStark

Beiträge: 100
Registriert: 14.08.2018

erstellt am: 28. Jun. 2019 14:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LeonardStark 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Olls Lai Lolli an!   Senden Sie eine Private Message an Olls Lai Lolli  Schreiben Sie einen Gästebucheintrag für Olls Lai Lolli

Beiträge: 366
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LeonardStark 10 Unities + Antwort hilfreich

Hallo Leomard,

darf ich fragen was du vor hast?
Du willst nicht zufällig ein Makro schreiben um alle Karten der Modelle und Zeichnungen automatisch abzugleichen?

Gruß OLL

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LeonardStark
Mitglied



Sehen Sie sich das Profil von LeonardStark an!   Senden Sie eine Private Message an LeonardStark  Schreiben Sie einen Gästebucheintrag für LeonardStark

Beiträge: 100
Registriert: 14.08.2018

erstellt am: 01. Jul. 2019 08:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von LeonardStark an!   Senden Sie eine Private Message an LeonardStark  Schreiben Sie einen Gästebucheintrag für LeonardStark

Beiträge: 100
Registriert: 14.08.2018

erstellt am: 01. Jul. 2019 14:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LeonardStark 10 Unities + Antwort hilfreich

Hi Leonard,

Welchen Rückgabewert bekommst du denn wenn das ReloadOrReplace durchgeführt wird?!

Gruß, Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Techniker Maschinenbau 80?100% (m/w/d) | Minenräumsysteme

We create safe environments ? Wir beseitigen explosive Bedrohungen und bringen Lebensräume zurück. Unsere innovativen und bewährten Technologien verbinden wir mit operativer Einsatzerfahrung. Damit stellen wir die effiziente und nachhaltige Räumung von Landminen und anderen Munitionsformen sicher. Als inhabergeführtes Unternehmen mit Hauptsitz in der Schweiz und Produktionsstandort in Deutschland sowie regionalen Niederlassungen zählen wir weltweit zu den führenden Anbietern....

Anzeige ansehenMaschinenbau
LeonardStark
Mitglied



Sehen Sie sich das Profil von LeonardStark an!   Senden Sie eine Private Message an LeonardStark  Schreiben Sie einen Gästebucheintrag für LeonardStark

Beiträge: 100
Registriert: 14.08.2018

erstellt am: 01. Jul. 2019 14:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

das liefert eine 0

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz