| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
| KISTERS 3DViewStation mit neuer Zerschneidefunktionen und erweitertem PMI-Support, eine Pressemitteilung
|
Autor
|
Thema: Geometrisches Set einfügen (3821 mal gelesen)
|
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008 Intel XEON E3-1280 32GB Ram, Quadro P4000 Win 10 64bit Catia V5R24 Solidworks 2018
|
erstellt am: 10. Feb. 2009 10:08 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte mittels Makro einem vorhandenen geometrischen Set ein weiteres hinzufügen. Dazu habe ich folgendes Makro: Sub CATMain() Dim HB1 As HybridBody Set HB1 = CATIA.ActiveDocument.Part.Hybridbodies.Item ("Vorhanden") Dim HKoerper As HybridBodies Set HKoerper = HB1.Hybridbodies Dim HB2 As HybridBody Set HB2 = HKoerper.Add HB2.Name = "NeuesSet" End Sub
Wenn ich das Makro nochmal ausführe, wird natürlich das Set nochmal eingefügt. Was muss noch dazu, dass das Set dann nicht nochmal eingefügt wird? ------------------ Grüße Julia ------------------------------- Click OK to terminate Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008
|
erstellt am: 10. Feb. 2009 11:04 <-- editieren / zitieren --> Unities abgeben:
Ich weiß schon, dass das sehr langweilig und banal ist, aber eine Lösung würde mich wirklich sehr freuen Danke im Voraus. ------------------ Grüße Julia ------------------------------- Click OK to terminate Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008 Intel XEON E3-1280 32GB Ram, Quadro P4000 Win 10 64bit Catia V5R24 Solidworks 2018
|
erstellt am: 10. Feb. 2009 12:51 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 12014 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Feb. 2009 13:02 <-- editieren / zitieren --> Unities abgeben: Nur für Beemer328
|
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008
|
erstellt am: 10. Feb. 2009 13:14 <-- editieren / zitieren --> Unities abgeben:
Geht leider nicht. Es fügt trotzdem das "NeueSet" nochmal ein und dazu noch ein unbenanntes Set + Fehlermeldung. ------------------ Grüße Julia ------------------------------- Click OK to terminate Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 10. Feb. 2009 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für Beemer328
Hallo Beemer, das er das Set nochmal hinzufügt ist ja auch logisch. Du fügst ja erstmal ein Set ein und benennst es dann um. Da es in CATIA auf der Partebene möglich ist das zwei Sets die selben Namen habe bekommst du auch keinen Fehler und das Set wird nochmal in den selben Namen umbenannt. Um da Abhilfe zu schaffen brauchst du eine Abfrage ob das Set schon existiert. Falls ja soll er nichts machen falls neín soll er es hinzufügen. Schau dir mal den Code unten an. Code:
Sub CATMain()Dim HB1 As HybridBody Set HB1 = CATIA.ActiveDocument.Part.Hybridbodies.Item ("Vorhanden") Dim HKoerper As HybridBodies Set HKoerper = HB1.Hybridbodies Dim HB2 As HybridBody 'Hier beginnt die Abfrage On Error Resume next Set HB2 = HKoerper.GetItem("NeuesSet") If Err.Number <> 0 then On Error Goto 0 Set HB2 = HKoerper.Add HB2.Name = "NeuesSet" End If 'Hier endet die Abfrage End Sub
EDIT: F7 Taste vergessen ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin [Diese Nachricht wurde von denyo_1 am 10. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008
|
erstellt am: 10. Feb. 2009 14:44 <-- editieren / zitieren --> Unities abgeben:
Danke sehr. Das sieht aus, als ob es bald funktionieren könnte. Leider tut es noch nix. Was meinst du mit F7 vergessen? Ich versuche es zwischendurch selber, aber ich kenne mich leider nicht aus ------------------ Grüße Julia ------------------------------- Click OK to terminate Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 10. Feb. 2009 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für Beemer328
Hallo, ich hatte ein paar Rechtschreibfehler drinnen die ich mit dem Edit noch verbessert habe (F7 = Rechtschreibprüfung in WORD :lol Was genau funktioniert den nicht bzw. wie sieht die Fehlermeldung aus. Ev. kann dir ja hier noch jemand helfen wenn du sagst wo deine Probleme sind ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008
|
erstellt am: 10. Feb. 2009 15:14 <-- editieren / zitieren --> Unities abgeben:
Achso Keine Angst, Rechtschreibfehler interessieren mich überhaupt nicht. Naja, es passiert überhaupt nichts. Auch keine Fehlermeldung. Es fügt auch kein GeoSet ein. (auch nicht, wenn es noch nicht mit dem Namen existiert, was ja der Sinn sein soll). Hmmm. 2. Idee: Ich habe in dem Forum hier mal etwas gefunden, das zwar funktioniert, aber nur in der ersten Ebene des Strukturbaumes. Es ist mir noch nicht gelungen, es für Untersets umzubauen. Vielleicht habt ihr eine Idee, was ich verändern muss, damit ich mit diesem Code GeoSets in einem Unterset erzeugen kann. sub CATMain() dim ar() set mypart = CATIA.ActiveDocument.Part pflichtnamen="Becks:Jever:Flens:Budwiser:Erdinger" set hybs = mypart.HybridBodies a = split(pflichtnamen,":") for j = 0 to UBound(a) if hybs.Count > 0 then found = 0 for i = 1 to hybs.Count if a(j) = hybs.Item(i).Name then found = 1 end if next end if if found = 0 then set newhb = mypart.HybridBodies.Add newhb.Name = a(j) end if next end sub
------------------ Grüße Julia ------------------------------- Click OK to terminate Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rattlesnake Mitglied
Beiträge: 47 Registriert: 22.10.2007 Vb .NET CATIA V5R19
|
erstellt am: 11. Feb. 2009 08:37 <-- editieren / zitieren --> Unities abgeben: Nur für Beemer328
ich hab da mal Funktionen zu geschrieben: Code: Public Function getHybridBody(nameOfHybridBody As String, Optional parent As Object, Optional createIfNotExists As Boolean) Dim userSel As selection Dim newHybridBody As HybridBody 'search for hybrid body Set userSel = CATIA.activeDocument.selection userSel.Clear userSel.Search "CATPrtSearch.OpenBodyFeature.Name=" & nameOfHybridBody & "*,all" If userSel.Count > 0 Then Set newHybridBody = userSel.Item(1).value ElseIf createIfNotExists Then Set newHybridBody = parent.HybridBodies.Add newHybridBody.name = nameOfHybridBody End If 'return results Set getHybridBody = newHybridBody End Function
diese Funktion prüft ob bereits ein Geometrical Set mit dem Namen nameOfHybridBody vorahnden ist, fügt optional in parent eins hinzu, wenn createIfNotExists = true ist ------------------ \\\\|//// \\ _ _ // ( o o ) ================oOOo-(_)-oOOo================== The next time you think you are perfect, try walking on water ========================Oooo=================== oooO ( ) ( ) ) / \ ( (_/ \_) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008
|
erstellt am: 11. Feb. 2009 10:13 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe es mal mit dieser Funktion probiert. Ist es richtig, dass ich für "nameOfHybridBody" den Namen des gewünschten GeoSets eintragen muss? Ich kriege gleich bei der ersten Zeile einen Fehler. ------------------ Grüße Julia ------------------------------- Click OK to terminate Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 12. Feb. 2009 00:20 <-- editieren / zitieren --> Unities abgeben: Nur für Beemer328
Hallo Beemer328, wo hast Du die Funktion getestet? Sie wird nur in "catvba" funktionieren, da optionale Parameter im VBScript nicht unterstützt werden. Wenn Du die Funktion in einem "CATScript" oder "catvbs" nutzen willst, musst Du das "Optional" aus der Funktionsdefinition entfernen und beim Aufruf auch wirklich Parameter übergeben! Der "nameOfHybridBody" ist dann auch der Name des zu erzeugenden Set's! 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 |
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008 Intel XEON E3-1280 32GB Ram, Quadro P4000 Win 10 64bit Catia V5R24 Solidworks 2018
|
erstellt am: 12. Feb. 2009 08:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank für eure Hilfe. Ich habs etwas anders zusammengebastelt aus mehreren "Puzzlestückchen", aus diesem Thread und weiteren Forumsbeiträgen. Ich glaub, ich werd mir mal ein Buch darüber kaufen, dass ich nicht immer so raten muss. ------------------ Grüße Julia ------------------------------- Click OK to terminate Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |