Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Bohrung per VBA einfügen

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:  Bohrung per VBA einfügen (2692 mal gelesen)
Michel_11
Mitglied
Technischer Zeichner


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

Beiträge: 22
Registriert: 14.08.2004

erstellt am: 20. Apr. 2005 12:09    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 Ich habe folgendes Problem:

Ich generiere einen Kolben mit einem Makro (eigentlich mehrere):

Dann will ich auf den parallelen abgefrästen Flachen (in der unteren Hälfte des Kolbens) die Bohrung für die Achse des Pleuels einbauen:

1) Fläche selektieren
2) Bohrungsdialog
3) Skizze für Bohrung generieren ...

Ich zeiche alles mit der Makrofunktion auf..
Aber beim erneuten Ablaufen des Skriptes an einem neuen Testpart steht das Skript, da natürlich Catia nicht weiß auf welcher Fläche die Bohrung (Skizze etc) gefertigt werden soll.

Meine Frage:

a) Hat jemand ein Beispielskript für Bohrung, Extrusion auf einer Fläche (mit der Option: Skizze für Bohrung generieren)
b) Wie selektiere ich beliebige Elemente (Fläche, Linie, Part usw.)
Vermutlich ist das in der Catia API beschrieben??

Es wäre super, wenn mir einer Rat geben kann!!
Es ist verdammt mühsam durch ewiges Austesten die Lösung zu finden!!

Schon mal Danke an alle die mir hilfreiche Tipps schicken.


------------------
Bin schon gespannt wer alles antwortet

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

prosper
Mitglied
Dipl.-Ing. -- Methoden und Prozessentwicklung Catia V5


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

Beiträge: 86
Registriert: 05.05.2004

erstellt am: 26. Apr. 2005 18: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 Nur für Michel_11 10 Unities + Antwort hilfreich

Hallo,

Wenn ich richtig verstehe, möchtest du eine Skizze auf eine Face generieren. Und das ist nicht so einfach (bzw. auch nicht sehr stabil), weil du auf BREPs referenziert.

a) solchen Skript habe ich leider nicht.
b) mit der Funktion SelectElement, und mit dem filter Face, Line, Part... Bei Faces (BREPs) muss du, meiner Meinung nach, die Referenz benutzen (osel.Item(1).Reference) um deine Skizze zu generien.
Ich habe sowas noch nie gemacht ist aber bestimmt möglich! Falls du keine Lösung findest kann ich immer noch probieren sowas zu programmieren, sag mir einfach Bescheid.

gruss
Chris

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

prosper
Mitglied
Dipl.-Ing. -- Methoden und Prozessentwicklung Catia V5


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

Beiträge: 86
Registriert: 05.05.2004

erstellt am: 26. Apr. 2005 19:15    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 Michel_11 10 Unities + Antwort hilfreich

Hallo,

vielleicht kann dir sowas weiterhelfen:

Sub CATMain()

Set osel = CATIA.ActiveDocument.Selection
osel.Clear

Dim afilter(0)
afilter(0) = "Face"

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set shapeFactory1 = part1.ShapeFactory

sstatus = osel.SelectElement(afilter, "Select a Face", False)
Set oref = osel.Item(1).Reference
osel.EndSelectElement

Set hole1 = shapeFactory1.AddNewHoleFromPoint(0, 0, 20, oref, 10)
hole1.Type = catSimpleHole
hole1.AnchorMode = catExtremPointHoleAnchor
hole1.BottomType = catFlatHoleBottom
Set limit1 = hole1.BottomLimit
limit1.LimitMode = catOffsetLimit
Set length1 = hole1.Diameter
length1.Value = 10
hole1.ThreadingMode = catSmoothHoleThreading
hole1.ThreadSide = catRightThreadSide
hole1.BottomType = catTrimmedHoleBottom
limit1.LimitMode = catUpThruNextLimit

part1.Update

End Sub


Das Makro erzeugt ein Hole auf der selektierte Fläche. Coordinates des Punktes: 0,0 auf der Fläche.

Hilft sowas?

Gruss
chris

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

Michel_11
Mitglied
Technischer Zeichner


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

Beiträge: 22
Registriert: 14.08.2004

erstellt am: 28. Apr. 2005 15: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


block-Assistent-Catia.jpg

 
Super der Beispielcode funktioniert.

Doch rätsel ich immer noch an meinem Problem herum.
Catia doktert in seinem aufgezeichnetem Skript mit 'as Parameters' herum??? Um die Einstellungen aus dem Block-Dialog abzugreifen??
Das Skript läuft nur dann ohne Fehler wenn ich dies Paramter "Hauptkörper\Block.1\Begrenzung ...." per "Set offset_Surface ... " manuell definiert habe.... aber diese eigenen Parameter interessiert der Block beim genauen hinsehen nicht ...

Kannst du mir sagen:
a) Welche Parameter muß ich Pad1 übergeben (analog Deinem hole1)
b) Was hat es den überhaupt mit den seltsamen Parametern "Hauptkörper\Block.1\Begrenzung..." auf sich??

In einer kleiner For-Next-Schleife habe ich mir mal diese Parametetliste angesehen ... nun ja da taucht nach dem manuellen Start des Catia-Block-Dialog plötzlich 2mal die ominösen Parameter auf???

Hier mal meine Funktion:

Function Creating_Block()

' COPYRIGHT Michel *ggg*

' *****************************************************************************
'  Purpose:      Create block
'  Step:          5
'  Assumtions:    None
'  Author:        M.Frey
'  Languages:    VBScript
'  Locales:      English
'  CATIA Level:  V5R12
' *****************************************************************************

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set shapeFactory1 = part1.ShapeFactory
Set reference1 = part1.CreateReferenceFromName("")

Set Pad1 = shapeFactory1.AddNewPadFromRef(reference1, 20#)
Pad1.DirectionOrientation = catInverseOrientation

Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("Hauptkörper")

Set sketches1 = body1.Sketches
Set originElements1 = part1.OriginElements
Set reference2a = originElements1.PlaneYZ
Set sketch1 = sketches1.Add(reference2a)

Set reference2 = part1.CreateReferenceFromObject(sketch1)
Pad1.SetProfileElement reference2

Set factory2D1 = sketch1.OpenEdition()

Set point2D1 = factory2D1.CreatePoint(-30#, 0#)
point2D1.ReportName = 3

Set circle2D1 = factory2D1.CreateClosedCircle(-30#, 0#, 17.5)
circle2D1.CenterPoint = point2D1
circle2D1.ReportName = 4

Set constraints1 = sketch1.Constraints
Set reference3 = part1.CreateReferenceFromObject(circle2D1)

Set constraint1 = constraints1.AddMonoEltCst(catCstTypeRadius, reference3)
constraint1.Mode = catCstModeDrivingDimension

Set Length1 = constraint1.Dimension
Length1.Value = 17.5

Set reference4 = part1.CreateReferenceFromObject(point2D1)
Set geometricElements1 = sketch1.GeometricElements
Set axis2D1 = geometricElements1.Item("Absolute Achse")
Set line2D1 = axis2D1.GetItem("V-Richtung")
Set reference5 = part1.CreateReferenceFromObject(line2D1)

Set constraint2 = constraints1.AddBiEltCst(catCstTypeDistance, reference4, reference5)
constraint2.Mode = catCstModeDrivingDimension

Set Length2 = constraint2.Dimension
Length2.Value = 30#

Set reference6 = part1.CreateReferenceFromObject(point2D1)
Set line2D2 = axis2D1.GetItem("H-Richtung")
Set reference7 = part1.CreateReferenceFromObject(line2D2)

Set constraint3 = constraints1.AddBiEltCst(catCstTypeDistance, reference6, reference7)
constraint3.Mode = catCstModeDrivingDimension

Set length3 = constraint3.Dimension
length3.Value = 0#

sketch1.CloseEdition

'now update inserted block

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("Hauptkörper")
Set shapes1 = body1.Shapes
Set Pad1 = shapes1.Item("Block.1")

Set limit1 = Pad1.FirstLimit
limit1.LimitMode = catUpToNextLimit
'identisch zu Pad1.FirstLimit.LimitMode = catUpToNextLimit

Set limit2 = Pad1.SecondLimit
limit2.LimitMode = catUpToNextLimit
'identisch zu Pad1.FirstLimit.LimitMode = catUpToNextLimit

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

'############## eingefügt von mir #########################
'ohne diesen Befehl steht das Programm mit einem Fehler !!
'-----------------------------------------------------------
Dim offset_Surface As RealParam
Set offset_Surface = parameters1.CreateReal("Hauptkörper\Block.1\Begrenzung1\OffsetFromSurface", 10.1)
Set offset_Surface = parameters1.CreateReal("Hauptkörper\Block.1\Begrenzung2\OffsetFromSurface", 6.1)
'###########################################################

Set limit1 = Pad1.FirstLimit
limit1.LimitMode = catUpToNextLimit

Set parameters1 = part1.Parameters

Set length4 = parameters1.Item("Part1\Hauptkörper\Block.1\Begrenzung1\OffsetFromSurface")
length4.Value = 5#

Set limit2 = Pad1.SecondLimit
limit2.LimitMode = catUpToNextLimit

Set parameters2 = part1.Parameters

Set length5 = parameters2.Item("Part1\Hauptkörper\Block.1\Begrenzung2\OffsetFromSurface")
length5.Value = 5#

Pad1.DirectionOrientation = catRegularOrientation

part1.Update

End Function
 

------------------
Bin schon gespannt wer alles antwortet

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