Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro Background in Foreground

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
Autor Thema:  Makro Background in Foreground (1395 / mal gelesen)
Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 19. Sep. 2017 07:15    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

Hallo Community,

kleine Frage:

Ich habe ein Makro geschrieben, welches alle Elemente des Backgroundes in den Vordergrund in eine View kopieren soll.

Dies funktioniert soweit ganz gut, nur mit dem kleinen Problem, dass es keine Elemente kopiert, welche als Verlinkung vom Detail Sheet kommen.

Wie kann ich diese Elemente ebenfalls per Selektion markieren und kopieren lassen?


MfG

Diesaster

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Sep. 2017 09:14    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 Diesaster 10 Unities + Antwort hilfreich

Servus

Wie selektiert du denn die Elemente im Background?
Ideen dazu:
- 2D-Komponentenexemplare vor dem kopieren zerlegen
- 2D-Komponentenexemplare in einem extra Durchlauf suchen und kopieren
- 2D-Komponentenexemplare neu in deine Ansicht einfügen (Position und Detail kannst du von deinem Background auslesen)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 19. Sep. 2017 09:25    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

Hallo bgrittmann,

ich habe den Backgroundview als oView deklariert und dann entsprechend diesen Code verwendet für Geometrische Element, Tabellen und Texte.

Hier einmal exemplarisch für Texte:

Code:
If oView.Texts.Count > 0 Then
           
For i = 1 To oView.Texts.Count

oSel.Add oView.Texts.Item(i)
TextCounter = TextCounter + 1

Next

End If


Edit: Kann ich auch die 2D.Component mit Link umkopieren? Sprich, nach Möglichkeit, den Link zum Detail-Sheet beibehalten.

Gruß
Diesaster

[Diese Nachricht wurde von Diesaster am 19. Sep. 2017 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Sep. 2017 09:40    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 Diesaster 10 Unities + Antwort hilfreich

Servus
Hat es einen Grund warum du nicht über die Suche die Texte usw selektierst?
Hier ein Beispiel für die 2D-Komponenten:
Code:
osel.Clear
osel.add oView
osel.Search "CATDrwSearch.DrwDitto,sel" 'in der Selektion nach 2D-Koponentexemplaren suchen
osel.Copy
ggf muss du die 2D-Komponenten in einem eigenen Durchlauf kopieren/einfügen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 19. Sep. 2017 10:22    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

Eigentlich hat dies keinen Grund.
Ich habe mir das so gedacht.

Deine Lösung hat funktioniert.
Herzlichen Dank!

Man muss allerdings tatsächlich in einem separaten Durchlauf die 2D-Komponenten selektieren.

10 U's für dich.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 21. Sep. 2017 07:46    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

Hallo Community,

habe leider eine weitere Frage zum Thema.

Brauche leider wirklich alles im Hintergrund, egal ob es Linien, Dimensions und co. sind.

Nur bekomme ich immer eine Fehlermeldung bei meiner Selektion, wenn ich .Cut und .Paste mache, da immer der Background mit selektiert und kopiert wird.

Das möchte ich verhindern.

Meine Selektion führe ich momentan so aus:

Code:
oSel.Search "CATDrwSearch.* , sel"

Wie kann ich nun den Background View aus der Selektion entfernen?
Ich habe im Background View aber selbst Texte und co., sowie 2D-Komponenten mit einem Link zum Detail-Sheet.

Mit der Funktion FindObjekt konnte ich es leider nicht lösen, oder ich mache etwas falsch.

Code:
oSel.FindObject "CATIADrawingView"

Vielen Dank für die Hilfe!

Gruß
Diesaster

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 21. Sep. 2017 08:48    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 Diesaster 10 Unities + Antwort hilfreich

Servus

Hast du dir mal diese Diskussion angeschaut?

Gruß
Bernd

EDIT: ggf auch alles Suchen ohne die View: "Type!=DrwView,sel"

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 27. Sep. 2017 08:10    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

Hallo bgrittmann,

die Diskussion hat leider nicht weitergeholfen

habe deine Edition mit dem

Code:
"Type!=DrwView,sel"

getestet.

Habe ich an deinem Code etwas falsch gemacht, da mein Programm keine Tabellen und Co. selektiert, aufgrund von Type!=DrwView.

Mein Code anhand deiner Lösung sieht so aus:

Code:
oSel.Search "CATDrwSearch.*.Type!=DrwView & CATDrwSearch.*.Type!=DrwSheet, sel"

Habe ich das so richtig umgesetzt oder hätte dies anders aussehen sollen?


Edit: Habe folgende Variante getestet:

Code:

Set oView = oViews.Item(2)
    oSel.Add oView

oSel.Search "Type=*,sel"
    If oSel.Item2(1).Type = "DrawingView" Then
        oSel.Remove (1)
    End If


Hier wird fast alle kopiert, aber genau das verstehe ich nicht, da alles selektiert wird.
Alle 2D-Komponenten aus dem Detail-View werden kopiert, Linien auch.
Nur wenn eine Tabelle z.B. direkt im Background View ist, wird diese ignoriert.
Warum?

[Diese Nachricht wurde von Diesaster am 27. Sep. 2017 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Sep. 2017 10:07    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 Diesaster 10 Unities + Antwort hilfreich

Servus

In meinem Kurztest wird zumindest alles selektiert.
Hattest du nicht zuvor einen (schrittweise arbeiteten) Code der funktioniert hat? ggf müssen manche Elementtypen einzeln kopiert werden.
Blöde Frage: Warum willst du den Background überhaupt in eine "normale" View kopieren?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 27. Sep. 2017 10:11    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

Ich hatte diesen schrittweise arbeitenden Code ja.
Diesen habe ich entfernt auf dein Anraten, es über die Selektion.Search zu lösen.

Es gab eine neue Regelung, welche besagt, dass im Hintergrund nichts mehr sein darf.

EDIT: Habe gerade mal Rauheitsangaben und Dimensions hinzugefügt.
Meine Vermutung ist, dass alles was über die Symbolleisten zur rechten erstellt wird, jedes mal gelöscht wird.

[Diese Nachricht wurde von Diesaster am 27. Sep. 2017 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Sep. 2017 10:22    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 Diesaster 10 Unities + Antwort hilfreich

Servus

Das hab ich dir nicht geraten, ich hab nur gefragt warum du die Suche nicht nutzt (zB nur für einen Elementtyp) und alles über Schleifen löst.
Sonderbare Regelung: für was ist sonst der Background da? Was passiert wenn der Maßstab des ganzen Blattes geändert wird?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 28. Sep. 2017 07:20    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

Hallo bgrittmann,

habe gerade mal die Suche über Edit-> Search gestartet und dort folgendes eingestellt.

Workbench Type : Drafting
Type           : Table

Wenn ich jetzt ganz normal in Sheet 1 im Vordergrund bin (nicht Background) und suche nach Tabellen, werden kurioserweise nur alle Tabellen gefunden, welche sich im Vordergrund befinden oder welche im Background als Detail aus dem Detail-Sheet angezogen sind.

Warum findet er keine Tabellen, welche im Background erstellt wurden?

EDIT: Habe einen Weg gefunden alles mit der Suche zu selektieren und zu kopieren. Habe nur dabei ein kleines Problem. Mein oSel.Paste wird nicht ausgeführt.

Hier der Code:

Code:
Set oView = oViews.Item(2)
    oView.Activate
    oSel.Add oView
    oSel.Search "CATDrwSearch.*,scr"
       
    If oSel.Count > 0 Then
       
        oSel.Copy
        Set oView = oViews.Item("2D-Details")
        oView.Activate
        oSel.Paste
       
    End If
   
    oSel.Clear

[Diese Nachricht wurde von Diesaster am 28. Sep. 2017 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 28. Sep. 2017 08:45    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 Diesaster 10 Unities + Antwort hilfreich

Servus

Mit ",scr" wird nach allem sichtbaren (bzw auch dem Bildschirm) gesucht, und nicht nur in der Selektion (da wäre es ",sel"). Willst du das so?
Vermutlich gibt es wieder Probleme dass manche Typen nur einzeln kopiert und eingefügt werden können (zB 2D-Koponenten). (vergleiche auch Anfang der Diskussion)
Um zu bestimmen in welche Ansicht eingefügt wird muss diese selektiert werden:

Code:
oView.Activate
oSel.Add oView
oSel.Paste

Gruß
Bernd

PS: Das aktivieren von Ansichten usw brauchst du fast nie

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 28. Sep. 2017 09:30    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

Danke für die Info.

Leider hat nur die Variante mit scr funktioniert.
Alternativ müsste ich 2 Selektionen machen.

1. Sichtbarer Bereich
2. Unsichtbarer Bereich

und diese jeweils separat abarbeiten.
Kann ich z.B. eine 3. Selektion deklarieren und dort beide Selektionen (unsichtbar und sichtbar) zusammenfügen?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 28. Sep. 2017 10:04    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 Diesaster 10 Unities + Antwort hilfreich

Servus

Nein, es gibt nur eine Selektion.
Und warum führst du die Selektion bzw das kopieren nicht in mehren Schritten aus (sichtbar und unsichtbar)
Natürlich kannst du das Ergebnis der ersten Suche zwischenspeichern (Array oder Collection), die zweite Suche durchführen und danach die Elemente aus dem Zwischenspeicher wieder zur Selektion hinzufügen (siehe meine Signatur)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 28. Sep. 2017 10:53    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 Diesaster 10 Unities + Antwort hilfreich

Servus

Hier ein Beispiel das die wichtigsten Elemente aus dem Background in eine Ansicht kopiert.

Code:
Sub CATMain()

Dim oDrwDocument As Document
Dim oSel As Selection
Dim oBackgroundView as Drawingview
Dim oTargetView as Drawingview

Set oDrwDocument = CATIA.ActiveDocument
Set oSel = oDrwDocument.Selection
Set oBackgroundView = oDrwDocument.sheets.item(1).views.item(2)
Set oTargetView = oDrwDocument.sheets.item(2).views.item(3)

'suchen und kopieren
CATIA.HSOSynchronized = false
oSel.Clear
oSel.add oBackgroundView
oSel.Search "((((((((CATDrwSearch.DrwAreaFill + CATDrwSearch.DrwAxisLine) + CATDrwSearch.DrwDatumFeature) + CATDrwSearch.DrwDitto) + CATDrwSearch.DrwDatumTarget) + CATDrwSearch.2DGeometry) + CATDrwSearch.DrwRough) + CATDrwSearch.DrwTable) + CATDrwSearch.DrwText),sel"

MsgBox oSel.Count2 & " Elemente selektiert"

oSel.Copy
oSel.Clear

'einfügen
oSel.add oTargetView
oSel.paste

CATIA.HSOSynchronized = true

End Sub


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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