Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Manuell geänderte Layer zurücksetzen

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 Autodesk Produkte
Autor Thema:  Manuell geänderte Layer zurücksetzen (824 mal gelesen)
Bluejay
Mitglied
Ingenieur


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

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 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

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


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

Beiträge: 601
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 27. Feb. 2020 12:36    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 Bluejay 10 Unities + Antwort hilfreich

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




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 27. Feb. 2020 23:12    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 Bluejay 10 Unities + Antwort hilfreich

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


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

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 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

Vielen Dank für die Hilfe - habe das Problem gelöst

------------------
MFG

BlueJay

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)2023 CAD.de | Impressum | Datenschutz