| |
| KISTERS 3DViewStation: Mehr CAD Lizenzen durch 3D-Viewer ersetzen und Geld sparen, eine Pressemitteilung
|
Autor
|
Thema: Boolesche Operation umbenennen - Fehler (2063 mal gelesen)
|
chrisspeed Mitglied Ingenier
Beiträge: 18 Registriert: 30.01.2014 Catia V5 R24 Windows 7 64 Bit Intel Xeon ES-1650 @ 3,2GHz 4 GB RAM
|
erstellt am: 04. Feb. 2014 10:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe aus dem Catia Kochbuch ein Makro rausgeschrieben, aber ich bekomme die Fehlermeldung "Objekt erforderlich". Vielleicht wird die Boolesche Operation nicht gefunden? Das Makro dient dazu, dass die Boolesche Operation den Namen des Body´s erhält. ich weiß nicht, wo der Fehler liegt, vielleicht könnt ihr den finden!?!? Danke schon mal.... Dim version, makroname Sub CATMain() version = "1.0" makroname = "Boolesche Operation umbenennen" On Error Resume Next Set activedoc = CATIA.ActiveDocument If Err.Number <> 0 then MsgBox "Es ist kein Bauteil geöffnet", 16, makroname + " " + version Exit Sub End If If (Right(activedoc.Name, 7) <> "CATPart") Then MsgBox "Aktives Dokument ist kein Bauteil", 16, makroname + " " + version Exit Sub End If Set activepart = CATIA.ActiveDocument.Part Set Bodies = activepart.Bodies For i = 1 To Bodies.Count Set body1 = Bodies.Item(i) For k = 1 To body1.Shapes.Count Set shape1 = body1.Shapes.Item(k) Set boolbody = shape1.Body If Err.Number = 0 Then shape1.Name = Left(shape1.Name, Len(shape1.name) - InStrRev(shape1.Name, ".") + 2) & "_" & boolbody.Name Set Laenge_Originalname = Len(shape1.name) Set Laenge_bis_Punkt = InStrRev(shape1.Name, ".") Set shape1.Name = Left(shape1.Name, Laenge_Originalname - Laenge_bis_Punkt + 2) Set shape1.Name = shape1.Name & "_" & boolbody.Name
End If Error.Clear Next Next iErr = Err.Number If (iErr <> 0) Then MsgBox (Err.Description) Exit Sub End If MsgBox "Makro ist beendet", 64, makroname + " " + version End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hamlet Mitglied Konstruktions- und Entwicklungsingenieur
Beiträge: 57 Registriert: 14.05.2013 Catia V5 R21 Windows 7 64bit using: Microsoft Visual Basic
|
erstellt am: 04. Feb. 2014 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für chrisspeed
Ich weiß, dass deine Zeile: ----- Set Laenge_bis_Punkt = InStrRev(shape1.Name, ".") ----- Den Fehler enthält. Was genau allerdings falsch ist, kann ich nicht sagen. Scheinbar fehlt da noch etwas. [Diese Nachricht wurde von Hamlet am 04. Feb. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chrisspeed Mitglied Ingenier
Beiträge: 18 Registriert: 30.01.2014 Catia V5 R24 Windows 7 64 Bit Intel Xeon ES-1650 @ 3,2GHz 4 GB RAM
|
erstellt am: 04. Feb. 2014 10:58 <-- editieren / zitieren --> Unities abgeben:
ich habe jetzt die Zeile entgegen dem Buch abgeändert Set boolbody = shape1.Body If Err.Number = 0 then -> hier habe ich geschrieben If Err.Number <> 0 then jetzt funktioniert das Umbenennen, aber ich bekomme trotzdem die Meldung "Objekt erforderlich". Damit könnte ich leben, aber mich interessiert, was es damit auf sich hat. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 04. Feb. 2014 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für chrisspeed
Ich kann mir nicht vorstellen, dass das so im Kochbuch steht. ist ja Unsinn, außer man möchte etwas demonstrieren. Bist Du Dir sicher, dass ne Shape nen Body besitzt? Das würde ich schon stark anzweifeln. Dann setzt Du 3x hintereinander die Namenseigenschaft. Wozu? Machs doch gleich beim ersten Mal richtig. Wenn Du Hilfe möchtest teile doch die Zeile mit in der der Fehler auftritt. Dann würde mich stark wundern, wenn der Herr Hansen so grobe Fehler begeht, dass der Integer-Werte mit Set einem Objekt zuweist. Als nächstes würde ich mal die Variablen deklarieren, das macht es auch mir einfacher. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chrisspeed Mitglied Ingenier
Beiträge: 18 Registriert: 30.01.2014 Catia V5 R24 Windows 7 64 Bit Intel Xeon ES-1650 @ 3,2GHz 4 GB RAM
|
erstellt am: 04. Feb. 2014 12:53 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von HoBLila: Ich kann mir nicht vorstellen, dass das so im Kochbuch steht.ist ja Unsinn, außer man möchte etwas demonstrieren. Bist Du Dir sicher, dass ne Shape nen Body besitzt? Das würde ich schon stark anzweifeln. Dann setzt Du 3x hintereinander die Namenseigenschaft. Wozu? Machs doch gleich beim ersten Mal richtig. Wenn Du Hilfe möchtest teile doch die Zeile mit in der der Fehler auftritt. Dann würde mich stark wundern, wenn der Herr Hansen so grobe Fehler begeht, dass der Integer-Werte mit Set einem Objekt zuweist. Als nächstes würde ich mal die Variablen deklarieren, das macht es auch mir einfacher.
Ich habe es genauso vom Buch abgeschrieben. Leider wird nie das Ganze als abgebildet, sondern immer abschnittsweise, um Erklärungen einfließen zu lassen. Ich habe von Makroprogrammierung leider keine Ahnung, deswegen das Buch, aus dem ich stur abschreibe. Ich weiß nicht, warum 3x hintereinander die Namenseigenschaft kommt, es ist so abgeschrieben. Variablen deklarieren? Was bedeutet das? Es kommt kein Hinweis auf eine Zeilennummer, nur die Meldung "Objekt erforderlich". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Feb. 2014 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für chrisspeed
|
chrisspeed Mitglied Ingenier
Beiträge: 18 Registriert: 30.01.2014 Catia V5 R24 Windows 7 64 Bit Intel Xeon ES-1650 @ 3,2GHz 4 GB RAM
|
erstellt am: 04. Feb. 2014 14:17 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: Servus Dir ist bekannt das man die Makros (wie auch im Buch beschrieben) downloaden kann (siehe zB hier)Gruß Bernd
Ja, die habe ich auch. Nur leider funktioniert hier auf Arbeit der vba Editor nicht, da wahrscheinlich es nicht richtig installiert worden ist. Ich habe es der IT schon weiter gegeben, aber das kann noch ne Weile dauern. P.S. da der obige Threat von mir stammt, wusste ich von den Links. [Diese Nachricht wurde von chrisspeed am 04. Feb. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 07. Feb. 2014 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für chrisspeed
Haste nun das Set vor den Laengen weggemacht? Wenn Du kein VBA-Editor hast wo schreibst Du die Makros dann? ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 07. Feb. 2014 16:02 <-- editieren / zitieren --> Unities abgeben: Nur für chrisspeed
vielleicht ist das auch sinnvoller? Code: 'Boolesche Operationen----------------------------------------------- objSel.Clear objSel.Search "(((((CATPrtSearch.Assemble + CATPrtSearch.Trim) + CATPrtSearch.Add) + CATPrtSearch.Intersect) + CATPrtSearch.Split )+ CATPrtSearch.Remove),all" If objSel.Count > 0 Then For i = 1 To objSel.Count Set objBooleOperation = objSel.Item(i).Value 'Prüfen ob es sich um eine Boolesche Operation handlet. Ein Flächentrimm hat keine Methode Body On Error Resume Next If Left(objBooleOperation.Name, 1) = "#" Then 'wenn # dann nichts ändern ElseIf Not IsError(objBooleOperation.Body) Then Select Case TypeName(objBooleOperation) Case "Add" StrBooleOperation = "Hinzufügen " Case "Assemble" StrBooleOperation = "Zusammenbauen " Case "Intersect" StrBooleOperation = "Verschneiden " Case "Trim" StrBooleOperation = "Trimmen " Case "Split" StrBooleOperation = "Verschneiden " Case "Remove" StrBooleOperation = "Entfernen " End Select objBooleOperation.Name = StrBooleOperation & objBooleOperation.Body.Name End If On Error GoTo 0 Next End If
aus http://ww3.cad.de/foren/ubb/Forum133/HTML/010058.shtml#000021 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |