| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: iProperties (4045 mal gelesen)
|
Hatl23 Mitglied Konstrukteur
Beiträge: 13 Registriert: 28.02.2007 INVENTOR 11 SP2
|
erstellt am: 12. Mrz. 2007 11:00 <-- editieren / zitieren --> Unities abgeben:
Hi, habe ein Problem, seht euch zuerst den Code an und sagt mir nachher ob das geht, bei FlushtoFile hängts mich auf, dabei gebe ichs so an, wie es in den Beispielprogrammen bei IV11 steht. Code:
Dim inventor_obj As New InventorApprentice.ApprenticeServerComponent Dim inv_document As InventorApprentice.ApprenticeServerDocument Dim props As PropertySet Dim prop As [Property]inv_document = inventor_obj.Open(irgendeine.ipt) For Each props In inv_document.PropertySets If props.DisplayName = "Summary Information" Then For Each prop In props If prop.PropId = 4 Then prop.Value = "grzerh01" Exit For End If Next End If Next inv_document.PropertySets.FlushToFile()
Danke voraus, Hatl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Mrz. 2007 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
|
Hatl23 Mitglied Konstrukteur
Beiträge: 13 Registriert: 28.02.2007 INVENTOR 11 SP2
|
erstellt am: 12. Mrz. 2007 11:17 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Mrz. 2007 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
|
Hatl23 Mitglied Konstrukteur
Beiträge: 13 Registriert: 28.02.2007 INVENTOR 11 SP2
|
erstellt am: 12. Mrz. 2007 11:44 <-- editieren / zitieren --> Unities abgeben:
Na bravo, hab das angewendet. Bringt aber überhaupt nix. Mein Fehler lautet: Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL)) I bin leider kein Profi. Interessant ist nur, das Beispiel bei IV11 macht keine Probleme, es ist aber ein VB6 Programm. Habs soweit ja auf VB.Net umgebaut, aber gerade bei dem Flushtofile hängts ihn aus. Weiß sonst jemand, wie man die Properties ändern kann, auslesen ist ja kein Problem. MFG Hatl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Mrz. 2007 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
Zitat: Original erstellt von Hatl23: Na bravo, hab das angewendet. Bringt aber überhaupt nix.
Doch. Eine Fehlermeldung. Als nächstes solltest du die Zeile ausfindig machen wo der Fehler passiert. Nachtrag: Und das: Dim prop As [Property] würde ich durch Dim prop as Inventor.Property ersetzen. ------------------ Grüße Igor FX64 Software Solutions HMI ~ 16.-20. April 2007 ~ CAD.de Halle 17, Stand F60 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hatl23 Mitglied Konstrukteur
Beiträge: 13 Registriert: 28.02.2007 INVENTOR 11 SP2
|
erstellt am: 12. Mrz. 2007 12:31 <-- editieren / zitieren --> Unities abgeben:
Ich hoffe doch du hast gemeint ich soll [Property] durch InventorApprentice.Property ersetzen, denn nur das geht. Mein Fehler taucht wie anfangs schon gesagt bei inv_document.PropertySets.FlushToFile() auf und ich weiß nicht warum. Hilfee MFG Hatl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 12. Mrz. 2007 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
|
Hatl23 Mitglied Konstrukteur
Beiträge: 13 Registriert: 28.02.2007 INVENTOR 11 SP2
|
erstellt am: 12. Mrz. 2007 13:38 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Mrz. 2007 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
Zitat: Original erstellt von rtend12: probier mal:oprops.flushtofile Gruß Reinhard
Hallo Reinhard, oprops hat er gar nicht drin. Und wenn du props meinst, dann hat er am Ende das letzte PropertySet drin. Nachtrag: Oder meinst du den Aufruf ohne () ? oDocument.PropertySets.FlushToFile(); funktioniert in C# einwandfrei. ------------------ Grüße Igor FX64 Software Solutions HMI ~ 16.-20. April 2007 ~ CAD.de Halle 17, Stand F60 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Mrz. 2007 13:44 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
Zitat: Original erstellt von Hatl23: geht netschön langsam werd i wahnsinnig, gibts den keinen der mit seinem standalone programm die iproperties ändert und des bitte in VB.net. Hatl
Warum willst du es überhaupt in VB.NET machen wenn mit VB funktioniert? ------------------ Grüße Igor FX64 Software Solutions HMI ~ 16.-20. April 2007 ~ CAD.de Halle 17, Stand F60 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hatl23 Mitglied Konstrukteur
Beiträge: 13 Registriert: 28.02.2007 INVENTOR 11 SP2
|
erstellt am: 12. Mrz. 2007 13:47 <-- editieren / zitieren --> Unities abgeben:
|
Hatl23 Mitglied Konstrukteur
Beiträge: 13 Registriert: 28.02.2007 INVENTOR 11 SP2
|
erstellt am: 12. Mrz. 2007 13:50 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von daywa1k3r: Hallo Reinhard,oprops hat er gar nicht drin. Und wenn du props meinst, dann hat er am Ende das letzte PropertySet drin. Nachtrag: Oder meinst du den Aufruf ohne () ? oDocument.PropertySets.FlushToFile(); funktioniert in C# einwandfrei.
Der Aufruf ist im VB6 ohne (), das ist richtig, in VB.net steht es mit (). I kenn mi net mehr aus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Mrz. 2007 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
|
Hatl23 Mitglied Konstrukteur
Beiträge: 13 Registriert: 28.02.2007 INVENTOR 11 SP2
|
erstellt am: 12. Mrz. 2007 13:56 <-- editieren / zitieren --> Unities abgeben:
Der Fehler taucht ja im Code auf, da brauch i keinen Breakpoint Bei "inv_document.PropertySets.FlushToFile()" steht dann der Fehler "COMException wurde nicht behandelt Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))" versteh net warum Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Mrz. 2007 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
|
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 12. Mrz. 2007 14:26 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
|
Hatl23 Mitglied Konstrukteur
Beiträge: 13 Registriert: 28.02.2007 INVENTOR 11 SP2
|
erstellt am: 12. Mrz. 2007 14:38 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Mrz. 2007 14:48 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
Zitat: Original erstellt von Hatl23: ...Interessant ist nur, das Beispiel bei IV11 macht keine Probleme, es ist aber ein VB6 Programm. Habs soweit ja auf VB.Net umgebaut, aber gerade bei dem Flushtofile hängts ihn aus...
------------------ Grüße Igor FX64 Software Solutions HMI ~ 16.-20. April 2007 ~ CAD.de Halle 17, Stand F60 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 14. Mrz. 2007 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
|
Verena Thiebus Mitglied Softwareentwicklerin
Beiträge: 67 Registriert: 27.06.2008 Microsoft Visual Studio 2008 Vista Enterprise 32bit SP2 Inventor 2008/2009/2010 PSP 2008/2009
|
erstellt am: 27. Jun. 2008 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
Zitat: Original erstellt von rtend12: Ich glaub du hast keine Schreibrechte auf die Datei. Kann das sein?Gruß Reinhard
Hallo allerseits! Ich probiere mich gerade darin bestehende IProperties zu ändern. Leider happert es bei mir beim Speichern, irgendwie macht er das nicht. Wie ist denn das mit dem Schreibrechten? Muss ich da selber programmatisch mit C# was setzen auf das document? Benutzt man zum Speichern FileSaveAs.ExecuteSave() oder FileSaveAs.ExecuteSaveAs()? Hier mal mein Code zum Speichern zweier Dateien: private void buttonSaveInput_Click(object sender, EventArgs e) { // Bestimmen der zu ändernden Property String[] strSplit = this.textBoxPropertyName.Text.Split('('); String propertyName = strSplit[0]; propertyName = propertyName.TrimEnd(); String propertySetName = strSplit[1]; propertySetName = propertySetName.Replace(")", ""); // Wert für IAM setzen PropertySet propIAM = this.iam.PropertySets[propertySetName]; //holt die Property, die wir ändern wollen foreach (Property prop in propIAM) { if (prop.DisplayName.Equals(propertyName)) { prop.Value = this.textBoxPropertyValueIAM.Text; } } // Wert für IPT setzen PropertySet propIPT = this.ipt.PropertySets[propertySetName]; //holt die Property, die wir ändern wollen foreach (Property prop in propIPT) { if (prop.DisplayName.Equals(propertyName)) { ipt.ReservedForWriteByMe = true; prop.Value = this.textBoxPropertyValueIPT.Text; ipt.PropertySets.FlushToFile(); } } this.inventor.FileSaveAs.AddFileToSave(ipt, ipt.FullFileName); this.inventor.FileSaveAs.AddFileToSave(iam, iam.FullFileName); this.inventor.FileSaveAs.ExecuteSave(); this.listViewDifferences.Items.Clear(); Dictionary<string, string> iptPropertyList = getIPropertyList(ipt); Dictionary<string, string> iamPropertyList = getIPropertyList(iam); createListView(iptPropertyList, iamPropertyList); this.inventor.Close(); } Vielen Dank und Gruß! Verena Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 01. Jul. 2008 21:26 <-- editieren / zitieren --> Unities abgeben: Nur für Hatl23
Hallo Verena, willst du nur die Properties neu schreiben? Dann solltest du FlushToFile verwenden, das geht sehr viel schneller als der SaveAs-Befehl, weil nur die Properties neu geschrieben werden. Beim SaveAs-Befehl wird die komplette Datei neu geschrieben. Da darfst du entweder nur eine Datei nach der anderen speichern oder du mußt die gesamte Struktur rekursiv durchlaufen und die gewünschten Dateien dem SaveAs-Befehl mit AddFileToSave hinzufügen und dann mit Saveas speichern. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |