Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Einsteiger-Frage

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:  Einsteiger-Frage (1847 mal gelesen)
spikey jr.
Mitglied
Konstrukteur


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

Beiträge: 20
Registriert: 15.03.2007

erstellt am: 15. Mrz. 2007 17:49    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

Selbst hab ich schon etwas vba-Erfahrung und habe deshalb beschlossen mir die Programmierung für Catia anzueignen. (Ich bitte um Nachsicht- ich hab heute erst angefangen)

Jetzt wollte ich ein Makro erstellen, das mir einen Parameter erzeugt (hab ich hinbekommen - hört,hört) und dann eine Offsetebene generiert, die mit diesem Parameter verknüpft ist. (Das klappt nicht  )

Versucht habe ich es mit einer Makroaufzeichnung- leider erkennt er nicht, dass ich einen Parameter verknüpfe, sondern nimmt nur den Wert des Parameters.

Kann mir da jemand helfen.

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

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



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

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 15. Mrz. 2007 20:50    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 spikey jr. 10 Unities + Antwort hilfreich

Vielleicht solltest Du mal Deinen Code posten.

Axel

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

spikey jr.
Mitglied
Konstrukteur


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

Beiträge: 20
Registriert: 15.03.2007

erstellt am: 16. Mrz. 2007 10:08    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 Axel

Sehr gerne! Ich zeichne wie gesagt das Makro auf - verknüpfe dabei den erzeugten Parameter mit meiner Offsetebene - er übernimmt in der
Aufzeichnung aber nur den absoluten Wert. Bin aber wie gesagt blutiger Anfänger!  

Hier der Code:

Code:

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

'Parameter erzeugen ------------------------------------------------------------------------------------

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim Wert as double
Wert = InputBox("Bitte den Abstand der Ebene angeben")

Dim realParam1 As RealParam
Set realParam1 = parameters1.CreateReal("Abstand Ebene", Wert)

'Ebene erzeugen ------------------------------------------------------------------------------------

Dim hybridShapeFactory1 As Factory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim axisSystems1 As AxisSystems
Set axisSystems1 = part1.AxisSystems

Dim axisSystem1 As AxisSystem
Set axisSystem1 = axisSystems1.Item("Axis System.2")

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromBRepName("RSur :(Face :(Brp :(AxisSystem.2;1);None :();Cf9 :());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Dim hybridShapePlaneOffset1 As HybridShapePlaneOffset
Set hybridShapePlaneOffset1 = hybridShapeFactory1.AddNewPlaneOffset(reference1, 100.000000, False)

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

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

hybridBody1.AppendHybridShape hybridShapePlaneOffset1

part1.InWorkObject = hybridShapePlaneOffset1

part1.Update

End Sub


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

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



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

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 16. Mrz. 2007 13: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 spikey jr. 10 Unities + Antwort hilfreich

Soweit ich es interpretiere, definierst Du zwar einen Parameter, verwendest Ihn aber nachher nicht. Versuche mal Deine "100.000000"
durch "realParam1" zu ersetzen.

Wenn Du mehr in Richtung Makros und vb mit Catia machen willst, wäre vielleicht ein Buch nicht schlecht, den allein mit dem Makrorekorder wirst Du nicht so weit kommen.

Axel

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

Stoffel
Mitglied
Student


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

Beiträge: 322
Registriert: 09.10.2002

R6/V2010

erstellt am: 19. Mrz. 2007 14:53    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 spikey jr. 10 Unities + Antwort hilfreich

oder noch besser: realParam1.value

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 20. Mrz. 2007 09:34    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 spikey jr. 10 Unities + Antwort hilfreich

Hallo Spikey,

hab mir mal deinen Code angeschaut und grundsätzlich sind da zwei Dinge.

1. Der Parameter der die Offsetebene steuern soll, muss vom Typ Length sein, da auch der Offset der Ebene in mm angegeben wird. Dies sollte geändert werden.

2. Worauf soll sich die Offsetebene beziehen?? Auf eine Referenzebene oder eine Selektion des Anwenders?? das sollte auch geklärt werden.

Ich schau mal deinen Code an, vielleicht kann ich dir ein Beispiel posten wenn ich was habe.

Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

spikey jr.
Mitglied
Konstrukteur


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

Beiträge: 20
Registriert: 15.03.2007

erstellt am: 20. Mrz. 2007 09:41    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

Vielen Dank für Eure Mühen bisher! 

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 20. Mrz. 2007 09:54    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 spikey jr. 10 Unities + Antwort hilfreich

Hallo,

hab mal etwas in deinem Makro rumgepfuscht ;-)

Aber jetzt läuft es so wie du es haben willst.

Für die Zukunft dieses Makros gibt es nur ein paar kleine Probleme.

1. Wird das Makro mehrmals in einem Part angewendet, so heissen alle Parameter die erzeugt werden gleich.
2. Es muss, damit das Makro läuft ein Geometrisches Set mit dem Namen "Geometrical Set.1" vorhanden sein, ansonsten bricht es ab.
3. Da alle erzeugten Parameter den gleichen Namen haben, kann es bei der erzeugung der Formeln zu Schwierigkeiten kommen. (Falscher Parameter wird verknüpft)

Nichts desto trotz hier der Code der funktioniert, wie gesagt, es muss ein Geometrisches Set schon da sein und der Name muss lauten "Geometrical Set.1"

Hier der Code:

Code:

Language="VBSCRIPT"

Sub CATMain()
Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

'Parameter erzeugen ------------------------------------------------------------------------------------

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim Wert as double
Wert = InputBox("Bitte den Abstand der Ebene angeben")

Dim length1 As Dimension
Set length1 = parameters1.CreateDimension("Abstand_Ebene", "LENGTH", Wert)

'Ebene erzeugen ------------------------------------------------------------------------------------

Dim hybridShapeFactory1 As Factory
Set hybridShapeFactory1 = part1.HybridShapeFactory

'XY Ebene als Referenz zuweisen------------------------------------------------------------------
Dim originElements1 As OriginElements
Set originElements1 = part1.OriginElements

Dim hybridShapePlaneExplicit1 As AnyObject
Set hybridShapePlaneExplicit1 = originElements1.PlaneXY

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(hybridShapePlaneExplicit1)
'----------------------------------------------------------------------------------------------------------

Dim hybridShapePlaneOffset1 As HybridShapePlaneOffset
Set hybridShapePlaneOffset1 = hybridShapeFactory1.AddNewPlaneOffset(reference1, length1.Value, False)

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

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

hybridBody1.AppendHybridShape hybridShapePlaneOffset1

part1.InWorkObject = hybridShapePlaneOffset1

'Formel erzeugen--------------------------------------------------------------------------------------------------------------
Dim Formeln as Relations
Dim Formel as Formula
Dim Verkn_1

Set Formeln = part1.Relations
Set Verkn_1 = hybridShapePlaneOffset1.Offset
Set Formel = Formeln.CreateFormula("Formel_Ebene", "",Verkn_1 ,"Abstand_Ebene")

part1.Update

End Sub


------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

spikey jr.
Mitglied
Konstrukteur


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

Beiträge: 20
Registriert: 15.03.2007

erstellt am: 20. Mrz. 2007 10: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

Vielen Dank- das ist ja super

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 20. Mrz. 2007 11:38    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 spikey jr. 10 Unities + Antwort hilfreich

Bitte, kein Problem, freu mich das ich helfen konnte.

Wünsche noch viel Erfolg in der Programmierwelt.


Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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