Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Mehrere Abzugskörper von Part entfernen

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:  Mehrere Abzugskörper von Part entfernen (1462 / mal gelesen)
jupo2804
Mitglied


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

Beiträge: 9
Registriert: 24.07.2017

Catia v5 r24, Windows 7

erstellt am: 14. Aug. 2017 11: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 zusammen,

ich versuche mich gerade damit, ein "machined" Part zu generieren mit Hilfe eines Makros. In meinem Produkt sind die notwenigen Parts sowie die Abzugskörper eingelesen. Wenn ich den Abzugskörper vom Part manuell entfernen möchte, selektiere ich die gewünschten Abzugskörper, klicke rechts und kann das Objekt zum Entfernen definieren.

Diesen Prozess habe ich in ein Makro geschrieben, bekomme allerdings eine Fehlermeldung beim durchlaufen der Schleife. Der Fehler besagt: "The Method Item failed". Anscheinend muss dort irgendwo der Wurm drin sein, aber ich kann einfach nicht erkennen wo genau. Das Ausschreiben der Variablen, sei es Name oder Nummer, weisen keine Fehler auf. Der Fehler tritt erst auf, wenn ich die Operation AddNewRemove ausführe. Ich freue mich über jeden Hinweis oder Tipp. Hier noch der Code:

For i=1 To 3
Dim body2 As Body
Set body2 = bodies1.Item(i)
Dim shapes1 As Shapes
Set shapes1 = body2.Shapes

For k=4 To 6
Dim shapeFactory1 As Factory
Set shapeFactory1 = oSelPart.ShapeFactory
Set bodies1 = oSelPart.Bodies
Set body1 = bodies1.Item(k)
oSelPart.InWorkObject = body2
shapeFactory1.AddNewRemove body1
Next

Next

Vielen Dank schon mal im voraus und beste Grüsse,
Julien

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

monka
Mitglied



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

Beiträge: 67
Registriert: 26.01.2012

Windows 7 Professional 64bit
Catia V5-6 R2014/R2016

erstellt am: 14. Aug. 2017 12: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 jupo2804 10 Unities + Antwort hilfreich

Hallo Julien

deinem Code zufolge versuchst du den ersten 3 Körpern in deinem Part die Körper 4, 5 und 6 abzuziehen. Du müsstest demnach bevor du die Körper ein weiteres mal abziehen kannst eine Kopie erstellen. Versuch es mal ungefähr so. Achtung Code ist nicht getestet

Code:
Dim selection1 as Selection
Set selection1 =Catia.Activedocument.Selection

For i=1 To 3
Dim body2 As Body
Set body2 = bodies1.Item(i)
Dim shapes1 As Shapes
Set shapes1 = body2.Shapes

For k=4 To 6
Dim shapeFactory1 As Factory
Set shapeFactory1 = oSelPart.ShapeFactory
Set bodies1 = oSelPart.Bodies
Set body1 = bodies1.Item(k)

selection1.clear
selection1.Add body1
selection1.copy
selection1.clear
selection1.Add oSelPart
selection1.paste
selection1.clear

oSelPart.InWorkObject = body2
shapeFactory1.AddNewRemove body1
Next k

Next i


Gruß monka

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 14. Aug. 2017 12: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 jupo2804 10 Unities + Antwort hilfreich

Hi jupo,

bitte deine Systeminfo eintragen.

Zum Code:
- 'Dims' haben in einer Schleife nix verloren
- in der äusseren Schleife definierst Du 'body2 = bodies1.item(i).
  Zu diesem Zeitpunkt ist 'bodies1' undefiniert.
- Mit 'oSelPart.InWorkObject = body2' versuchst Du einen undefinierten  body2 'InWork' zu setzen.

Das kann alles nicht funktionieren.

Welchen Code erzeugt der Makro-Rekorder?

Code:

  Dim body2 As Body
  Dim shapes1 As Shapes
  Dim shapeFactory1 As factory

  For i = 1 To 3
      Set body2 = bodies1.Item(i)
      Set shapes1 = body2.Shapes

      For k = 4 To 6
        Set shapeFactory1 = oSelPart.ShapeFactory
        Set bodies1 = oSelPart.Bodies
        Set body1 = bodies1.Item(k)
        oSelPart.InWorkObject = body2
        shapeFactory1.AddNewRemove body1
      Next
  Next



Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

monka
Mitglied



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

Beiträge: 67
Registriert: 26.01.2012

Windows 7 Professional 64bit
Catia V5-6 R2014/R2016

erstellt am: 14. Aug. 2017 12: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 jupo2804 10 Unities + Antwort hilfreich

Hallo Julien

erst mal muss ich gestehen es war mir nicht bekannt das man per Makro einen Körper mehrfach von diversen Körpern abziehen kann (habs von Hand versucht und es ging nicht). Hab dein Code jetzt aber Probiert und er läuft durch wenn ich bodies1 so definier:

Code:

Set bodies1 = oSelPart.Part.Bodies

Gruß monka

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

jupo2804
Mitglied


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

Beiträge: 9
Registriert: 24.07.2017

Catia v5 r24, Windows 7

erstellt am: 14. Aug. 2017 13: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

Hallo,

Erst mal vielen Dank für die Beiträge.

Zum ersten Kommentar kann ich folgendes sagen.
Die Baumstruktur sieht momentan so aus: die ersten drei Parts sind die zu bearbeitenden Parts. Danach folgen 3 mal 3 Abzugskörper, die aus Kopien erzeugt worden sind. Daher war meine Idee, dass ich zuerst von Körper 1, die Körper 4 bis 6 abziehe. Danach verschwinden (bzw. werden verschoben) diese Parts aus der Baumstruktur und ich kann im nächsten Schritt für Part 2 erneut die Parts 4 bis 6 abziehen. Der Code funktioniert auch für i=1 und i=2 oder i=1 und i=3, sowohl in der For-Schleife als auch wenn ich es explizit in den Code schreibe. Erst wenn ich alle drei Parts einbeziehe, erscheint die Fehlermeldung. Daher habe ich das Gefühl, dass es irgendwie an der Schleife liegen muss.

Zu dem anderen Kommentar kann ich folgendes sagen:
Über die Dims beschwert sich Catia nicht, daher habe ich es nicht als falsch empfunden, aber ich verstehe den Einwand. Allerdings hat das herausziehen der Dims aus der Schleife leider auch nicht geholfen.
Die Definition von bodies1 ist vor der Schleife erfolgt, was ich aber anscheinend vergessen habe zu kopieren.
Der Code ist ein CATSkript für Catia v5 r24, falls das mit der Systeminfo gemeint ist.

Vielen Dank nochmals und beste Grüsse,
Julien

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 14. Aug. 2017 14: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 jupo2804 10 Unities + Antwort hilfreich


profil_01.PNG


profil_02.PNG

 
Zitat:

Über die Dims beschwert sich Catia nicht, daher habe ich es nicht als falsch empfunden, aber ich verstehe den Einwand. Allerdings hat das herausziehen der Dims aus der Schleife leider auch nicht geholfen.


Dass es nicht sinnvoll sein kann, dieselbe Variable immer wieder zu deklarieren, sollte einleuchten.
Kostet nur Zeit.
Zitat:

Die Definition von bodies1 ist vor der Schleife erfolgt, was ich aber anscheinend vergessen habe zu kopieren.
Der Code ist ein CATSkript für Catia v5 r24, falls das mit der Systeminfo gemeint ist.


Unter anderem, ja.
Wie du zu der Profil-Info gelangst, zeigt Bild01.
Was du wo eintragen kannst zeigt Bild02.

Tschau,
joe

------------------
Inoffizielle Catia Hilfeseite

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

jupo2804
Mitglied


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

Beiträge: 9
Registriert: 24.07.2017

Catia v5 r24, Windows 7

erstellt am: 14. Aug. 2017 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

jupo2804
Mitglied


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

Beiträge: 9
Registriert: 24.07.2017

Catia v5 r24, Windows 7

erstellt am: 15. Aug. 2017 09: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

Hallo zusammen,

ich habe das Problem lösen können. Vielen Dank nochmals für die Hilfe.

Im Endeffekt lag es daran, dass ich einen klassischen Anfängerfehler gemacht habe, was das zählen der Parts geht, die abgezogen werden sollen. Ich habe die Parts von 4 bis 6 durchzählen lassen. Allerdings habe ich nicht bedacht, dass nachdem das vierte Part abgezogen worden ist, es aus der Baumstruktur verschwindet. Daraufhin war das eigentlich fünfte Part nun das vierte, welches jedoch übersprungen wurde in meiner Schleife.

Das ist nun der funktionierende Code:

Dim bodies1 As Bodies
Dim body2 As Body
Dim shapes1 As Shapes
Dim shapeFactory1 As Factory

For i=1 To 3

Set body2 = bodies1.Item(i)
Set shapes1 = body2.Shapes

For n=1 To 3
Set shapeFactory1 = oSelPart.ShapeFactory
Set bodies1 = oSelPart.Bodies
Set body1 = bodies1.Item(4)
oSelPart.InWorkObject = body2
shapeFactory1.AddNewRemove body1
Next

Next

Viele Grüsse,
Julien

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



Technische Systemplaner / Zeichner - TGA (m/w/d)

SÜLZLE steht als starker Firmenverbund für Kompetenz und Innovationskraft in den Bereichen Stahl, Anlagenbau und Gebäudetechnik.

Für interessante Tätigkeiten in der Technischen Gebäudeausrüstung in Sulz am Neckar suchen wir ab sofort:

TECHNISCHE SYSTEMPLANER / ZEICHNER - TGA (M/W/D)


  • Erstellung von Konstruktionszeichnungen im Bereich der Technischen ...
Anzeige ansehenKonstruktion, Visualisierung
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: 15. Aug. 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 jupo2804 10 Unities + Antwort hilfreich


R19_Bodies_per_Index.png

 
Servus Julien
Ein paar Hinweise:
Bitte verwende korrekte Begriffe: deine Schleife geht über die Bodies (Körper) nicht über Parts (da ist was anderes)
Poste bitte Code in den entsprechenden Tags.
Verwende bessert sprechende Variablennamen (was soll den body2 sein?)
Dass sich die Reihenfolge der Bodies in der Bodies-Collection ändert wage ich zu bezweifeln (mit R19 getestet). Dies trifft zB bei GeoSet zu aber nicht bei Bodies. (das Ergebnis deines Codes sieht bei mir so aus wie im Bild gezeigt)

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