| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Bug in Document.Dirty? (1631 mal gelesen)
|
pbm Mitglied Ingenieur
Beiträge: 76 Registriert: 19.04.2004
|
erstellt am: 19. Apr. 2004 15:20 <-- editieren / zitieren --> Unities abgeben:
Hi, ich brauche Hilfe, weil ich nicht weiterkomme. Laut Inventor API Hilfe ist Dirty in Document-Object ein read-write property. Wenn aber das Property schon True ist, kann ich mit oDoc.Dirty=False (s. Code) das Wert nicht ändern. Ist das ein Bug in Inventor (R8, SP 1) oder mache ich was falsch. Danke im Voraus... Sub main() Dim oApp As Application Dim oDoc As Document Set oApp = ThisApplication Set oDoc = oApp.ActiveDocument oDoc.Dirty = False MsgBox oDoc.Dirty End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 19. Apr. 2004 19:00 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
Hi, würde mich wundern, wenn du das dirty Flag einfach auf False setzen kannst. Das Flag zeigt dir, ob an deinem Dokument seit dem letzten Speichern etwas geändert wurde. Auf False bringst du es normalerweise mit Document.Save oder Document.SaveAs
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 19. Apr. 2004 20:04 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
Mich würde das auch stark wundern. Ich glaube eher an das "Copy and Paste Syndrom" beim Hilfe Ersteller Nein, "dirty" Eigenschaft als write würde keinen Sinn ergeben. Das ist ein Schreibfehler...
------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 20. Apr. 2004 07:34 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
Hi nochmal, nene, Sachen gibts. Es gibt tatsächlich tief in den tlbs versteckt eine get und put Property für das Dirty Flag. Man kann das Ding also tatsächlich (theoretisch) selbst auf False setzen. Angenommen wird der Wert allerdings nicht. Ich glaube, da hat nicht nur beim Doku erstellen Mister Copy'n'Paset zugeschlagen. :-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 20. Apr. 2004 07:53 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Apr. 2004 07:54 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
Hi, also ich habe gestern auch mit Mathias darüber diskutiert und fazit: dirty flag auf true zu setzen ist vielleicht gar nicht so vekehrt. Du hast an der Datei etwas gemacht, möglicher Weise mit Apprentice, so dass der Inventor nichts davon bekommt, und willst ihm aber sagen, dass du was gemacht hast. Ok, dirty flag auf true. Dirty flag auf false ist eigentliche Schwachsinn. Das ist ja schon klar. Aber wie schon bekannt hat Boolean halt true und false, und da kommt der Chaos. Letztendlich scheint mir das doch richtig zu funktionieren, da: 1. die benutzen eine Boolean 2. die unterbinden false flag Also, es scheint alles klar zu sein Aber cool wäre es trotzdem: Das Dokument: Hilfe, hilfe ich bin "dirty" Der Programmierer: Shut up ! you.dirty = false you.update ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Apr. 2004 07:59 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
Zitat: die dirty-flag arbeitet nicht immer 100% zuverlaessig
Das geht ja noch. Mein Gott wer arbeitet noch 100% Aber langsam glaube ich dass die healt flag grundsätzlich falsch arbeitet. Wenn du da true bekommst kannst ruhig von false ausgehen Die hätten die auch LSDhealt nennen können. ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 20. Apr. 2004 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Apr. 2004 08:42 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
Ja, klar HealthStatusEnum, aber letztendlich interessiert mich ja auch nur ob kUpToDateHealth (11778) Object is up-to-date. Daher ist ja fast wie Boolean Allerding funktioniert es bei mir sehr selten. Ich muss aber dazu sagen, dass ich es explizit auf ApprenticeServerDrawingDocument anwende. Wo es mit 80% Sicherheit nicht funktionert ist: 1. Wenn die referenzierende Dokumente eine Textur haben 2. Bei der Adaptivität von refernzierneden Dokumenten Aber das ist leider nicht alles. Das Problem ist aber bekannt, und die Leute arbeiten daran. Mich würde aber interessieren ob du mit ApprenticeServerDrawingDocument wohl keine Probleme hast ? ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 20. Apr. 2004 08:50 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
|
pbm Mitglied Ingenieur
Beiträge: 76 Registriert: 19.04.2004
|
erstellt am: 20. Apr. 2004 13:03 <-- editieren / zitieren --> Unities abgeben:
Hi, danke erstmals für die zahlreichen Beiträgen. dirty=false macht schon Sinn, wenn ich ein Dokumnet mit VB öffne und Änderungen mache, die für den User nicht interresant sind. Dann sage am Ende durty=false. Das Beispiel kommt von EDM-Bereich, wenn ich ein Dokument zum Anschauen lade. Dann macht das Inv-Fenster "Sollen die Änderungen gespeichert werden" beim Schliessen für den User kein Sinn, und diese Meldung kann man mit setzen von dirty=false elegant umgehen, schein aber doch nicht zu funktionieren. Andere Möglichkeit ist Zwischenspeichern oder Schliessen-Event abzufangen, ich wollte aber wissen was die klugen Köpfen über dirty sagen werden :-) Gruss, pbm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Apr. 2004 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für pbm
Zitat:
Das Beispiel kommt von EDM-Bereich, wenn ich ein Dokument zum Anschauen lade. Dann macht das Inv-Fenster "Sollen die Änderungen gespeichert werden" beim Schliessen für den User kein Sinn, und diese Meldung kann man mit setzen von dirty=false elegant umgehen
Folgendes: 1. Bauteil1.ipt erstellen 2. Bauteil1.idw erstellen mit referenz auf Bauteil1.ipt 3. Beide Dateien schliessen und die idw mit Apprentice prüfen ----a) Dirty = False ----b) HealtStatus = Object is up-to-date. 4. Bauteil1.ipt verändern - abspeichern - schliessen 5. Die idw mit Apprentice prüfen ----a) Dirty = False ----b) HealtStatus = Object needs to be recomputed with respect to its 'driver(s).' 6. IDW öffnen nichts machen - schliessen -> Meldung "Änderungen an Bauteil1.idw speichern ?" 7. Die idw mit Apprentice prüfen ----a) Dirty = False ----b) HealtStatus = Object needs to be recomputed with respect to its 'driver(s).' Was ich sagen will, ist dass du die Meldung nicht mit dirty = false umgehen kannst, da dirty ja sowieso schon auf false ist. Und HealtStatus ist Read-only. Aber wie schon gesagt, das ist Apprentice... ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pbm Mitglied Ingenieur
Beiträge: 76 Registriert: 19.04.2004
|
erstellt am: 20. Apr. 2004 13:54 <-- editieren / zitieren --> Unities abgeben:
|