| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Manuell geänderte Layer zurücksetzen (852 / mal gelesen)
|
Bluejay Mitglied Ingenieur
Beiträge: 198 Registriert: 14.05.2007 Inventor 2011 for Simulation<P>Microsoft Windows XP Professional<P>Dell Precision T3400 Intel(R) Core(TM)2 Duo CPU E6750 @2,66 GHz 3,00 GB RAM
|
erstellt am: 27. Feb. 2020 08:16 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen liebes Forum, ich wollte mal fragen ob jemand im Forum eine kleines Programm hat welches alle manuell geänderten Linien / Layer auf die Standard layer zurückschaltet - mein Problem - wir haben Zeichnungen in welchen den Bauteile manuell andere Linien / Farben zugeordnet sind. Diese ist nur mit viel manueller Arbeit rückgängig zu machen! Über eine Hilfe / Tips / Programmteile bedanke ich mich schon im voraus Gruss ------------------ MFG BlueJay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 601 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 27. Feb. 2020 12:36 <-- editieren / zitieren --> Unities abgeben: Nur für Bluejay
klappt das nicht über die Benutzeroberfläche? Alle Objekte der Zg. markieren Reiter "mit Anmerkung versehen", Gruppe Format, -> oberes Auswahlmenü "Layer" -> oberster Punkt in der Liste "Nach Norm" Das stellt (in meinem kleinen Versuch zumindest) alles wieder auf den Default. So wie es in der aktiven Norm unter den Objektvorgaben eingestellt ist, zu finden im Stil-Editor. In der API konnte ich 'genau das' jetzt nicht finden. [ich fand das ObjectDefaultsStyle Object, das Pendant zu den Objektvorgaben. Bisher bin ich auf dem Stand, dass man alle Objekttypen der Zg. durchlaufen müsste, Layer des Objects mit dem Default vergleichen, ggf. Default zuweisen. Das sind aber viele Typen und entsprechend viel Code. Könnte mir aber vorstellen, dass es andere Möglichkeiten / Methoden gibt, die ich nur nicht gefunden habe.] ------------------ Gruß KraBBy 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: 27. Feb. 2020 23:12 <-- editieren / zitieren --> Unities abgeben: Nur für Bluejay
Hallo Ich denke es geht nur um Körperkanten, also DrawingCurves. Könnte man mit dem Programm mal versuchen. Layer und Linientyp funktionieren, aber das Rücksetzen der Linienstärke erzeugt fehlerhafte Ergebnisse. Extrem ungünstig wird's, wenn beim Zuweisen der Auswahlfilter auf "Körper", "Element" oder "Bauteil" gesetzt war. Da liefert die API nur generische Objekte mit denen man nichts anfangen kann.
Code: ' Setzt ALLE DrawingCurvge-Objekte einer Zeichnung zurück auf den Standardlayer (nach Norm) und entfernt Farbüberschreibungen. ' Es gibt in dem Sinne keinen Standardlayer. Weist man den Objekten als Layer NOTHING zu, weist Inventor wieder die Layer gemäß Stilvorgaben zu. ' Farbüberschreibungen werden entfernt, indem das Property OverrideColor der DrawingCurve auf NOTHING gesetzt wird. ' Überschriebene Linienstärken würden mit Stärke "0" zurückgesetzt, aber da kommen fehlerhafte Ergebnisse raus. :-/Private Sub ResetDrawingCurveSegments() Dim myDrawDoc As DrawingDocument Set myDrawDoc = ThisApplication.ActiveDocument Dim mySheet As Sheet For Each mySheet In myDrawDoc.Sheets mySheet.Activate Call UpdateSheet(mySheet) mySheet.Update Next End Sub Private Sub UpdateSheet(ByVal oSheet As Sheet) Dim oView As DrawingView For Each oView In oSheet.DrawingViews If oView.Suppressed = False Then Call UpdateView(oSheet, oView) End If Next End Sub Private Sub UpdateView(ByVal oSheet As Sheet, ByVal oView As DrawingView) Dim oSelection As ObjectCollection Set oSelection = ThisApplication.TransientObjects.CreateObjectCollection
Dim oDrawCurve As DrawingCurve Dim oDrawingCurveSegment As DrawingCurveSegment Dim oColor As Color For Each oDrawCurve In oView.DrawingCurves ' Funktioniert nicht sauber 'If oDrawCurve.LineWeight > 0 Then ' oDrawCurve.LineWeight = 0 ' End If If Not oDrawCurve.LineType = kDefaultLineType Then oDrawCurve.LineType = kDefaultLineType End If If oDrawCurve.Color.ColorSourceType = kOverrideColorSource Then oDrawCurve.OverrideColor = oColor End If For Each oDrawCurveSegment In oDrawCurve.Segments Call oSelection.Add(oDrawCurveSegment) Next Next If oSelection.Count > 0 Then Call ChangeLayer(oSheet, oSelection) End If End Sub Private Sub ChangeLayer(ByVal oSheet As Sheet, ByVal oSelection As ObjectCollection) Dim oLayer As Layer Call oSheet.ChangeLayer(oSelection, oLayer) End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| |
Bluejay Mitglied Ingenieur
Beiträge: 198 Registriert: 14.05.2007 Inventor 2011 for Simulation<P>Microsoft Windows XP Professional<P>Dell Precision T3400 Intel(R) Core(TM)2 Duo CPU E6750 @2,66 GHz 3,00 GB RAM
|
erstellt am: 04. Mrz. 2020 11:26 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|