| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Skizzensichtbarkeit - Makro macht Unsinn (2244 mal gelesen)
|
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 20. Aug. 2009 23:26 <-- editieren / zitieren --> Unities abgeben:
Moin! Ich hab mir das unten zitierte Makro gebastelt, mit dem ich in Baugruppen oder Bauteilen sämtliche Skizzen wechselweise aus- und einblenden kann. Funktioniert soweit schön, nur habe ich bald festgetellt, dass es die Datei beschädigt. Obwohl das Makro den Wert Visible für alle Skizzen wieder auf 1 setzt, was dann sowohl im Browser als auch in der Objektüberwachung zu sehen ist, gibt es in der damit bearbeiteten Datei nun eine Reihe Skizzen, die man trotzdem nicht mehr sehen kann. Nur wenn man sie öffnet, sind sie wieder normal zu sehen und zu bearbeiten. Auch beim Überfahren mit der Maus im Browser werden sie normal gehighlightet. Normal allerdings sind sie nicht mehr sichtbar, obwohl das Icon bunt ist. Die Sichtbarkeit mit RMK im Broser aus- und wieder einzuschalten hilft auch nichts. Der Fehler scheint dann aufzutreten, wenn man das Makro während der Bearbeitung einer Skizze benutzt, das konnte ich in einem Test.ipt provozieren. Gerade beim Bearbeiten von Skizzen aber brauch ich das, alle anderen Skizzen unsichtbar machen zu können, und zwar in einem Master-Layout, das nur Ebenen und Skizzen enthält. Was mir bereits aufgefallen ist: der in der Überwachung unterhalb der Zeile oPart.ComponentDefinition.Sketches.Item(#).Visible aufgeführte Wert VisibleBelowEndOfPart ist bei den betroffenen Skizzen 0, und bei den gesunden Skizzen 1. Ich habe daraufhin in dem Makro ergänzt, auch diesen Wert auf 1 zu setzen, das hilft aber nix, er bleibt bei den betroffenen Skizzen trotzdem 0. Bauteilende rauf und runter hat auch nix gebracht. Code: If ThisApplication.ActiveDocumentType = kPartDocumentObject Then Dim oPart As PartDocument Set oPart = ThisApplication.ActiveDocument Dim oSketch As Sketch Dim v As Boolean If oPart.ComponentDefinition.Sketches.Item(1).Visible Then v = 0 Else v = 1 End If For Each oSketch In oPart.ComponentDefinition.Sketches oSketch.Visible = v oSketch.VisibleBelowEndOfPart = v Next End If
------------------ Roland www.Das-Entwicklungsbuero.de 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: 21. Aug. 2009 00:09 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
KANN ES GERADE NICHT TESTEN, ABER... WENN DU DIR SICHER BIST, DASS ES NUR IM SKIZZENBEARBEITUNGSMODUS PASSIERT, DANN BEENDE DIE BEARBEITUNG UND MERKE DIR DIE SKIZZE IN DER DIE BEARBEITUNG STATT GEFUNDEN HAT. NACH DEM DU DEIN MAKRO AUSGEFÜHRT HAST, WECHSLE WIEDER IN DIE BEARBEITUNG UND GUT IST (SKETCH OBJEKT NÄHER ANSCHAUEN...). VIELLEICHT HILFT ES? SORRY, MEINE TASTATUR SPINNT... ------------------ Grüße Igor FX64 Software Solutions - Inventor Tools Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 21. Aug. 2009 00:59 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von daywa1k3r: ...beende die Bearbeitung und merke Dir die Skizze,in der die Bearbeitung stattgefunden hat. Nachdem Du Dein Makro ausgeführt hast, wechsle wieder in die Bearbeitung...
Das würde natürlich den Fehler vermeiden, ist aber ausgesprochen lästig und unbefriedigend. Da ist es ja schon weniger aufwändig, doch wieder wie früher mit RMK im Browser die anderen Skizzen (un)sichtbar zu schalten, das geht nämlich auch, wenn man eine Skizze geöffnet hat. Allerdings nur für die oberhalb, früher gelegenen Skizzen. Und da, so vermute ich, kommt das Problem auch her. Die unterhalb, später gelegenen Skizzen sind beim Bearbeiten einer Skizze nicht zugänglich, sie liegen praktisch unterhalb des momentanen Bauteilendes. Irgendwas läuft da schief. Das Makro kann ich aber auf jeden Fall nicht so fehlerträchtig lassen, denn ich muss die beschädigte Datei ja auch irgendwie wieder in Ordnung bringen. Davon hängt eine ganze Konstruktion ab! Wäre blöd, wenn man da so viele Skizzen einfach nicht sehen kann. Und weiter Beobachtungen: 1. Abgeleitete Komponente führt alle sichtbar geschalteten Skizzen trotz der Sichtbarkeitsstörung auswählbar auf (vor allem dafür brauch ich das Makro, weil man unsichtbar geschaltete Skizzen bei AK nicht auswählen kann), im Grafikbereich sind sie aber auch da nicht zu sehen. Wenn man sie dann ausgewählt hat, sind alle Projektionen sichtbar und normal zu benutzen, aber das sind ja auch neue Skizzen in einem neuen Bauteil. 2. Wenn ich das Bauteilende ganz nach oben schiebe und
Code: For Each oSketch In oPart.ComponentDefinition.Sketches oSketch.Visible = 1 oSketch.VisibleBelowEndOfPart = 1 Next
auführe, sind alle Skizzen wunderbar sichtbar wie einst im Mai. Wenn ich das Bauteilende aber dann wieder nach unten schiebe, ist alles wieder falsch wie vorher, und auch das erneute Ausführen dieses Befehls nützt nichts. 3. Wenn ich eine Skizze bearbeite und das eigentliche Makro ausführe, sind alle vorher gelegenen Skizzen wirklich sichtbar. Wenn ich die Skizze schließe, verschwinden sie wieder. ------------------ Roland www.Das-Entwicklungsbuero.de [Diese Nachricht wurde von Doc Snyder am 21. Aug. 2009 editiert.] 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: 21. Aug. 2009 08:08 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
|
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 21. Aug. 2009 18:04 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von daywa1k3r: ...Makro das machen lassen...
Oh! Ich werde mir Mühe geben. Aber selbst wenn ich es schaffe, dass das Makro auf diese Weise dann kein Unheil mehr anrichten kann, muss ich doch auch die verstellte Datei reparieren. Ich würde gerne herausfinden, wie ich die wieder in Ordnung bringen kann. ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 21. Aug. 2009 18:54 <-- editieren / zitieren --> Unities abgeben:
Rätselhaft! Gestern habe ich die beschädigte Datei nach allerlei Reparaturversuchen geschlossen, nicht ohne vor dem Überschreiben eine Kopie der vorherigen Version festzuhalten. Nu mach ich sie heute wieder auf (Inventor wurde nicht neu gestartet), da ist alles wieder gut. Sollte mein Versuch mit .VisibleBelowEndOfPart=1 also doch genützt haben? Aber wieso all das erst nach dem Schließen und wieder Öffnen? Ist so was üblich oder kann sich das jetzt nur um einen Irrtum meinerseits handeln? Der Wert .VisibleBelowEndOfPart ist jetzt jedenfalls für jede Skizze wieder 1, nur für Skizzen unterhalb des Bauteilendes ist er 0. Das Verschieben des Bauteilendes verändert ihn. Mir scheint, er hat eine andere Funktion als der Name mich zunächst vermuten ließ. ------------------ Roland www.Das-Entwicklungsbuero.de [Diese Nachricht wurde von Doc Snyder am 21. Aug. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dit71 Mitglied Konstrukteur
Beiträge: 43 Registriert: 27.02.2004 AIP 2011 P4 4GB RAM Win XP
|
erstellt am: 05. Mrz. 2010 14:15 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Das mit dem Skizzen ausblenden ist eine gute Idee und ich habe es für meine Zwecke so angepaßt daß ich die Skizzen beim bearbeiten von Bauteilen in einer Baugruppe ein-und ausblenden kann (ActiveEditObject). Leider aktualisiert sich Browser und Bildschirm nur wenn ich zoome oder mit der Maus über den Browser bewege. Gibt es einen refresh Befehl für den Bildschirm? opart.update hat nichts gebracht. 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: 05. Mrz. 2010 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
|
dit71 Mitglied Konstrukteur
Beiträge: 43 Registriert: 27.02.2004 AIP 2011 P4 4GB RAM Win XP
|
erstellt am: 08. Mrz. 2010 07:18 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
|
Alexander_M Mitglied Maschinenbautechniker
Beiträge: 926 Registriert: 09.03.2006 IV 2008 SP2 Win XP SP2 P4 3,4 GHz 3 GB RAM NVIDA Quatro NVS 285 128MB
|
erstellt am: 09. Aug. 2012 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Hallo die Herren, Im IV 2012 greift dieses Makro nicht durch die Baugruppe hindurch. Heißt in der IPT macht es was es soll, in der IAM macht's nichts. Kann jemand helfen. Danke! Meine VBA Kenntnisse neben copy & paste =0
------------------ Gruß Alexander Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 09. Aug. 2012 19:34 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Hmmmmm, vielleicht weil es ein Makro für Parts ist??? Dann Copy&Paste mal. Code: Private Sub SwitchSketchVisibility()Dim oSketch As sketch Dim v As Boolean If ThisApplication.ActiveDocument.DocumentType = kPartDocumentObject Then Dim oPart As PartDocument Set oPart = ThisApplication.ActiveDocument If oPart.ComponentDefinition.Sketches.Item(1).Visible Then v = 0 Else v = 1 End If For Each oSketch In oPart.ComponentDefinition.Sketches oSketch.Visible = v oSketch.VisibleBelowEndOfPart = v Next ElseIf ThisApplication.ActiveDocument.DocumentType = kAssemblyDocumentObject Then Dim oAss As AssemblyDocument Set oAss = ThisApplication.ActiveDocument Dim oRefedDoc As Document For Each oRefedDoc In oAss.AllReferencedDocuments If oRefedDoc.DocumentType = kPartDocumentObject Then If oRefedDoc.ComponentDefinition.Sketches.Item(1).Visible Then v = 0 Else v = 1 End If For Each oSketch In oRefedDoc.ComponentDefinition.Sketches oSketch.Visible = v oSketch.VisibleBelowEndOfPart = v Next End If Next End If ThisApplication.ActiveView.Update End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |