Autor
|
Thema: Zeichnungshintergrund-Zuweisung weg? (727 / mal gelesen)
|
Booyaka Mitglied
Beiträge: 122 Registriert: 22.06.2012 CATIA V5 R19, 24, 26, 28, 29
|
erstellt am: 05. Jun. 2019 07:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich hab da mal wieder ein Problem. Und zwar haben wir nen Zeichnungsrahmen-Muster wofür ich eine UserForm aufgebaut habe um diese bei neuen Zeichnungen einzufügen und über die UserForm sollen dann auch nach dem einfügen die Textboxen abgeändert werden. Das Problem was ich jetzt hab ist das mir nach dem Paste-Befehl die Zuweisung des Sheethintergrunds flöten geht :O (zumindest glaub ich das)
Code:
Public oDrwDoc As DrawingDocument Public oDrwSheets As DrawingSheets Public oActSheet As DrawingSheet Public oDrwViews As DrawingViews Public oActMainView As DrawingView Public oActBckrnd As DrawingView Public oDrwTexts As DrawingTexts Public oSel As Selection Public oSelObj As Object ______________________________________________________ Private Sub UserForm_Initialize() Set oDrwDoc = CATIA.ActiveDocument Set oDrwSheets = oDrwDoc.Sheets Set oActSheet = oDrwSheets.ActiveSheet Set oDrwViews = oActSheet.Views Set oActMainView = oDrwViews.Item(1) Set oActBckrnd = oDrwViews.Item(2) Set oDrwTexts = oActBckrnd.Texts Set oSel = oDrwDoc.Selection Set oSelObj = oSel oSel.Clear oSel.Add oActBckrnd MsgBox oSel.Item(1).Value.Name oSel.Clear End Sub ____________________________________________________________ Private Sub CommandButton1_Click() Call InsertDrwFrame 'nach dem call sollen die TextBoxen angepasst werden oSel.Clear oSel.Add oActBckrnd MsgBox oSel.Item(1).Value.Name oSel.Clear End Sub _____________________________________________________________________ Private Sub InsertDrwFrame() Dim oDocs As Documents Set oDocs = CATIA.Documents Dim oPathDrwFrame As String oPathDrwFrame = "[Pfad]" 'Muster öffnen On Error Resume Next Dim oDrwFrame As DrawingDocument Set oDrwFrame = oDocs.Open(oPathDrwFrame) If Err.Number <> 0 Then MsgBox "Auf die Muster-Datei kann nicht zugegriffen werden." Exit Sub End If On Error GoTo 0 'Hintergrund des Musters kopieren und in die Zeichnung einfügen Dim oSelTemp As Selection Dim oSelObjTemp As Object Set oSelTemp = oDrwFrame.Selection Set oSelObjTemp = oSel oSelTemp.Clear oSelTemp.Add oDrwFrame.Sheets.ActiveSheet.Views.Item(2) oSelTemp.Copy oSelTemp.Clear oDrwDoc.Activate oActBckrnd.Activate oSel.Clear oSel.Add oActSheet oSel.Paste '<---- Hier scheint das Problem zu liegen wenn ich die Zeile ausklammer behalte ich die Zuweisung oSel.Clear oDrwFrame.Close oActMainView.Activate End Sub
Übrigens ist das nur eine Test-UserForm aufs nötigste reduziert um den "Fehler" zu finden. Und die MsgBoxen sind nur eben zum Überprüfen für mich. Weiß einer was ich da falsch mache? ------------------ „Nicht Erfolg ist der Schlüssel zum Glück, sondern Glück ist der Schlüssel zum Erfolg. Wenn du gerne tust, was du tust, wirst du auch erfolgreich sein.“ ― Albert Schweitzer [Diese Nachricht wurde von Booyaka am 05. Jun. 2019 editiert.] [Diese Nachricht wurde von Booyaka am 05. Jun. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 05. Jun. 2019 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für Booyaka
Hallo, auch wenn ich den Fehler an sich nicht sehe, rate ich eher dazu nicht die komplette View aus deiner Vorlage zu kopieren sondern nur dessen (relevante) Inhalte (z.B. über sel.search ...). Ich hatte es früher auch mal auf deinem Weg versucht und bin da nie glücklich mit gewesen. Evtl. ist es ja auch ein Problem wenn zwei Views mit dem Namen "Background View" existieren. Die ersten beiden Ansichten einer Zeichnung sind ja auch nicht mit "normalen" Geometrieansichten zu vergleichen. Gruß Randle ------------------ Wer für nichts steht, fällt für alles! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 05. Jun. 2019 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für Booyaka
Servus Ich zweifle daran dass du eine View direkt in eine View einfügen kannst. (obwohl es in einem CATScript funktioniert) Probier mal in der Musterzeichnung die View zu selektieren und dann mit Search alles darin zu selektieren und kopieren. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Booyaka Mitglied
Beiträge: 122 Registriert: 22.06.2012 CATIA V5 R19, 24, 26, 28, 29
|
erstellt am: 05. Jun. 2019 14:50 <-- editieren / zitieren --> Unities abgeben:
Danke euch beiden schon mal für de Antwort ich werd es mal damit probieren die Einzelelemente zu selektieren anstatt dem View. Meld mich hierzu später nochmal. Und ja es funktioniert an sich ganz gut mit dem kopieren der View ^^'.
------------------ „Nicht Erfolg ist der Schlüssel zum Glück, sondern Glück ist der Schlüssel zum Erfolg. Wenn du gerne tust, was du tust, wirst du auch erfolgreich sein.“ ― Albert Schweitzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 05. Jun. 2019 17:57 <-- editieren / zitieren --> Unities abgeben: Nur für Booyaka
Zitat:
Ich zweifle daran dass du eine View direkt in eine View einfügen kannst.
da sehe ich nicht unbedingt das Problem, er selektiert ja das aktive Blatt der Zielzeichnung, vermute nur das bei der Background View (und der Working View) es nicht zulässig ist eine weitere View mit dem selben Namen einzufügen. Per Skript habe ich es auch schon mal hinbekommen die Background View komplett zu löschen, zum Glück hatte ich das vor der Auslieferung gemerkt - Puh! ;-). Gruß Randle ------------------ Wer für nichts steht, fällt für alles! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Booyaka Mitglied
Beiträge: 122 Registriert: 22.06.2012 CATIA V5 R19, 24, 26, 28, 29
|
erstellt am: 06. Jun. 2019 09:59 <-- editieren / zitieren --> Unities abgeben:
Also grad eben mit Erfolg getestet und auch soweit neu angepasst. Danke euch beiden vielmals für den Denkanstoß. Tatsächlich scheint das Problem zu sein das ich quasi nen Backround im Backround einfügen möchte. Habs wie ihr schon vorgeschlagen habt direkt die Elemente kopiert. Dabei ist mir aufgefallen das man in dem searchbefehl ja auch mehrere Typen angeben kann mit trennung durch ein Plus. Code:
oSelTemp.Search("Type=Line+Text+Circle,sel")
oder gibts da ne bessere Methode und mehrere Typen zu selektieren? ^^' ------------------ „Nicht Erfolg ist der Schlüssel zum Glück, sondern Glück ist der Schlüssel zum Erfolg. Wenn du gerne tust, was du tust, wirst du auch erfolgreich sein.“ ― Albert Schweitzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 06. Jun. 2019 17:22 <-- editieren / zitieren --> Unities abgeben: Nur für Booyaka
Servus Der Filter lässt sich sehr gut über den Makrorekorder aufzeichnen. In deinem Fall könnte dieser passen: Code: oSelTemp.Search( "Type!=DrwView,sel")
also alles außer eine View (ggf noch weitere ausschließen) oder mit Angabe was du alles haben willst: Code: oSelTemp.Search("CATDrwSearch.DrwAreaFill + CATDrwSearch.DrwText + CATDrwSearch.2DGeometry,sel")
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |