Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Bodies dumm in neues Startmodell kopieren

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:  Bodies dumm in neues Startmodell kopieren (5463 mal gelesen)
Ho196
Mitglied
Dipl.-Ing.Fahrzeugtechnik, Entwickler


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

Beiträge: 26
Registriert: 23.11.2006

erstellt am: 29. Mrz. 2011 15: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,
ich hab trotz mehrerer Hinweise in diversen Threads leider keinen Artikel gefunden, der mir weiterhelfen konnte.

Es geht um Folgendes:
Ich möchte in ein Bauraummodell eine Funktion integrieren, um den Kunden per Knopfdruck ein Modell mit "verdummten" Daten zu erstellen. Klingt einfach, gestaltet sich aber schwieriger als gedacht.
Ich hatte gehofft, einfach ein Makro aufnehmen zu können und das dann noch geringfügig anpassen zu können.

Jedoch klappt das mit dem Aufnehmen insofern nicht, dass die kopierten Daten nicht in dem mit New-From geöffneten Modell landen, sondern im gleichen Modell, dem die Geometrie entstammt.
Ich müsste also irgendwie das neue Startmodell aktivieren, bevor die Geometrie eingefügt wird.
Auch ein makrobasiertes Speichern dieses Startmodells ist mir nicht gelungen, da ich nicht wusste, wie ich auf unsere DLL Pfade verweisen kann (zB auf /USER/USR.MYNAME/neuesmodell.CATPart, wenn ich von /Startmodelle/startmodell.CATPart komme).

------------------
Make it work!

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

em Michael Kirsch
Mitglied
Teamleiter KBE Methoden & Tools


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

Beiträge: 222
Registriert: 21.10.2002

CATIA V5 R16
CATIA V5 R18
CATIA V5 R19
NX 5
NX 6
NX 7.5

erstellt am: 29. Mrz. 2011 21:38    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 Ho196 10 Unities + Antwort hilfreich

Hallo Ho196,

Copy und Paste von Modell zu Modell lässt sich nicht gut mit dem Makrorecorder aufzeichnen. Wichtig ist, dass die Inhalte mit der Selection des Quellmodells kopiert und mit der Selection des Zielmodells eingefügt werden. Ansonsten landet die Kopie wieder im Quellmodell.

Es gibt auch ein fertiges Tool, das das kann: http://www.em.ag/produkte/ippro/ippro-model2model

Esslingen? Haben Sie zufällig mit Abgassystemen zu tun?

Viele Grüße,

Michael Kirsch

------------------
CATIA, sonst NX ;-)

www.em.ag

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 30. Mrz. 2011 09:00    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 Ho196 10 Unities + Antwort hilfreich

Hallo Ho196,

warum kannst du nicht ein AllCatPart generieren.
Ist doch das gleiche? Oder hab ich da was falsch verstanden.

Gruß Uwe

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

em Michael Kirsch
Mitglied
Teamleiter KBE Methoden & Tools


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

Beiträge: 222
Registriert: 21.10.2002

CATIA V5 R16
CATIA V5 R18
CATIA V5 R19
NX 5
NX 6
NX 7.5

erstellt am: 30. Mrz. 2011 11:31    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 Ho196 10 Unities + Antwort hilfreich

Hallo Uwe,

wenn ich ho196 richtig verstanden habe, soll das Zielmodell auf einem bestimmten Startmodell (z. B. von einem OEM) basieren. Das geht mit AllCATPart nicht.

Viele Grüße,

Michael Kirsch

------------------
CATIA, sonst NX ;-)

www.em.ag

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 30. Mrz. 2011 23: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 Ho196 10 Unities + Antwort hilfreich

Hallo Ho196,

beim jetzigen Stand der Diskussion würde ich Dir empfehlen, einfach mal den Code hier einzustellen und dabei zu dokumentieren, was aus Deiner Sicht falsch ist und was Du genau haben möchtest. Ich bin mir sicher, wir können Dir bei der Lösung Deines Problems helfen!


mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

Ho196
Mitglied
Dipl.-Ing.Fahrzeugtechnik, Entwickler


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

Beiträge: 26
Registriert: 23.11.2006

erstellt am: 04. Apr. 2011 09: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

Hallo,

ich habe es zunächst nochmal mit dem Tipp der Selektion des Fensters probiert, aber leider ohne Erfolg.
Der "Paste"-Befehl fehlte komplett in dem aufgenommenen Makro.
Und auch, wenn ich ihn händisch eingefügt habe mit selection1.PasteSpecial "CATPrtResult", kam ein Fehler.
Aber ich befürchte, ich muss mal ein "Makros für Dummies"-Buch kaufen. Momentan hab ich "CATIA V5 - Makroprogrammierung mit Visual Basic Script" von Dieter R. Ziethen. Und dieser macht sich leider nicht die Mühe, Grundlagen zu erklären, auch wenn er so tut, als ob.

Ich hab also nochmal alles auf´s Minimum reduziert und aufgenommen.
Hier das (nicht funktionierende) Resultat:

Language="VBSCRIPT"

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

selection1.Clear

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Wickel_hi_aufgerollt")

selection1.Add body1

selection1.Copy

Dim documents1 As Documents
Set documents1 = CATIA.Documents

Dim partDocument2 As Document
Set partDocument2 = documents1.NewFrom("\0_BOS_V5_STARTMODELLE.DE\Startmodell_Solid_BOS_R16_Rev2_020207.CATPart")

Dim part2 As Part
Set part2 = partDocument2.Part

Dim bodies2 As Bodies
Set bodies2 = part2.Bodies

Dim body2 As Body
Set body2 = bodies2.Item("Wickel_hi_aufgerollt")

part2.UpdateObject body2

part2.Update

End Sub

Zusammengefasst:
Modell ist offen
Man nehme Body "Wickel_hi_aufgerollt" aus offenem Modell und kopiere ihn.
Man öffne mit New-From ein Startmodell aus einem Topf und füge den Body verdummt ein und Update das neue Modell.

Ziel: Minimales Macro ohne Schnickschnack

Das war´s. Klingt einfach...
Sorry für die Kinderfragen. Hoffe, ich hole schnell auf.

------------------
Make it work!

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: 04. Apr. 2011 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 Nur für Ho196 10 Unities + Antwort hilfreich

Servus
Das Problem in deinem Makro ist, dass es für jedes Dokument eine eigene Selection gibt. Zusätzlich muss beim Einfügen das Part Selektiert sein (AFAIKAs far as i know (So viel ich weiss) kann man mit Pastespecial einen Körper nicht direkt in einen Körper einfügen). Anbei ein (ungetestetes) Beispiel:
Code:
Language="VBSCRIPT"

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

selection1.Clear

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Wickel_hi_aufgerollt")

selection1.Add body1

selection1.Copy

Dim documents1 As Documents
Set documents1 = CATIA.Documents

Dim partDocument2 As Document
Set partDocument2 = documents1.NewFrom("\0_BOS_V5_STARTMODELLE.DE\Startmodell_Solid_BOS_R16_Rev2_020207.CATPart")

Dim selection2 As Selection
Set selection2 = partDocument2.Selection

selection2.Clear

Dim part2 As Part
Set part2 = partDocument2.Part

selection2.add part2

selection2.Pastespecial "CATPrtResult"

Dim bodies2 As Bodies
Set bodies2 = part2.Bodies

Dim body2 As Body
Set body2 = bodies2.Item(bodies2.count)
body2.name = "Wickel_hi_aufgerollt"
part2.UpdateObject body2

part2.Update

End Sub


Gruß
Bernd

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

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

Ho196
Mitglied
Dipl.-Ing.Fahrzeugtechnik, Entwickler


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

Beiträge: 26
Registriert: 23.11.2006

erstellt am: 04. Apr. 2011 11:09    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. Funktioniert einwandfrei.

------------------
Make it work!

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

Ho196
Mitglied
Dipl.-Ing.Fahrzeugtechnik, Entwickler


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

Beiträge: 26
Registriert: 23.11.2006

erstellt am: 05. Apr. 2011 15:56    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

Im nächsten Schritt möchte ich alle Bodies selektieren und in das Startmodell einfügen.
Das hab ich folgendermassen probiert:
Selektion per

Set selection1 = CATIA.ActiveDocument.Selection
selection1.Search "'Part Design'.Body;all"

und dann

selection1.Copy
selection1.PasteSpecial "CATPrtResultWithOutLink"

Ein Kollege verriet mir, dass das nicht funktionieren wird, solange auch nur einer der Bodies leer ist.
Aber wie gehe ich dann ran?

------------------
Make it work!

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: 05. Apr. 2011 21:43    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 Ho196 10 Unities + Antwort hilfreich

Servus
Dann könntest du die Selektion mit einer for-next-Schleife von letzen bis zum ersten Element (selection1.item2(x)) durcharbeiten.
Für jedes Element das Objekt prüfen (selection1.item2(x).value) ob dieses eine Shape enthält oder "InBooleanOperaton" ist. Wenn ja dieses Element mit "Selection1.Remove(x)" entfernen. Danach kopieren/einfügen.

Gruß
Bernd

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

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

Ho196
Mitglied
Dipl.-Ing.Fahrzeugtechnik, Entwickler


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

Beiträge: 26
Registriert: 23.11.2006

erstellt am: 06. Apr. 2011 14: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

Hallo,
>>Für jedes Element das Objekt prüfen (selection1.item2(x).value) ob dieses eine Shape enthält<<
Ich habe jetzt 2 Stunden lang probiert, damit zu prüfen, ob Geometrie vorhanden ist.
Aber ich komme leider keinen Schritt weiter. 
Wenn ich das Ergebnis von "selection1.item2(x).value" per msgbox ausgeben will, kommt ein Fehler. Was ist denn das Ergebnis (Wert, String, True, False, 0,1,...)?

For x=2 to selection1.count2
  if not (selection1.item2(x).value) then  ////Hier liegt ein Fehler, aber WELCHER?? 
    msgbox "remove Körper Nr. "&x
    selection1.Remove(x)
    x=x-1
  end if
next

Ich hab schon "alles" probiert. Mit "if/if not/false/true/""/0/1"
Er nimmt einfach diese If-Bedingung nicht.

MfG,
Holger Welsch

------------------
Make it work!

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: 06. Apr. 2011 14:51    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 Ho196 10 Unities + Antwort hilfreich

Servus
"selection1.item2(x).value" liefert dir das Objekt, in deinem Fall den Körper.
Bei diesem musst du prüfen ob ein Shape enthalten ist. zB (Ungetestet):
Set oBody = selection1.item2(x).value
if oBody.Shapes.count = 0 then ...

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: 06. Apr. 2011 21:47    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 Ho196 10 Unities + Antwort hilfreich

Servus
Anbei ein Beispiel für ein ähnliches Problem Makro (lag noch so bei mir rum).
Dabei sollen alle leeren Körper in einem Part gelöscht werden (nicht ausgiebig getestet!).
Code:

Sub CATMain()

Dim oDoc As PartDocument
Dim oPart As Part
Dim oBody As Body
Dim oSel As Selection

'***Abfrage nach geöffneten Dokumenten
    If CATIA.Windows.Count = 0 Then
        MsgBox "Es ist kein Dokument geöffnet." + vbNewLine + _
        "Das Makro kann nicht ausgeführt werden und wird beendet.", vbCritical + vbOKOnly, "Kein Dokument offen"
        Exit Sub
    End If

'***Auslesen der Dokumentart
    Set oDoc = CATIA.ActiveDocument
    If TypeName(oDoc) <> "PartDocument" Then
        MsgBox "Dieses Dokument ist kein CATPart." + vbNewLine + _
        "Das Makro kann nicht ausgeführt werden und wird beendet.", vbCritical + vbOKOnly, "Falscher Dokumententyp"
        Exit Sub
    End If
   
'***Start
Set oSel = oDoc.Selection
oSel.Clear
Set oPart = oDoc.Part

'***Körper durchsuchen
For i = oPart.Bodies.Count To 1 Step -1
    Set oBody = oPart.Bodies.Item(i)
    '***Hauptkörper ausschliessen
    If oBody.Name <> oPart.MainBody.Name Then
        '***Körper leer?
        If (oBody.HybridBodies.Count = 0 And oBody.Shapes.Count = 0 And oBody.Sketches.Count = 0) Then
            '***Körper sektieren und löschen
            oSel.Add oBody
            oSel.Delete
            oSel.Clear
        End If
    End If
Next
End Sub


Vielleicht kannst du dieses Makro teilweise verwenden/anpassen.

Gruß
Bernd

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

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

SvenBoehm
Mitglied



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

Beiträge: 19
Registriert: 09.01.2014

Catia V5 R24 SP6 HF0
Windows 10 Enterprise 64bit
Intel Xeon CPU E5-1650v3
32,0GB
2x Quadro K2200

erstellt am: 09. Jan. 2014 10:27    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 Ho196 10 Unities + Antwort hilfreich

Hallo zusammen,

zu diesem Thema hätte ich noch eine ergänzende Frage.

Ich nutze fast das selbe Makro wie oben beschrieben nur mit dem unterschied, dass ich nicht in ein anderes Part kopieren möchte sondern ins selber. Das funktioniert auch wie gewünscht.
Jetzt suche ich schon seit geraumer Zeit nach einer möglichkeit, den Namen des neu eingefügten Bodys mit einem aktuellen Datum zu versehen.

Mein Makro:

[i]Language="VBSCRIPT"
Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

selection1.Clear

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Hauptkoerper")

selection1.Add body1

selection1.Copy

Dim documents1 As Documents
Set documents1 = CATIA.Documents

Dim selection2 As Selection
Set selection2 = partDocument1.Selection

selection2.Clear

Dim part2 As Part
Set part2 = partDocument1.Part

selection2.add part2

selection2.Pastespecial "CATPrtResultWithOutLink"

Dim bodies2 As Bodies
Set bodies2 = part2.Bodies

Dim body2 As Body
Set body2 = bodies2.Item(bodies2.count)
body2.name = "Hauptkoerper_alt_XXXX.XX.XX"
part2.UpdateObject body2

part2.Update

End Sub

Bei Hauptkoerper_alt_xxxx.xx.xx möchte ich an stelle der x'e das aktuelle Datum stehen haben.
Das einzige was ich dazu finden konnte war Point.Autodatum oder so ähnlich. Weiß aber weder wie ich das einbauen soll, noch ob das überhaupt die richtige Sprache ist.

Wäre super wenn mir da einer weiter helfen könnte.
MFG Sven

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: 09. Jan. 2014 11:05    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 Ho196 10 Unities + Antwort hilfreich

Servus
Anbei ein Beispiel. Variante 2 läuft nur in VBA:
Code:
Sub CATMain()

Dim sDate As String
sDate = Year(Date) & "." & Month(Date) & "." & Day(Date)

msgBox sDate

sDate = Format(Date, "YYYY.MM.DD")
msgBox sDate

End Sub


Gruß
Bernd

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

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

SvenBoehm
Mitglied



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

Beiträge: 19
Registriert: 09.01.2014

Catia V5 R24 SP6 HF0
Windows 10 Enterprise 64bit
Intel Xeon CPU E5-1650v3
32,0GB
2x Quadro K2200

erstellt am: 09. Jan. 2014 11: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 Nur für Ho196 10 Unities + Antwort hilfreich

Hallo, danke für die schnelle Antwort.
Ich hab mich vieleicht nicht genau genug ausgedrückt.

Das Datum soll natürlich automatisch eingetragen werden und das im selben Makro.

Also wenn ich das Makro zum Kopieren starte soll er mit den neuen Body dann "Hauptkoerper_alt_2014.01.09" nenne.
Benutze ich das Makro morgen dann dementsprechend "Hauptkoerper_alt_2014.01.10" etc.

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: 09. Jan. 2014 11: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 Nur für Ho196 10 Unities + Antwort hilfreich

Servus
Dann baue doch meinen Code in dein Makro ein. zB:
Code:
body2.name = body1.name & "_alt_"& Year(Date) & "." & Month(Date) & "." & Day(Date)
Gruß
Bernd

PS: Was machst du wenn der Hauptkörper mal umbenannt wurde? (ggf mal in der Doku nach MainBody schauen)

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

[Diese Nachricht wurde von bgrittmann am 09. Jan. 2014 editiert.]

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

SvenBoehm
Mitglied



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

Beiträge: 19
Registriert: 09.01.2014

Catia V5 R24 SP6 HF0
Windows 10 Enterprise 64bit
Intel Xeon CPU E5-1650v3
32,0GB
2x Quadro K2200

erstellt am: 09. Jan. 2014 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 Nur für Ho196 10 Unities + Antwort hilfreich

funktioniert und du hast recht, benenne ich den Hauptkoerper um funktioniert das makro nichtmehr :-(
es würde sich bei dem zu kopierenden Körper aber immer um den PartBody handeln, den kann ich doch gewiss auch abfragen oder?

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

mars001
Mitglied



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

Beiträge: 17
Registriert: 11.04.2018

Windows 7 Professional SP1
Intel Xeon CPU E5-1650 3,5GHz
32GB Ram
Nvidia Quadro M4000
Catia V5 R26

erstellt am: 17. Apr. 2018 11:03    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 Ho196 10 Unities + Antwort hilfreich

Servus zusammen,

ich hätte hierzu auch noch eine Frage.

Ich möchte ein Konfigurator erstellen. Der Anwender soll aus einem bestehenden Product, für ihn relevante Teilmodelle auswählen die nach bestätigen des OK-Buttons in ein neues Product geladen werden.

Die Teilmodelle sind nicht direkt dem Product untergeordnet.

Hierzu ein kleines Beispiel (Product Struktur):

1. Product "A"
1.1 Modell-V5 "Haupt Zusammenbau"
1.2 Modell-V5 "Untergeordneter Zusammenbau"
1.3 Teilmodell-V5 "Die zu kopierende Modelle"

Meine ersten Versuche ein Makro zu erstellen sind leider gescheitert.

Ich bin folgendermaßen vorgegangen. Mit Hilfe des Recorders habe ich versucht das Kopieren / Neues Product erzeugen / Einfügen über Paste special without link aufzunehmen.

Jedoch habe ich festgestellt, dass das ganze nur halb funktioniert.

Nun bin ich auf den Befehl ( PasteSpecial “CATPRTResultwithoutlink” ) gestoßen allerdings ist mir nicht ganz klar wie ich damit umzugehen habe.

Das Product enthält nur cgr-Daten ("Solids") - das ganze als Modell-V5 auszuchecken ist leider aus zeitlichen Gründen nicht möglich.


Meine bisherige Aufzeichnung:


Code:

Private Sub CommandButton1_Click()

Sub CATMain()

Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

selection1.Clear

Dim product1 As Product
Set product1 = productDocument1.Product

Dim products1 As Products
Set products1 = product1.Products

Dim product2 As Product
Set product2 = products1.Item("HBG 000.0.1")

Dim products2 As Products
Set products2 = product2.Products

Dim product3 As Product
Set product3 = products2.Item("UBG 000.0.1")

Dim products3 As Products
Set products3 = product3.Products

Dim product4 As Product
Set product4 = products3.Item("Modell-V5 Muster0 000.0.1")

Dim products4 As Products
Set products4 = product4.Products

Dim product5 As Product
Set product5 = products4.Item("Modell-V5 Muster1 000.0.1")

Dim products5 As Products
Set products5 = product5.Products

Dim product6 As Product
Set product6 = products5.Item("Teilmodell-V5 Muster 000.0.1")

selection1.Add product6

selection1.Copy


Dim documents1 As Documents
Set documents1 = CATIA.Documents

Dim productDocument2 As ProductDocument
Set productDocument2 = documents1.Add("Product")


End Sub



Schonmal vielen Dank für eure Unterstützung und Ratschläge

Grüße
Mars


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: 17. Apr. 2018 18: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 Ho196 10 Unities + Antwort hilfreich

Servus

Wie würdest du das manuell machen?
Schon mal probiert dies dann im Makro nachzustellen?
ggf könntest du auch das entsprechende Product (bzw mehrere) selektieren lassen, und dann diese per AddComponent oder AddComponentsFromFiles in ein neues Product einfügen.

Gruß
Bernd

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

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

mars001
Mitglied



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

Beiträge: 17
Registriert: 11.04.2018

Windows 7 Professional SP1
Intel Xeon CPU E5-1650 3,5GHz
32GB Ram
Nvidia Quadro M4000
Catia V5 R26

erstellt am: 25. Apr. 2018 13: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 Ho196 10 Unities + Antwort hilfreich

Servus,

deine Tipps haben mir schonmal weitergeholfen. Jetzt möchte ich noch folgende Funktion mit einbauen.

Wenn der Anwender die CheckBox aktiviert wird das Product selektiert - soweit funktioniert alles prima.


Wenn nun der Anwender die Checkbox deaktiviert sollte auch die Selection des Products entfernt werden. Dies umzusetzen ist mir aber bisher nicht gelungen.


Ich dachte ich könnte dies über den Befehl selection1.Remove lösen.


Vielleicht könnt ihr mir weiterhelfen.

[CODE][

Private Sub CB_Test_Click()
 
       
        If CB_Test = True Then
       
        Dim productDocument1 As ProductDocument
        Set productDocument1 = CATIA.ActiveDocument
       
        Dim selection1 As Selection
        Set selection1 = productDocument1.Selection
       
        Dim product1 As Product
        Set product1 = productDocument1.Product
       
        Dim products1 As Products
        Set products1 = product1.Products
       
        Dim product2 As Product
        Set product2 = products1.Item("ZSB MASTER")
       
        Dim products2 As Products
        Set products2 = product2.Products
       
        Dim product3 As Product
        Set product3 = products2.Item("Modell-V5 MASTER 000.0.1")
       
        Dim products3 As Products
        Set products3 = product3.Products
       

        Dim product19 As Product
        Set product19 = products3.Item("TM TEST 000.0.1")
       
        selection1.Add product19
       
       
        Else
           


        Dim productDocument1 As ProductDocument
        Set productDocument1 = CATIA.ActiveDocument
       
        Dim selection1 As Selection
        Set selection1 = productDocument1.Selection
       
        'selection1.Clear
       
        Dim product1 As Product
        Set product1 = productDocument1.Product
       
        Dim products1 As Products
        Set products1 = product1.Products
       
        Dim product2 As Product
        Set product2 = products1.Item("ZSB MASTER")
       
        Dim products2 As Products
        Set products2 = product2.Products
       
        Dim product3 As Product
        Set product3 = products2.Item("Modell-V5 MASTER 000.0.1")
       
        Dim products3 As Products
        Set products3 = product3.Products
           
        Dim product19 As Product
        Set product19 = products3.Item("TM Test 000.0.1")
           
        selection1.Remove
           
        End If
           
End Sub

/CODE]


Viele Grüße
Marius

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: 25. Apr. 2018 13: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 Ho196 10 Unities + Antwort hilfreich

Servus Marius

Du musst auch angeben welches Element aus der Selektion entfernt werden soll. Dazu muss (wie es auch in der Doku steht) der entsprechende Zähler angegeben werden.
Wenn dieser nicht bekannt ist, sondern nur der Name des Elements:
- Schleife über die Selektion (for i = 1 to osel.count)
- Name des Items mit dem gesuchten vergleichen
- falls diese übereinstimmen: Element deselektieren (osel.Remove i) und Schleife verlassen
- falls es nicht um das gesuchte Element handelt, nächsten Item untersuchen

Gruß
Bernd

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

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

mars001
Mitglied



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

Beiträge: 17
Registriert: 11.04.2018

Windows 7 Professional SP1
Intel Xeon CPU E5-1650 3,5GHz
32GB Ram
Nvidia Quadro M4000
Catia V5 R26

erstellt am: 25. Apr. 2018 14:43    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 Ho196 10 Unities + Antwort hilfreich

Servus Bernd,

danke für die Antwort. Das Product ist bekannt. Ich muss dich nochmal nerven.

Bei deaktivieren der CheckBox erhalte ich nun die Fehlermeldung "Run-time error '91': Object variable or With block variable not set"


Die Bedeutung ist der Fehlermeldung ist mir klar - jedoch weis ich nicht wie ich damit umzugehen habe.

In der If Bedingung sind die Variabeln deklariert - wie erhält die else Bedingung Zugriff darauf?

Code:

If CB_TEST = True Then
           
            Dim productDocument1 As ProductDocument
            Set productDocument1 = CATIA.ActiveDocument
           
            Dim selection1 As Selection
            Set selection1 = productDocument1.Selection
           
            'selection1.Clear
           
            Dim product1 As Product
            Set product1 = productDocument1.Product
           
            Dim products1 As Products
            Set products1 = product1.Products
           
            Dim product2 As Product
            Set product2 = products1.Item("ZSB TEST 000.0.1")
           
            Dim products2 As Products
            Set products2 = product2.Products
           
            Dim product3 As Product
            Set product3 = products2.Item("Modell-V5 TEST 000.0.1")
           
            Dim products3 As Products
            Set products3 = product3.Products
           
   
            Dim product19 As Product
            Set product19 = products3.Item("TEST 000.0.1")
       
            selection1.Add product19 'In Selection1 aufnehmen
                 
        Else
     
          selection1.Remove (product19) 'Aus Selection1 entfernen

        End If


Besten Dank Marius

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: 25. Apr. 2018 16:42    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 Ho196 10 Unities + Antwort hilfreich

Servus

Woher soll Catia/VBA wissen was product19 ist?
Das wird doch in einem Codeabschnitt definiert der nicht ausgeführt wurde.
Remove erwartet einen Zähler nicht ein Objekt:

Code:
selection1.Remove (1) 'erstes Element wird deselektiert
Falls du alle Elemente deselektieren willst geht das über:
Code:
selection1.clear
Gruß
Bernd

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

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

mars001
Mitglied



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

Beiträge: 17
Registriert: 11.04.2018

Windows 7 Professional SP1
Intel Xeon CPU E5-1650 3,5GHz
32GB Ram
Nvidia Quadro M4000
Catia V5 R26

erstellt am: 26. Apr. 2018 10: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 Nur für Ho196 10 Unities + Antwort hilfreich

Servus,


könntest du mir vielleicht dies anhand eines kleinen Code Beispiels zeigen. Ich bekomme nun die Deaktivierung der Selektion hin - allerdings wird nicht das richtige Modell bei erneurter Anwahl der CheckBox deselektiert (wie erwartet).


Zitat:
Original erstellt von bgrittmann:
Servus Marius

Du musst auch angeben welches Element aus der Selektion entfernt werden soll. Dazu muss (wie es auch in der Doku steht) der entsprechende Zähler angegeben werden.
Wenn dieser nicht bekannt ist, sondern nur der Name des Elements:
- Schleife über die Selektion (for i = 1 to osel.count)
- Name des Items mit dem gesuchten vergleichen
- falls diese übereinstimmen: Element deselektieren (osel.Remove i) und Schleife verlassen
- falls es nicht um das gesuchte Element handelt, nächsten Item untersuchen

Gruß
Bernd


Grüße und besten Dank
Marius

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: 26. Apr. 2018 11:09    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 Ho196 10 Unities + Antwort hilfreich

Servus

zB so (ungetestet)

Code:
strNameToRemove = "TEST 000.0.1"
if oselection.count <> 0 then 'ist was selektiert?
  for i = 1 to oselection.count
      if oselection.item2(i).Value.Name = strNameToRemove then 'ggf auch mit InStr suchen/vergleichen
        oselection.Remove (i) 'deselektieren
        exit for    'wieder raus hier
      end if
  next
end if
Das ganze könnte man nun auch noch in eine eigen Unterroutine verpacken, der man nur den gesuchten Namen übergibt.

Gruß
Bernd

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

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

mars001
Mitglied



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

Beiträge: 17
Registriert: 11.04.2018

Windows 7 Professional SP1
Intel Xeon CPU E5-1650 3,5GHz
32GB Ram
Nvidia Quadro M4000
Catia V5 R26

erstellt am: 26. Apr. 2018 15: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 Nur für Ho196 10 Unities + Antwort hilfreich

Servus,

vielen lieben Dank - funktioniert einwandfrei. Nun möchte ich diese Selektion in ein neus Produkt per PasteSpecial "CATPrtResultWithOutLink" einfügen.


Ich habe bisher folgenden Code - ein neues Product wird erzeugt jedoch werden keine Modelle eingefügt.


[CODE]

Dim productDocument1 As ProductDocument
    Set productDocument1 = CATIA.ActiveDocument
           
    Dim selection1 As Selection
    Set selection1 = productDocument1.Selection
                         
    selection1.Copy

    Dim documents1 As Documents
    Set documents1 = CATIA.Documents
   
    Dim productDocument2 As ProductDocument
    Set productDocument2 = documents1.Add("Product")
   
    Set productDocument2 = CATIA.ActiveDocument
   
    Dim selection2 As Selection
    Set selection2 = productDocument2.Selection
   
    'selection2.Clear
   
    Dim product400 As Product
    Set product400 = productDocument2.Product
   
    selection2.Add product400
   
    selection2.PasteSpecial "CATPrtResultWithOutLink"


[CODE]

Viele Grüße
Marius

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: 26. Apr. 2018 15: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 Nur für Ho196 10 Unities + Antwort hilfreich

Servus

CATPrtResultWithOutLink gibt es nur im Part.
Also entweder "normal" mit Paste einfügen oder bei PasteSpecial eine passende Option verwenden (siehe Doku).
Was hast du überhaupt vor mit dem kopieren?

Gruß
Bernd

PS: Selbsterklärende Namen der Variablen währen sinnvoll, sonst verstehst du deinen eigenen Code in zwei Tagen, einer Woche oder einem Jahr nicht wieder

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

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

mars001
Mitglied



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

Beiträge: 17
Registriert: 11.04.2018

Windows 7 Professional SP1
Intel Xeon CPU E5-1650 3,5GHz
32GB Ram
Nvidia Quadro M4000
Catia V5 R26

erstellt am: 29. Apr. 2018 11:35    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 Ho196 10 Unities + Antwort hilfreich

Servus,

bzgl. den Variabeln hast du vollkommen Recht - bin aktuell noch am herumtüfteln.

Habe den Fehler nun gefunden. Es war der falsche Befehl den ich verwendet habe.

Code:

selection2.PasteSpecial "CATSpecBreakLink"
[CODE]


Zitat:
Original erstellt von bgrittmann:
Servus

zB so (ungetestet)[code]strNameToRemove = "TEST 000.0.1"
if oselection.count <> 0 then 'ist was selektiert?
   for i = 1 to oselection.count
      if oselection.item2(i).Value.Name = strNameToRemove then 'ggf auch mit InStr suchen/vergleichen
         oselection.Remove (i) 'deselektieren
         exit for    'wieder raus hier
      end if
   next
end if


Das ganze könnte man nun auch noch in eine eigen Unterroutine verpacken, der man nur den gesuchten Namen übergibt.

Gruß
Bernd



Ich habe noch eine Frage zu deinem Code.

Wie könnte diese Befehlszeile ( strNameToRemove = "TEST 000.0.1" ) abgeändert werden, sodass wenn beispielsweise eine neue Revision des Produkts "Test 000.0.1" erstellt wird und nun "Test 000.0.2" heißt die Revision weiterhin berücksichtigt wird. Ist es möglich nur ein Teil des Namen zu defnieren - z.B. "Test".


Viele Grüße und besten Dank
Marius

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: 29. Apr. 2018 14: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 Ho196 10 Unities + Antwort hilfreich

Servus

Ja geht wenn du die Namen mit InStr vergleichst (siehe VBA Doku oder Suche im Internet)
Ob dies aber der "richtige" Weg für dein Problem ist weiß ich nicht. Ich hab mich schon gewundert, dass alles Instanznamen fest gecoded sind was vermutlich nur bei einem "leeren" Startmodell geht.

Gruß
Bernd

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

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

mars001
Mitglied



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

Beiträge: 17
Registriert: 11.04.2018

Windows 7 Professional SP1
Intel Xeon CPU E5-1650 3,5GHz
32GB Ram
Nvidia Quadro M4000
Catia V5 R26

erstellt am: 29. Apr. 2018 22: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 Ho196 10 Unities + Antwort hilfreich

Servus,

danke für deinen Hinweis.

Ich habe es nun über die Suchfunktion probiert. Das ganze funktioniert auch bei einer einzelnen Suche. Wenn ich jedoch eine weitere Suche anstoße, geht die erste Selektion verloren und diese soll aber weiterhin aktiviert bleiben.

Ich habe versucht die Selektion mit der Funktion Selection1.Add zu speichern, funktioniert aber leider nicht. Vermutlich muss ich einen anderen Weg gehen. 


[CODE]
Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

selection1.Search "Name=*MUSTER*,all"
[CODE]

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: 30. Apr. 2018 06:44    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 Ho196 10 Unities + Antwort hilfreich

Servus Marius

Bei Selection.Search werden alle zuvor selektierten Elemente deselektiert.
Du könntest zB:
- nach allen Namen gleichzeitig suchen
- die selektierten Element zuvor in einem Array zwischenspeichern, die Suche durchführen und danach die Elemente aus dem Array wieder selektieren
- oder wahrscheinlich am einfachsten: Schleife über die Products-Collection, für jedes Element den Namen mit dem Suchstring vergleichen (InStr, Left, ...)
- oder am Anfang deines Script die Struktur (bzw die Products die du benötigst) einlesen und in einem Array/Variablen/Listbox/... zwischenspeichern und danach direkt wieder darauf zugreifen

Gruß
Bernd

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

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

mars001
Mitglied



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

Beiträge: 17
Registriert: 11.04.2018

Windows 7 Professional SP1
Intel Xeon CPU E5-1650 3,5GHz
32GB Ram
Nvidia Quadro M4000
Catia V5 R26

erstellt am: 02. Mai. 2018 10:00    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 Ho196 10 Unities + Antwort hilfreich

Servus Bernd,

vielen Dank für deine Hinweise. Nach langer Recherche in der Catia-Hilfe und im Internet bin ich leider immer noch nicht weitergekommen. Mir ist nicht klar wie ich die Funktion "Instr" so einbinde wenn der gesuchte Name existiert, das Modell dementsprechend selektiert wird. 

Viele Grüße
Marius 

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: 02. Mai. 2018 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 Ho196 10 Unities + Antwort hilfreich

Servus

Beispiel (ungetestet):

Code:
strNameToSelect = "Test"
for i = 1 to oProducts.count
    if InStr(oProducts.Item(i).Name, strNameToSelect) <> 0 then
        oSelection.add oProducts.Item(i)
    exit for
next
Oder eben mit Left die ersten Zeichen des Namen des Products auslesen und dann vergleichen.
Ich empfehle dir dich besser in die Grundlagen zu VB(A) einzuarbeiten sowie ein Buch zur Programmierung in Catia durch zu arbeiten.

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