| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| |
 | KISTERS 3DViewStation: Schnelligkeit und Präzision in dem neuen JT-Importer, eine Pressemitteilung
|
Autor
|
Thema: Einfügen in neues Part (1510 mal gelesen)
|
Spritty Mitglied

 Beiträge: 21 Registriert: 03.04.2006
|
erstellt am: 20. Mai. 2006 22:20 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, ich versteh die Sprache nicht mehr! Habe ein Makro geschrieben, das aus einem Part über eine InputBox einen Körper kopiert und in ein neues Part einfügt. Was ich nicht ganz verstehe: warum benennt er mir den Körper in Kopie von??? um, obwohl noch kein Körper vorhanden ist?! Der eingefügte Körper und die darin enthaltene Affinität muss so heissen, was ich in die InputBox eingebe! Das ist auch der Name im ürsprünglichen Part! Hab ich an meinem Makro was falsch gemacht? Oder kann ich nach dem Einfügen den Körper und die Affinität ändern? Hat jemand eine Idee?? Danke schonmal im Vorraus Und hier mein Makro: Set ADoc1 = CATIA.ActiveDocument Set part1 = ADoc1.Part Set parameters1 = part1.Parameters Set length1 = parameters1.Item("Dicke-Teile-Nummer") Set parameters2 = part1.Parameters Set length2 = parameters2.Item("Hoehe-Teile-Nummer") Set parameters3 = part1.Parameters Set length3 = parameters3.Item("Breite-Teile-Nummer") 'Eingeben und kopieren der 1. Zahl/des 1. Buchstaben der Teile-Nummer Set Liste1 = ADoc1.Selection Liste1.Clear Eingabe1 = "1.Zahl/Buchstabe der Teile-Nummer" Eingabe1 = InputBox ("Bitte hier die 1.Zahl/den 1. Buchstaben der Teile-Nummer eingeben" & Chr (13) & Chr (10) & "Achtung: Groß- und Kleinschreibung beachten!", "Eingabe der 1.Zahl/des 1. Buchstaben der Teile-Nummer", Eingabe1) If Eingabe1 = "" Then CATIA.ActiveDocument.Close Exit Sub End If Liste1.Search "'Part Design'.Körper.NAME =" & Eingabe1 & ";Alle" Liste1.Add length1 Liste1.Add length2 Liste1.Add length3 Liste1.Copy Set WinCol = CATIA.Windows Set ThisWindow1 = WinCol.Item(1) ThisWindow1.activate 'Einfügen der 1.Zahl/des 1. Buchstaben in das neue Part Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set selection1 = partDocument1.Selection selection1.Clear selection1.Add part1 selection1.Paste Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bobby_Joe2001 Mitglied Konstrukteur

 Beiträge: 81 Registriert: 15.01.2006
|
erstellt am: 21. Mai. 2006 12:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Spritty
Hallo, also Catia bennent das automatisch um, weil du ja mit dem jetztigen Code deinen Körper kopierst, aber in das selbe Part wieder einfügst (nicht in ein Neues wie du beschrieben hast!). Weil der Körper mit dem selben Namen schon existiert wird er umbenannt. Häng mal statt deinem letzten Absatz (Einfügen ...) folgenden Code an: Code:
'Neues Part erstellen Set MyNewPart = CATIA.Documents.Add("Part")'Im neuen Part gleich das Part selbst selektieren MyNewPart.Selection.Add MyNewPart.Part 'Koerper einfügen MyNewPart.Selection.Paste
Aber mal was anderes, warum erstellt ihr alle immer so viele Objektverweise. Ich find des behindert nur den code schneller zu verstehen und macht ihn auch oft länger. Hat des irgend einen Grund/Vorteil (Außer wenn ich einen Verweis oft brauche)?? Ich mein: Code:
Set WinCol = CATIA.Windows Set ThisWindow1 = WinCol.Item(1) ThisWindow1.activate
könnte ja ganz einfach Code:
CATIA.Windows.Item(1).activate
heißen. Ist meiner Meinung nach viel übersichtlicher. Ich lass mich gern belehren Gruß Bobby ------------------ Du musst die Leute einmal richtig ärgern, dann wirst du endlich ernst genommen. Konrad Adenauer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Spritty Mitglied

 Beiträge: 21 Registriert: 03.04.2006
|
erstellt am: 21. Mai. 2006 20:29 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bobby_Joe2001! Ich füge das kopierte eben nicht in das vorhandene Part ein, deshalb versteh ich das ganze ja auch nicht!! Ich wechsel ja mit Set WinCol = CATIA.Windows Set ThisWindow1 = WinCol.Item(1) ThisWindow1.activate in mein leeres Part?! Hast du trotzdem noch jemand eine Idee?! Danke für den Hinweis mit denObjektverweisen. Die Verweise sind bei mir deshalb so lange, dass es nach viel aussieht! Schreib nämlich grad eine Studienarbeit mit Makros Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bobby_Joe2001 Mitglied Konstrukteur

 Beiträge: 81 Registriert: 15.01.2006
|
erstellt am: 22. Mai. 2006 18:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Spritty
|
Lusilnie Mitglied
   
 Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 22. Mai. 2006 21:44 <-- editieren / zitieren --> Unities abgeben:          Nur für Spritty
Hallo Spritty, dies Problem ist (mir und sicher auch anderen) bekannt, obwohl ich nicht weiß, ob jemand den Grund und/oder einen Workaround kennt. So wie sich das Problem mir darstellt, ist es eine Laune von CATIA, ob es das eingefügte Object (Body, Geometrical_Set, ...) mit dem kopierten Namen oder mit "Copy from ..." einfügt. Daher ist es einmal nachzuvollziehen und einmal nicht. Vielleicht nach Neustart von CATIA? An alle: Wenn jemand doch den Grund für dieses Verhalten kennt, ich würde ihn auch gern wissen. Vielleicht kann es ja sogar abgestellt werden!?
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 |
Spritty Mitglied

 Beiträge: 21 Registriert: 03.04.2006
|
erstellt am: 23. Mai. 2006 18:34 <-- editieren / zitieren --> Unities abgeben:         
Hallo Lusilnie, das ist genau die Antwort, die ich eigentlich nicht hören möchte Aber jedes Programm führt so seine Macken mit sich herum, leider! Neustart bringt leider auch nichts und vor 2 Wochen ging ja mein Makro noch!! Und was habe ich jetzt für Möglichkeiten in meinem Makro? Kann ich den Körper und die Affinität umbenennen, damit ich denselben Namen habe wie zuvor?! Viele Grüße Spritty Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bobby_Joe2001 Mitglied Konstrukteur

 Beiträge: 81 Registriert: 15.01.2006
|
erstellt am: 23. Mai. 2006 20:20 <-- editieren / zitieren --> Unities abgeben:          Nur für Spritty
Zitat: Original erstellt von Spritty: Hallo Lusilnie,das ist genau die Antwort, die ich eigentlich nicht hören möchte Aber jedes Programm führt so seine Macken mit sich herum, leider! Neustart bringt leider auch nichts und vor 2 Wochen ging ja mein Makro noch!! Und was habe ich jetzt für Möglichkeiten in meinem Makro? Kann ich den Körper und die Affinität umbenennen, damit ich denselben Namen habe wie zuvor?! Viele Grüße Spritty
Jo, schneid halt einfach das "Kopie von " vom Namen ab. Code:
Sub CATMain() Set MyBodies = CATIA.ActiveDocument.Part.Bodies MyBodies.Item(MyBodies.Count).Name = Mid(MyBodies.Item(MyBodies.Count).Name, 10) End Sub
Zur Erklärung: Du fügst den Körper neu ein und so enspricht die Nummer vom neuen Körper genau der Anzahl der Körper. So kannst du immer den neuesten direkt ansprechen. Dann einfach mit dem "Mid"-Befehl die ersten 10 Stellen vom Namen abschneiden. Gruß Bobby
------------------ Du musst die Leute einmal richtig ärgern, dann wirst du endlich ernst genommen. Konrad Adenauer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |