Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  VBA -> Einem Element ein Parameter zuweisen

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:  VBA -> Einem Element ein Parameter zuweisen (3302 mal gelesen)
Bernod
Mitglied



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

Beiträge: 40
Registriert: 03.03.2010

erstellt am: 15. Apr. 2010 11: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

Hallo,

mein Problem wurde in ähnlicher Weise schon ein paar mal hier angesprochen. Leider konnte ich die Hilfestellungen nicht auf mein Problem übertragen.

Und zwar folgendes:
- In meinem CATPart existiert eine Polyline und ein Parameter
- Über ein VBA-Makro soll der Parameter ausgelesen und der Polyline als Biegeradius zugewiesen werden.
- Die Polyline besteht beispielsweise aus 3 Punkten und soll den Radius an Punkt 2 bekommen

Mein Problem:
- Ich verstehe nicht genau wie ich den Parameter an die Polyline übergebe.
- Und habe ich die Formelzuweisung richtig geschrieben?

Die Ordnerstruktur sieht wie folgt aus:
- Part > Parameterset: "Parameters" > Parameter: "MEINRADIUS"
- Part > Body: "BODY" > HybridBody: "GEOSET" > Polyline: "MEINEPOL"

Hier ist mein Programmcode:
'############################################
Sub CATMain()

Dim Dokument1 As Document
Set Dokument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = Dokument1.Part

Dim hybridShapeFactory1 As Factory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

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

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = body1.HybridBodies

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

' *********************************************************
' ************** wichtiger Abschnitt START ****************
' *********************************************************

Dim hybridShapesX As HybridShapes
Set hybridShapesX = hybridBody1.HybridShapes

Dim Polyline1 As HybridShapePolyline
Set Polyline1 = hybridShapesX.Item("MEINEPOL")              ''''''' Hier wird die Polyline deklariert     

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim parameter1 As Parameter
Set parameter1 = parameters1.Item("MEINRADIUS")

Dim rels As Relations
Set rels = part1.Relations


Dim PARAMETER_X As ????
Set PARAMETER_X = ????

Dim formula1 As Formula
Set formula1 = rels.CreateFormula("Formel.XY1", "", PARAMETER_X, "`MEINRADIUS`")


Polyline1.SetRadius 2, PARAMETER_X

' *********************************************************
' **************** wichtiger Abschnitt END ****************
' *********************************************************
                 
part1.InWorkObject = Polyline1

part1.Update

part1.InWorkObject = body1

Set Dokument1 = CATIA.ActiveDocument

End Sub
'############################################


Vielen Dank schonmal!

Gruß,
Bernod

PS: Kann ich irgendwo mein Foren-Passwort ändern?

[Diese Nachricht wurde von Bernod am 15. Apr. 2010 editiert.]

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

Bernod
Mitglied



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

Beiträge: 40
Registriert: 03.03.2010

erstellt am: 15. Apr. 2010 15:59    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

Ich bin nun einen guten Schritt vorangekommen. Allerdings funktioniert es immernoch nicht eiwandfrei.

' *********************************************************
' ************** wichtiger Abschnitt START ****************
' *********************************************************

Dim hybridShapesX As HybridShapes
Set hybridShapesX = hybridBody1.HybridShapes

Dim Polyline1 As HybridShapePolyline
'''''''' Hier wird die Polyline deklariert ''''''''
Set Polyline1 = hybridShapesX.Item("MEINEPOL")

'''''''' Anfangs muss ein willkürlicher Wert für den Radius angenommen werden. ''''''''
'''''''' Erst dadurch wird der Parameter erstellt und kann später mit meinem selbst definierten Parameter verknüpft werden. ''''''''
Polyline1.SetRadius 2, 1.0000

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim PARAMETER_X As Parameter

'''''''' Hier ist das Problem: ''''''''
Set PARAMETER_X = parameters1.Item(CATIA.ActiveDocument.Part.Name & "\BODY\GEOSET\MEINEPOL\Radius")

Dim rels As Relations
Set rels = part1.Relations

Dim formula1 As Formula
Set formula1 = rels.CreateFormula("Formel.XY1", "", PARAMETER_X, "`MEINRADIUS`")

' *********************************************************
' **************** wichtiger Abschnitt END ****************
' *********************************************************


Mein Problem ist in der Zeile nach '''''''' Hier ist das Problem: ''''''''

Und Zwar muss ich in der Parameterzuweisung den genauen Namen des (automatisch erstellten) Parameters kennen. In diesem Fall ist das "Radius". Dieses Makro möchte ich jedoch in einer Schleife einsetzen. In meinem vollständigen Makro wird ein bestimmtes GeoSet nach Punkten abgesucht. Je nachdem wieviele Punkte dort drin sind werden diese in die Polyline eingefügt. Dies Funktioniert auch so wie es soll. Dann soll aber noch der Radius eingefügt werden. Bei mehreren Punkten würden somit auch mehrere Parameter (für die einzelnen Radien) entstehen. Diese heißen aber alle "Radius".

Ich würde den Zugriff auf den Parameter also viel lieber anstelle über den Namen über die Reihenfolge festlegen. Ich weiß nur nicht wie das geht. Hat jemand eine Idee?

Ich stelle mir das ungefähr so ähnlich vor (aber das funktioniert nicht):

'----------------
'----------------

Dim hybridShapesX As HybridShapes
Set hybridShapesX = hybridBody1.HybridShapes

Dim Polyline1 As HybridShapePolyline
Set Polyline1 = hybridShapesX.Item("MEINEPOL")

Polyline1.SetRadius 2, 1.0000


Dim parameters1 As Parameters
Set parameters1 = (CATIA.ActiveDocument.Part.Name & "\BODY\GEOSET\MEINEPOL\MEINRADIUS" & .Parameters)  '''' <-- Hier Fehler

Dim rels As Relations
Set rels = part1.Relations

Dim formula1 As Formula

For I=1 To parameters1.Count
Set PARAMETER_X = parameters1.Item(I)
Set formula1 = rels.CreateFormula("Formel.XY1", "", PARAMETER_X, "`MEINRADIUS`")
Next
'----------------
'----------------

EDIT: Ich habe nun festgestellt, dass das Problem mit der gleichen Benennung für den Parameter (Radius in Polyline) durch den Befehl SetRadius verursacht wird. Da Alle Radien die gleiche Benennung erhalten

Um das Problem zu lösen muss ich also entweder die oben genannte Idee realisieren (also den Parameter nicht über den Namen, sondern über die Position aufrufen) oder eine Möglichkeit finden den Parameternamen (für die Radien in der Polyline) umzubenennen, so dass ich diese einzelnd ansprechen kann. ... irgendwelche Vorschläge?

Gruß,
Bernod


[Diese Nachricht wurde von Bernod am 15. Apr. 2010 editiert.]

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