Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  VBA Makro - Affinität (Volumen)

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 Makro - Affinität (Volumen) (3252 mal gelesen)
geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 12. Aug. 2011 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

Moin Moin,

versuche jetzt schon seit einiger Zeit ein Makro für den Befehl Affinität im Volumenbereich zu erstellen, die Aufzeichnung des Makrorecorders funktioniert aber nicht..

Habe einfach einen Block erstellt und dann den Befehl aufgezeichnet, das hat der Rekorder ausgespuckt:

Code:
Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim hybridShapeFactory1 As HybridShapeFactory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim solid1 As Solid
' No resolution found for the object solid1...

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(solid1)

Dim hybridShapeAffinity1 As HybridShapeAffinity
Set hybridShapeAffinity1 = hybridShapeFactory1.AddNewAffinity(reference1, 1.01, 1.01, 1#)

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Hauptkörper")

Dim shapes1 As Shapes
Set shapes1 = body1.Shapes

Dim pad1 As Pad
Set pad1 = shapes1.Item("Block.1")

Dim reference2 As Reference
Set reference2 = part1.CreateReferenceFromBRepName("FVertex:(Vertex:(Neighbours:(Face:(Brp:(Pad.1;0:(Brp:(Sketch.1;3)));None:();Cf11:());Face:(Brp:(Pad.1;2);None:();Cf11:());Face:(Brp:(Pad.1;0:(Brp :(Sketch.1;2)));None:();Cf11:()));Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", pad1)

hybridShapeAffinity1.AxisOrigin = reference2


Bei der Ausführung meckert er folgende Zeile an (Invalid Procedure Call or Argument):

Code:
Set reference1 = part1.CreateReferenceFromObject(solid1)

Habt ihr vielleicht ne Idee?

Gruß
Stefan

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

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: 12. Aug. 2011 10: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 geekv5 10 Unities + Antwort hilfreich

Servus
Anbei ein Beispiel wie eine Affinität im Body erstellt wird (ohne Referenzen):
Code:
Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim ShapeFactory1 As ShapeFactory
Set ShapeFactory1 = part1.ShapeFactory

Dim ShapeAffinity1 As Affinity
Set ShapeAffinity1 = ShapeFactory1.AddNewAffinity2(1, 2, 3)

part1.Update

End Sub



Um die Referenzen zu setzen kannst du dann über ShapeAffinity1.Hybridshape auf die Befehle im GSD zurückgreifen: zB
ShapeAffinity1.Hybridshape.AxisFirstDirection oReference1

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 14. Aug. 2011 17:44    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 Bernd,

vielen Dank, hat soweit funktioniert, musste den Code nur Zeile für Zeile kopieren, ansonsten hat er immer Fehler gezeigt 

Leider verstehe ich den Rest deiner Erklärung nicht ganz, bezieht sich das auf den Ursprung der Skalierung?

Möchte einfach den Nullpunkt als Ursprung setzen..

Gruß
Stefan

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



Bauzeichner / Bautechniker (w/m/d)

Wir sind UNIT4 - ein überregional tätiges Architekturbüro mit Sitz in Stuttgart. Als Spezialisten für die Planung und Umsetzung komplexer Hochbauten der Micro-Electronik, Data- oder Hightech-Fabs der Advanced oder Green Facility Industries benötigen wir VERSTÄRKUNG bei diesen wegweisenden und spannenden Projekten.

Deshalb suchen wir Dich ab sofort am Standort Stuttgart als

BAUZEICHNER ...

Anzeige ansehenTechnischer Zeichner, Bauzeichner
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: 14. Aug. 2011 18:33    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 geekv5 10 Unities + Antwort hilfreich

Servus
Ich gehe davon aus, dass die Affinitätsfunktion im PartDesign CATIA-intern mit der Affinität im GSD erstellt/berechnet wird.
Über die Funktion Hybridshape kannst du dann auf die Befehle der GSD-Funktion (HybridShapeFactory) zugreifen.
Wenn du den Ursprung festlegen willst (muss ein Punkt sein) geht dass zB über (siehe auch Doku zu AddNewAffinity):
ShapeAffinity1.Hybridshape.AxisOrigin oReference (oReference = Referenz des Punktes)

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