Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro universal gestallten

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:  Makro universal gestallten (2316 mal gelesen)
Syphield
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 02.10.2007

erstellt am: 19. Mai. 2009 06: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

Morgen V5´ler,

ich habe ein Makro zum ändern einiger Parameterwerte.
Diese heißen in allen angewendeten Parts auch exakt gleich.
Die Parts selbst aber natürlich nicht.
Wie kann ich also definieren, daß immer das aktuelle Part gemeint ist.

Hier ein kleiner Auzug:

-----------------------------------------------------
Language="VBSCRIPT"

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim length1 As Parameter
Set length1 = parameters1.Item("Teilename\Offset_Bbox_Max_X.6")

length1.Value = 1.000000

part1.Update

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

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

------------------------------------------------------------

In Zeile 10 statt "Teilename" müßte doch dann ein universeller verweis stehen.
Und in der letzten Zeil heißt der Körper zwar immer "Rohteil" aber eben nicht immer ".6".


Gruß
Alex

------------------
Never stop progress !

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

theshadog
Mitglied



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

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 19. Mai. 2009 09: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 Syphield 10 Unities + Antwort hilfreich

Hm, also für das erste Problem hab ich eine Lösung (wenn ich dich richtig versteh):

Code:
Dim teilenummer As String
teilenummer = name.partNumber

gibt dir zB "part1" aus bzw. den Name, der ganz oben in deinem Baum steht.

Das andere Problem könntest du über eine Eingabe lösen, zB

Code:
Dim nummer as Integer
nummer = InputBox("Rohrnummer eingeben.", "Rohrnummer", nummer)
Dim body1 As Body
Set body1 = bodies1.Item("Rohteil." & nummer)


Oder machst es über eine Selection, wäre mMn aber aufwändiger, da das Teil ja immer Rohrnummer.Zahl heißt

Gruß

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

Syphield
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 02.10.2007

Win 7 Pro x64; Intel i7-3840QM @2,79GHz; 16GB RAM; Nvidia Quadro K5000M; CATIA V5 R19 x64 SP9 Hotfix 49

erstellt am: 19. Mai. 2009 11: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 theshadog,

danke für die schnelle Antwort.
Kannst Du mir das ein wenig genauer beschreiben.
Ich kenn mich mit Makros nur sehr bedingt aus.
Über eine Selection geht es glaub ich nicht.
Hab das mit der Makroaufzeichnung in einem Teil erstellt,
und möchte das Makro nun auch auf andere Teile anwenden,
die aber immer die besagten Parameter und den Körper Rohteil.X enthält.

Hab die Spalte nun so geschrieben:

Set length1 = parameters1.Item ("name.partNumber\Offset_Bbox_Max_X.6")

Richtig ?

Und wo soll nun "Dim teilenummer As String" stehen ?


Mit dem zweiten code weiß ich leider garnichts anzufangen:
_______________________________________________________________
Dim nummer as Integer
nummer = InputBox("Rohrnummer eingeben.", "Rohrnummer", nummer)
Dim body1 As Body
Set body1 = bodies1.Item("Rohteil." & nummer)
_______________________________________________________________

Wo soll ich diesen einfügen ?
Und was meinst Du mit "Rohrnummer" ? 

Bitte hilf mir hier nochmal.

------------------
Never stop progress !

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

theshadog
Mitglied



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

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 19. Mai. 2009 11:24    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 Syphield 10 Unities + Antwort hilfreich

Code:
Language="VBSCRIPT"

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim teilenummer As String
teilenummer = name.partNumber

Dim length1 As Parameter
Set length1 = parameters1.Item("teilenummer\Offset_Bbox_Max_X.6")

length1.Value = 1.000000

part1.Update

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim nummer as Integer
nummer = InputBox("Rohrteilnummer eingeben.", "Rohrteilnummer", nummer)
Dim body1 As Body
Set body1 = bodies1.Item("Rohteil." & nummer)


So hatte ich mir das vorgestellt    

Zur Erklärung vllt noch: mit
nummer = InputBox("Rohrteilnummer eingeben.", "Rohrteilnummer", nummer)

öffnet sich ein Fenster in Catia, in das du die Nummer des Rohrteils eingeben kannst. Dadurch kannst du quasi jedes beliebeige Teil mit dem Namen Rohrteil.ZAHL ansteuern.

[Diese Nachricht wurde von theshadog am 19. Mai. 2009 editiert.]

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

Syphield
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 02.10.2007

Win 7 Pro x64; Intel i7-3840QM @2,79GHz; 16GB RAM; Nvidia Quadro K5000M; CATIA V5 R19 x64 SP9 Hotfix 49

erstellt am: 19. Mai. 2009 12: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


Makro1.txt

 
Aha, verstehe. Gut zu wissen.
In dem Fall möchte ich das aber auch gerne umgehen, da mir die Nummer die Catia für den Körper vergibt ziemlich gleich ist, und er sich eben nur an dem Körpernamen: Rohteil halten soll.

Leider läuft das Makro immer noch nicht durch.
Jetzt Fehler in Zeile 32:

Beschreibung: Namer erneut Definieren
Anweisung: "Dim bodies1 As Bodies"

Das Makro geht dann ja auch noch weiter.
Nach dem alle Parameter auf den Wert 1 gesetzt wurden,
soll in einer Skizze noch eine Bedingung (Position umschalten) gesetzt werden.
In dem Part, in dem ich aufgezeichnet habe klappt das natürlich auch super.
Ich muß nach dem Problem bestimmt noch ander Befehle umschreiben, da in der Aufzeichnung ja alle Parameter auf namen verweisen, die in einem Anderen Teil ja auch anders heißen.

Im Anhang mal das Komplette Makro, so wie es nach der Aufzeichnung aussah,
und in dem Teil "ANGUSSBRUECKE_119265_119952_00038041" auch funktionierte.
Vielleicht siehst Du da mehr.

PS.: Was beschreibt eigentlich der Befehl "Dim....."

------------------
Never stop progress !

[Diese Nachricht wurde von Syphield am 19. Mai. 2009 editiert.]

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

theshadog
Mitglied



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

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 19. Mai. 2009 12:32    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 Syphield 10 Unities + Antwort hilfreich

Oh man, ich bin heut weng neben der Kappe.

Dim erzeugst du ein neues object/variable/etc. Darum kommt bei dir auch die Fehlermeldung. In Zeile 24 schreibst du "Dim bodies1 As Bodies" und in Zeile 32 schreibst du "Dim bodies1 As Bodies". Du sagst dem Programm also "erzeuge Bodies1 as Bodies" und dann 4 Zeilen später nochmal "erzeuge Bodies1 as Bodies". Aber den gibts ja schon.

Hatte bei meinem Zeug auch noch 2 kleine Fehler drin.

Im Anhang mal dein Code. Müsste jetzt soweit klappen, allerdings kanns gut sein, dass es später noch irgendwelche Sachen nicht findet.
Im Grunde musst du überall wo "("PRESSBLOCK_1_1_119310_119687_00034773\Offset_...") " steht ein "Set length1 = parameters1.Item(teilenummer + "\Offset_...")" draus machen. Dann geht das für jeden beliebigen Part.

Code:
Language="VBSCRIPT"

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim name As CATBaseDispatch
Set name = partDocument1.GetItem(partNumber)
Dim teilenummer As String
teilenummer = name.partNumber
Dim length1 As Parameter
Set length1 = parameters1.Item(teilenummer + "\Offset_Bbox_Max_X.6")

length1.Value = 1.000000

part1.Update

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim nummer as Integer
nummer = InputBox("Rohrteilnummer eingeben.", "Rohrteilnummer", nummer)
Dim body1 As Body
Set body1 = bodies1.Item("Rohteil." & nummer)

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = body1.HybridBodies

Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("definition_points")

Dim sketches1 As Sketches
Set sketches1 = hybridBody1.HybridSketches

Dim sketch1 As Sketch
Set sketch1 = sketches1.Item("Skizze.3")

Dim constraints1 As Constraints
Set constraints1 = sketch1.Constraints

Dim constraint1 As Constraint
Set constraint1 = constraints1.Item("Länge.1")

Dim length2 As Dimension
Set length2 = constraint1.Dimension

length2.Value = 69.000000

Dim constraint2 As Constraint
Set constraint2 = constraints1.Item("Länge.2")

Dim length3 As Dimension
Set length3 = constraint2.Dimension

length3.Value = 96.000000

Dim parameters2 As Parameters
Set parameters2 = part1.Parameters

Dim length4 As Parameter
Set length4 = parameters2.Item(teilenummer + "\Offset_Bbox_Min_X.2")

length4.Value = 1.000000

part1.Update

length2.Value = 69.000000

Dim parameters3 As Parameters
Set parameters3 = part1.Parameters

Dim length5 As Parameter
Set length5 = parameters3.Item(teilenummer + "\Offset_Bbox_Max_Y.2")

length5.Value = 1.000000

part1.Update

length3.Value = 96.000000

Dim parameters4 As Parameters
Set parameters4 = part1.Parameters

Dim length6 As Parameter
Set length6 = parameters4.Item(teilenummer + "\Offset_Bbox_Min_Y.2")

length6.Value = 1.000000

part1.Update

length2.Value = 69.000000

length3.Value = 96.000000

Dim parameters5 As Parameters
Set parameters5 = part1.Parameters

Dim length7 As Parameter
Set length7 = parameters5.Item(teilenummer + "\Offset_Bbox_Max_Z.2")

length7.Value = 1.000000

part1.Update

Dim parameters6 As Parameters
Set parameters6 = part1.Parameters

Dim length8 As Parameter
Set length8 = parameters6.Item(teilenummer + "\Offset_Bbox_Min_Z.2")

length8.Value = 1.000000

part1.Update

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

Dim visPropertySet1 As VisPropertySet
Set visPropertySet1 = selection1.VisProperties

Set hybridBodies1 = hybridBody1.Parent

Dim bSTR1 As String
bSTR1 = hybridBody1.Name

selection1.Add hybridBody1

Set visPropertySet1 = visPropertySet1.Parent

Dim bSTR2 As String
bSTR2 = visPropertySet1.Name

Dim bSTR3 As String
bSTR3 = visPropertySet1.Name

visPropertySet1.SetShow 0

selection1.Clear

Dim sketch2 As Sketch
Set sketch2 = sketches1.Item("Skizze.2")

part1.InWorkObject = sketch2

Dim factory2D1 As Factory2D
Set factory2D1 = sketch2.OpenEdition()

Dim geometricElements1 As GeometricElements
Set geometricElements1 = sketch2.GeometricElements

Dim point2D1 As GeometricElement
Set point2D1 = geometricElements1.Item("Punkt.1")

point2D1.SetData -68.000000, -95.000000

Dim point2D2 As GeometricElement
Set point2D2 = geometricElements1.Item("Punkt.2")

point2D2.SetData 1.000000, -95.000000

Dim line2D1 As GeometricElement
Set line2D1 = geometricElements1.Item("Linie.1")

line2D1.SetData 0.000000, -95.000000, 1.000000, 0.000000

Dim line2D2 As GeometricElement
Set line2D2 = geometricElements1.Item("Linie.2")

line2D2.SetData 1.000000, 0.000000, 0.000000, 1.000000

Dim line2D3 As GeometricElement
Set line2D3 = geometricElements1.Item("Linie.4")

line2D3.SetData -68.000000, 0.000000, 0.000000, 1.000000

sketch2.CloseEdition

Dim shapes1 As Shapes
Set shapes1 = body1.Shapes

Dim closeSurface1 As Shape
Set closeSurface1 = shapes1.Item("Rohteil")

part1.InWorkObject = closeSurface1

part1.Update

length2.Value = 69.000000

length3.Value = 96.000000

Dim selection2 As Selection
Set selection2 = partDocument1.Selection

Dim visPropertySet2 As VisPropertySet
Set visPropertySet2 = selection2.VisProperties

Set hybridBodies1 = hybridBody1.Parent

Dim bSTR4 As String
bSTR4 = hybridBody1.Name

selection2.Add hybridBody1

Set visPropertySet2 = visPropertySet2.Parent

Dim bSTR5 As String
bSTR5 = visPropertySet2.Name

Dim bSTR6 As String
bSTR6 = visPropertySet2.Name

visPropertySet2.SetShow 1

selection2.Clear

End Sub


Hoffe das hilft dir!

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

Syphield
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 02.10.2007

Win 7 Pro x64; Intel i7-3840QM @2,79GHz; 16GB RAM; Nvidia Quadro K5000M; CATIA V5 R19 x64 SP9 Hotfix 49

erstellt am: 19. Mai. 2009 13:23    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

Erst mal vielen Dank, daß Du Dir so viel Zeit dafür nimmst. 

Läuft jetzt es mal wenigstens ein Stück weiter.

Jetzt findet er halt bestimmte Skizzen und Bedingngen nicht,
da diese halt anders nummeriert sind.
Das alte Problem eben !
In einem Teil, in dem schon z.B. 2 Skizzen vorhanden sind,
kann ein neue Skizze dann eben nicht mehr Skizze.1,
sondern Skizze.3 heißen !

Da seh ich langsam keine Möglichkeit mehr dem zu entkommen.

Wobei.... das Teil "Rohteil" und sämtliche Geometrie sowie die Parameter,
werden bei mir ja von dem bekannten "BoundingBox" Skript erstellt. (Ist Dir vielleicht bekannt)
Hab dieses dann nur ein wenig auf Deutsch umgeschrieben.
Bei diesem Skript blick ich allerdings garnicht mehr Durch  *Overload* 
Glaubst Du man kann hier vielleicht einige Dinge Vordefinieren, die dem nachfolgendem Makro evtl. entgegen kommen ?

PS.: Hast Du vielleich noch eine Buchempfehlung zu dem Thema Makros für mich ?
Würde in dem Bereich gerne mal mehr Durchblick gewinnen.

------------------
Never stop progress !

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

DanielFr.
Moderator
Manager


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

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: 20. Mai. 2009 06: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 Syphield 10 Unities + Antwort hilfreich

Hallo Alex,

also Lektüre kann ich dir wärmsten das Buch von Jens Hansen ans Herz legen.

Kochbuch - CATIA V5 automatisieren

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

Syphield
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 02.10.2007

erstellt am: 20. Mai. 2009 11:13    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

Das sieht echt gut aus !
Schon Bestellt 

Danke

------------------
Never stop progress !

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

theshadog
Mitglied



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

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 20. Mai. 2009 18:18    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 Syphield 10 Unities + Antwort hilfreich

Also ich finde das Buch "CATIA V5 Makroprogrammierung mit Visual Basic Script" sehr empfehlenswert. Im "Kochbuch" wird vieles an Beispielen erklärt, was man nicht einfach auf anderes übertragen kann.


Zu deinem Problem:

Bei den Skizzen kannst du ebenfalls über eine Eingabe arbeiten.

Code:
Dim zahl as Integer
zahl = InputBox("Skizzennummer eingeben.", "Skizzennummer", zahl)

Dim sketch1 As Sketch
Set sketch1 = sketches1.Item("Skizze." & zahl)


Eine andere Möglichkeit wäre, dass du eine Selection definierst, damit der Anwender die zu bearbeitende Skizze anklickt.

Kannst ja mal im Forum suchen, wie das geht. Ich schau am Freitag wieder rein 

Generell wirst du überall, wo du eine Nummerierung hast (Länge.1, Punkt.1, ...) das Problem bekommen, dass CATIA motzt. Einfachste Möglichkeit wäre, die Sachen eindeutig zu benennen und dann überall gleich. Also in Rohrteil.1 hast du "Grundskizze", "Rohrlänge" und "Startpunkt" und in Rohrteil.2 auch.

Jenachdem was das für ein Arbeitsaufwand ist, das alles umzubenennen.

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

Syphield
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 02.10.2007

Win 7 Pro x64; Intel i7-3840QM @2,79GHz; 16GB RAM; Nvidia Quadro K5000M; CATIA V5 R19 x64 SP9 Hotfix 49

erstellt am: 21. Mai. 2009 08:58    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

Das mit der Umbenennung hab ich mir auch schon gedacht.
Und zwar gleich in dem Skript "BoundingBox" mit dem die Skizzen etc. erstellt werden.

Das kann ich doch einfach so schreiben:

   skizze1.name = "Grundskizze."

genauso, wie ich bereits geschrieben habe:

   body1.name = "Rohteil."

Kann ich denn hierbei irgendwie allgeimein verhindern, daß das Zeug Nummeriert wird,
und den Punkt, kann man den weglassen ?
Händisch kann ich doch auch z.B. "Trennen.4" umbenennen in "Kontrur".


Gruß
Alex


------------------
Never stop progress !

[Diese Nachricht wurde von Syphield am 21. Mai. 2009 editiert.]

[Diese Nachricht wurde von Syphield am 21. Mai. 2009 editiert.]

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

theshadog
Mitglied



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

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 22. Mai. 2009 09:55    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 Syphield 10 Unities + Antwort hilfreich

Sobald du die Skizze selbst benennst, macht CATIA da keine Nummerierung dran. Erstellst du zB 3 Skizze kannst du sie alle "Skizze" nennen, indem du schreibst

Code:

Set sketeches1 = ...
sketches1.name = "Skizze"

Set sketeches2 = ...
sketches2.name = "Skizze"

Set sketeches3 = ...
sketches3.name = "Skizze"


Das gleiche kommt dabei raus, wenn du die Skizzen in einer Schleife stehen hast:

Code:

do while c < 4

Set sketeches1 = ...
sketches1.name = "Skizze"

c = c + 1
loop


Hier kommen ebenfalls 3 Skizzen raus, die alle "Skizze" heißen.

Schreibst du jetzt

Code:

do while c < 4

Set sketeches1 = ...
sketches1.name = "Skizze" & c

c = c + 1
loop



heißen die Skizzen "Skizze1", "Skizze2" und "Skizze3".

Warum CATIA da einen Punkt dahinter setzt? KA, braucht man aber nicht.

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

MICHLICK
Mitglied
CAD Methodik Entwickler (CATIA; NX)


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

Beiträge: 454
Registriert: 20.06.2001

Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.

erstellt am: 27. Mai. 2009 16:55    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 Syphield 10 Unities + Antwort hilfreich

Hallo,

bitte Vorsicht mit so pauschalen Aussagen: "kannst Die alle Skizze" nennen. Das ist nur möglich, wenn CATIA so eingestellt ist, dass keine Namensprüfung stattfindet. Wenn der Name geprüft wird, nennt CATIA die 2. Skizze in Skizze.Renamed (oder so ähnlich) um.

Wie CATIA eingestellt ist, kannst Du in den Tools/Options nachschauen unter:

Infrastructure/Part Infrastructure/Display/Checking Operation When Renaming.

Ausserdem sollte man bedenken, wenn mehrere Elemente gleich heißen, ist es wohl schwierig per Skript ein Element eindeutig zu finden!
Aber sicherlich hast Du dafür eine Lösung. Kannst Du mir den Trick verraten?


------------------
Gruß Michael B.

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

Syphield
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 02.10.2007

erstellt am: 28. Mai. 2009 08: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


Danke für die vielen Antworten.

Bin bereits fleißig am "Kochbuch" lesen 
Ist wirklich ein sehr gutes Buch.

Gruß
Alex

------------------
Never stop progress !

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

theshadog
Mitglied



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

Beiträge: 61
Registriert: 18.03.2009

erstellt am: 04. Jun. 2009 14: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 Syphield 10 Unities + Antwort hilfreich

   
Zitat:
Original erstellt von MICHLICK:

Ausserdem sollte man bedenken, wenn mehrere Elemente gleich heißen, ist es wohl schwierig per Skript ein Element eindeutig zu finden!
Aber sicherlich hast Du dafür eine Lösung. Kannst Du mir den Trick verraten?


Heißen mehrere gleich gibts entweder die Möglichkeit, dass man die Elemente in verschiedenen GeoSets speichert und dann dort ausließt.
Beispiel: Die beiden Punkte "Punkt.1" sind Anfangspunkte von einer Reihe von Punkten auf zwei unterschiedlichen Spline und sollen als Referenz benutzt werden.
Jetzt speicher ich alle Punkte (punkt.1, punkt.2, ...) beim erstellen in zwei verschiedenen GeoSets "GeoSet1" und "GeoSet2". Dann kann ich sie beide ansteuern, auch wenn alle Punkte gleich heißen:

Code:

Set hybridBody4 = hybridBodies2.Item("GeoSet1")
Set hybridShapes2 = hybridBody4.HybridShapes
Set hybridShapePointOnCurve1 = hybridShapes2.Item("Punkt.1")

Set hybridBody4 = hybridBodies2.Item("GeoSet2")
Set hybridShapes2 = hybridBody4.HybridShapes
Set hybridShapePointOnCurve2 = hybridShapes2.Item("Punkt.1")


Andere Möglichkeit ist eben wie erwähnt, dass ich sowas dann mit einer Selection löse, in der der Anwender die zu bearbeitende Skizze/Punkt/Linie/ect selbst auswählt. Zwar etwas umständlicher, aber insgesamt immer noch schneller, als müsste er alles manuell machen.

[Diese Nachricht wurde von theshadog am 04. Jun. 2009 editiert.]

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

SZA79
Mitglied
Konstrukteur


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

Beiträge: 23
Registriert: 09.06.2009

CATIA V5 R19 SP3 HF19
WIN XP 64bit
Intel XEON (2x)3GHz
8GB RAM

erstellt am: 09. Jun. 2009 15: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 Syphield 10 Unities + Antwort hilfreich

Ich habe bei meinen Experimenten mit der Makroaufzeichnung feststellen können, daß diese Aufzeichnung grundsätzlich kontextbezogen ist, d.h. im Makro immer auf das Objekt (CATPart, CATProduct...etc) refferenziert wird, was zur Folge hat,daß das Makro auf andere Objekte nicht ausführbar ist. Ich habe dann einfach mal ganz frech diese Bezüge im Makro gelöscht und siehe da, es lässt sich auf alle Objekte anwenden. Inwieweit das mit kompexeren Anwendungen funktioniert, kann ich nicht beurteilen, aber auf einen Versuch würde ich es an Deiner Stelle ankommen lassen.

Als Beispiel habe ich mir über diese Art und Weise ein Makro geschrieben, was sämliche "Nicht-Geometrie"-Features ins NoShow stellt. Alle 2D Elemente, AxisSysteme, Planes, Sketches...alles ins NoShow, sodaß ich die "reine" Geometrie sehen kann. Das Makro war anfangs auch nur auf das Objekt anwendbar, mit dem ich die Aufzeichnung gemacht hatte. Mittlerweile ist dieses Makro in unserer gesamten Abteilung in Anwendung und bisher funktioniert es.

Ich kann Dir das aufgezeichnete Makro und zum Vergleich das "bereinigte" Makro posten, wenn Du es möchtest.

------------------
Wer lesen kann ist klar im Vorteil!

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