Foros CATIA

1 envío / 0 nuevos
Inicie sesión o regístrese para comentar
goroscar
Desconectado/a
Visto por última vez: Hace 2 años 1 mes
se unió: 05/25/2009 - 16:31
Macro - hacer agujero pasante en un pto seleccionado

Hola. Estoy tratando de desarrollar/encontrar una macro que permita hacer una agujero (parametrizado) en un punto seleccionado con el ratón. Es un agujero patrón que siempre es de igual dimensiones y lo que busco es evitar que estar siempre colocando las mismas cotas (Ø, longitud....)

Hasta ahora he conseguido que al iniciar la macro, te pida seleccionar el punto donde quieres insertar el agujero pero ya no se como continuar. todos los intentos han sido fracasos. Podeis ayudarme a conseguir esta macro? Muchas gracias

Os dejo el codigo que tengo:

Sub CATMain()

Dim Selection1 As Object
Set Selection1 = CATIA.ActiveDocument.Selection

Dim InPutObjectType(0)
InPutObjectType(0) = "CATPoint"
Status = Selection1.SelectElement2(InPutObjectType, "Select a point", False)

End Sub

 


Desconectado/a

Visto por última vez: Hace 10 horas 30 mins

se unió: 02/10/2008 - 13:19

Posts:

Hola Goroscar

No lo he probado y seguramente falle en algún sitio, pero aqui te dejo el código para lo que buscas.

 

Sub CATMain()

 

Dim partDocument1 As PartDocument

Set partDocument1 = CATIA.ActiveDocument

 

Dim Selection1 As Object

Set Selection1 = CATIA.ActiveDocument.Selection

 

Dim part1 As Part

Set part1 = partDocument1.Part

 

Dim shapeFactory1 As ShapeFactory

Set shapeFactory1 = part1.ShapeFactory

 

Dim bodies1 As Bodies

Set bodies1 = part1.Bodies

 

Dim body1 As Body

Set body1 = bodies1.Item("PartBody")

 

Dim sketches1 As Sketches

Set sketches1 = body1.Sketches

 

Dim sketch1 As Sketch

Set sketch1 = sketches1.Item("Sketch.4")

 

Selection1.Clear

Dim InPutObjectType(0)

InPutObjectType(0) = "CATPoint"

Status = Selection1.SelectElement2(InPutObjectType, "Select a point", False)

 

 

Dim reference1 As Reference

Set reference1 = Selection1.Item(1)

 

Dim shapes1 As Shapes

Set shapes1 = body1.Shapes

 

Dim pad1 As Pad

Set pad1 = shapes1.Item("Pad.1")

 

Selection1.Clear

InPutObjectType(0) = "CATPlane"

Status = Selection1.SelectElement2(InPutObjectType, "Select a plane", False)

 

Dim reference2 As Reference

Set reference2 = Selection1.Item(1)

 

Dim hole1 As Hole

Set hole1 = shapeFactory1.AddNewHoleFromRefPoint(reference1, reference2, 10#)

 

hole1.Type = catSimpleHole

 

hole1.AnchorMode = catExtremPointHoleAnchor

 

hole1.BottomType = catFlatHoleBottom

 

Dim limit1 As Limit

Set limit1 = hole1.BottomLimit

 

limit1.LimitMode = catOffsetLimit

 

Dim length1 As Length

Set length1 = hole1.Diameter

 

length1.Value = 10#

hole1.ThreadingMode = catSmoothHoleThreading

hole1.ThreadSide = catRightThreadSide

part1.Update

End Sub



Desconectado/a

Visto por última vez: Hace 2 años 1 mes

se unió: 05/25/2009 - 16:31

Posts:

Hola Edu. Muchas gracias por tu esfuerzo. me da un error en la linea

 

Set hole1 = shapeFactory1.AddNewHoleFromRefPoint(reference1, reference2, 10#)

 

y como referencia del error pone que esparaba un ")".

 

Alguna idea de como continuar?

 

la petición del punto y del plano lo hace bien.

 

Gracias por tu ayuda



Desconectado/a

Visto por última vez: Hace 2 años 1 mes

se unió: 05/25/2009 - 16:31

Posts:

Hola wiliamgava

Si, esto era lo que buscaba. Hace exactamente lo que necesito.

Me puedes ayudar a personalizarla? me explico:

* si quiero hacer un agujero roscado M6x16 longitud, que paremetros tendría que colocar?

* si quiero hacer un agujero Ø10 profundidad 15, que paremetros tendría que colocar?

* además de esto, se podría renombrar la operacion en el arbol del part con la designacion del agujero? por ejemplo, si hacemos un agujero roscado de M6 profundidad 15, que la operación quedase nombrada como M6x15.

Muchas gracias por tu ayuda. Vamos muy bien encaminados.

 

 

 



Desconectado/a

Visto por última vez: Hace 2 años 1 mes

se unió: 05/25/2009 - 16:31

Posts:

Hola wiliamgav

Muchas gracias por la evolución de la macro. Funciona muy bien. Podrías explicarme por qué a la hora de seleccionar el punto donde hacer el agujero, sólo reconoce los puntos 3D que estén definidos y no los puntos que haya dibujados en un sketch?

Además de esto, cómo tendría que hacer para quitar la repetición de la operación? es decir, lo que quiero es que al ejecutar la macro sólo me haga un agujero en el punto seleccionado (preferiblemente un punto de un sketch)

ya queda poco para poder cerrarlo por completo.