| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: Reset Layers IDW (145 / mal gelesen)
|
Bluejay Mitglied Ingenieur
 
 Beiträge: 207 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: 20. Feb. 2025 08:27 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgenzusammen, ich habe mir folgenden Code hier aus dem Forum kopiert um die Layerüberschreibungen einer IDW zurückzusetzen. Oft bleibt der Code aber in der Zeile "For Each oDrawCurveSegment In oDrawCurve.Segments" hängen. Hat jemand hier eine schnelle Lösung woran es liegen könnte? Private Sub ResetLayers() Dim oApp As Inventor.Application Set oApp = ThisApplication If oApp.Documents.Count = 0 Or Not oApp.ActiveDocumentType = kDrawingDocumentObject Then MsgBox "Funktion nur in Zeichnungsableitungen möglich.", vbCritical, "ResetLayer" Exit Sub End If Dim oDrawDoc As DrawingDocument Set oDrawDoc = oApp.ActiveDocument Call ResetAllViews(oDrawDoc.ActiveSheet) MsgBox "Fertig", vbInformation, "ResetLayer" End Sub Private Sub ResetAllViews(ByVal oSheet As Sheet) Dim oView As DrawingView For Each oView In oSheet.DrawingViews Call ResetView(oSheet, oView) Next End Sub Private Sub ResetView(ByVal oSheet As Sheet, ByVal oView As DrawingView) Dim oDrawCurves As DrawingCurvesEnumerator Set oDrawCurves = oView.DrawingCurves() If Not oDrawCurves Is Nothing Then Dim oDrawCurveSegColl As ObjectCollection Set oDrawCurveSegColl = GetAllResetCurveSegs(oDrawCurves) Call ThisApplication.ActiveDocument.SelectSet.Clear Call ThisApplication.ActiveDocument.SelectSet.SelectMultiple(oDrawCurveSegColl) Call oSheet.ChangeLayer(oDrawCurveSegColl, Nothing) Call ThisApplication.ActiveDocument.SelectSet.Select(oView) Call ThisApplication.CommandManager.ControlDefinitions("AppLocalUpdateCmd").Execute End If End Sub Private Function GetAllResetCurveSegs(ByVal oDrawCurves As DrawingCurvesEnumerator) As ObjectCollection Dim oDrawCurve As DrawingCurve Dim oDrawCurveSegment As DrawingCurveSegment Dim oDrawCurveSegColl As ObjectCollection Set oDrawCurveSegColl = ThisApplication.TransientObjects.CreateObjectCollection For Each oDrawCurve In oDrawCurves For Each oDrawCurveSegment In oDrawCurve.Segments If oDrawCurveSegment.HiddenLine = False And oDrawCurveSegment.Visible = True Then Call oDrawCurveSegColl.Add(oDrawCurveSegment) End If Next Next Set GetAllResetCurveSegs = oDrawCurveSegColl End Function 'https://ww3.cad.de/foren/ubb/Forum50/HTML/022563.shtml
------------------ MFG BlueJay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 20. Feb. 2025 08:59 <-- editieren / zitieren --> Unities abgeben:          Nur für Bluejay
|
Bluejay Mitglied Ingenieur
 
 Beiträge: 207 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: 20. Feb. 2025 09:21 <-- editieren / zitieren --> Unities abgeben:         
Danke für die Rückfrage: Laufzeitfehler 424 in der Zeile "For Each oDrawCurveSegment In oDrawCurve.Segments" Diese hat es aber schon mehrmals durchlaufen und auch einige Ansichten wurden auch zurückgesetzt. LG ------------------ MFG BlueJay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 20. Feb. 2025 09:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Bluejay
Moin Passiert das immer wieder an der gleichen Stelle in der IDW oder funktioniert es bei mehrfachem Durchlauf plötzlich? Ist die betroffene Ansicht eine Erstansicht oder eine Detail/Ausbruch/Schnitt? In den abgeleiteten Ansichten macht die DIVA immer wieder mal seltsame Dinge. Kannst du mir eine betroffene IDW samt den 3D-Modellen zur Verfügung stellen? ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bluejay Mitglied Ingenieur
 
 Beiträge: 207 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: 20. Feb. 2025 09:51 <-- editieren / zitieren --> Unities abgeben:         
Leider kann ich aus Datenschutzgründen nichts hochladen. Aber es handelt sich immer um abgeleitete Ansichten und Schnittansichten. Ich forsche mal weiter Danke aber für die Hilfe ------------------ MFG BlueJay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 20. Feb. 2025 10:03 <-- editieren / zitieren --> Unities abgeben:          Nur für Bluejay
Moin Probiere es mal vorübergehend mit einem ignorieren des Fehlers. Ich vermute in der Ansicht nicht sichtbare Linien werden in der Sammlung der DrawingCurves gelistet, liefern aber beim Zugriff irgendwas oder nichts zurück. Code:
Private Function GetAllResetCurveSegs(ByVal oDrawCurves As DrawingCurvesEnumerator) As ObjectCollection Dim oDrawCurve As DrawingCurve Dim oDrawCurveSegment As DrawingCurveSegment Dim oDrawCurveSegColl As ObjectCollection Set oDrawCurveSegColl = ThisApplication.TransientObjects.CreateObjectCollection 'zum Testen alle Fehler ignorieren On Error Resume Next For Each oDrawCurve In oDrawCurves For Each oDrawCurveSegment In oDrawCurve.Segments If oDrawCurveSegment.HiddenLine = False And oDrawCurveSegment.Visible = True Then Call oDrawCurveSegColl.Add(oDrawCurveSegment) End If Next Next On Error Goto 0 Set GetAllResetCurveSegs = oDrawCurveSegColl End Function
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |