Problema con selección de aristas y caras (macro)

Un buen lugar donde debatir temas relacionados con este Soft.


Tema anteriorTema siguiente
Avatar de Usuario

Autor del Tema
NarGalloth
Usuari@
Usuari@
Mensajes: 15
Registrado: Lun May 25, 2015 4:06 pm
Temas: 0
Programa CAD o CAM: SOLID WORKS
Ubicación: Vigo, España
Género:
Zodíaco:
Edad: 31
Estado: Desconectado

Problema con selección de aristas y caras (macro)

Mensaje por NarGalloth »

Buenas tardes.

Dado que este es mi primer post, me gustaría dedicar un saludo a todo el foro, a modo de presentación. Aún estoy bastante verde en los temas del CAD, así que espero poder aprender un par de cosas por aquí.

Bueno, mi problema es el siguiente: estoy desarrollando para mi proyecto de la universidad una aplicación de Solidworks que, entre otras cosas, permite generar de forma automática elementos mecánicos diversos (todo ello a través de parámetros). Actualmente estoy trabado a la hora de programar un engranaje recto, y me gustaría recibir vuestro consejo.
En general he podido generar toda la geometría del diente del engranaje, hasta el punto que se puede ver en la imagen de debajo:

Imagen

Básicamente, he croquizado el espacio entre dientes y lo he cortado en el cuerpo del engranaje. Hasta ahí, ningún problema. El problema viene a la hora de crear el redondeado en el fondo del hueco. Lo que quiero hacer es aplicar un redondeado a las dos aristas situadas en el fondo del hueco entre dientes.
Una primera aproximación que se me ocurrió fue la de aplicar manualmente los redondeados grabándolos en una macro, pero me di cuenta de que ese código seleccionaba las aristas por coordenadas. Esto no me sirve, porque como ya he indicado, el engranaje se genera mediante parámetros. Es decir, tiene que aceptar todos los tamaños posibles, no puede estar fijo a unas coordenadas específicas.
Por otra parte, he intentado escribir yo mismo el comando de selección, mediante el método Part.Extension.SelectByID2 (y de esta forma incluir yo mismo los parámetros en las coordenadas). Hasta ahora, esto me sirvió para seleccionar prácticamente todo lo que he necesitado seleccionar. Sin embargo, las aristas no tienen nombre, y la verdad es que no tengo ni idea de qué se supone que tengo que introducir en los parámetros X, Y y Z del SelectByID2 si quiero seleccionar una arista (las aristas, que yo sepa, no se definen con un solo X Y Z).
Y aunque supiera qué tengo que introducir en esos parámetros, no sé cómo hallar la arista geométricamente (es decir, no sé cómo hallar las coordenadas de sus puntos, no he encontrado información demasiado clara acerca de la geometría de la base del engranaje).

De igual forma, tampoco sé cómo seleccionar la superficie externa del engranaje, y la voy a necesitar para aplicar una matriz radial y copiar el hueco entre dientes a lo largo de todo el resto del engranaje.

Espero que el problema haya quedado claro. ¿Qué me podríais recomendar para afrontar esta situación? O, en caso de que mi enfoque sea erróneo, ¿porqué es erróneo, y qué me propondríais intentar?
Si necesitáis más información acerca de mi caso, no dudéis en pedirla, y trataré de proporcionarla en la medida de lo posible. Gracias por vuestra atención y vuestro tiempo.

Un cordial saludo.

Última edición por Ricardo el Lun Nov 14, 2016 10:57 pm, editado 1 vez en total.
Avatar de Usuario

Mondeo14
Webmaster
Webmaster
Mensajes: 10970
Registrado: Mar Nov 03, 2009 8:48 pm
Temas: 648
Programa CAD o CAM: SOLID WORKS
Ubicación: NAVARRA
Agradecido : 3511 veces
Agradecimiento recibido: 2492 veces
Género:
Zodíaco:
Edad: 63
Estado: Conectado

Re: Problema con selección de aristas y caras (macro)

Mensaje por Mondeo14 »

Hola NarGalloth, bienvenido a RinCAD, esperamos verte con frecuencia por aquí.

No tengo ni idea de programas (algo básico he hecho alguna vez) y menos en Solid Works, pero tu problema tal vez se pueda solucionar de "otra" manera. No se como has creado el hueco del diente, me imagino que has hecho un croquis.
Yo si supiese programar (igual digo la mayor tontería del mundo), me crearía engranaje haciendo coincidir su eje con uno de los ejes de origen, que creo que lo habrás hecho así. Para el hueco del diente crearía un croquis en una de las caras del cilindro que he creado previamente y cuyas caras se donde están, porque conozco las dimensiones de mi cilindro y su ubicación. Dibujaría el hueco del diente, pero referenciando las cotas con el centro del engranaje y por lo tanto seguro que puedo calcular donde esta el vértice del fondo del diente, con lo que podría programar que me hiciese un radio en el propio croquis.
Si has hecho el cilindro en uno de los ejes de origen, hacer una matriz para obtener todos los huecos es muy sencillo, es indicarle un eje que comienza en el 0,0,0 y luego darle un punto para la dirección, por ejemplo 0,0,1 si usas el eje Z para orientar tu engranaje. Si quieres le das 10 o 100, es igual porque solamente has de indicarle la dirección.

A ver, esto puede ser mas sencillo decirlo que hacerlo, por lo que te ruego me disculpes si acabo de decir una tontería, pero es lo primero que se me ha ocurrido. Y recuerda, de programación poco, mas bien nada es lo que yo se.

Un saludo

Nos leemos, Mondi


Procesador: CPU Intel i7 4820kDisco Duro: SSD 500 GB y 2 TBMemoria RAM: 24 GB-DDR3 667 MHzTarjeta Gráfica: NVIDIA Quadro K2000 2 GB GDDR5


Avatar de Usuario

Autor del Tema
NarGalloth
Usuari@
Usuari@
Mensajes: 15
Registrado: Lun May 25, 2015 4:06 pm
Temas: 0
Programa CAD o CAM: SOLID WORKS
Ubicación: Vigo, España
Género:
Zodíaco:
Edad: 31
Estado: Desconectado

Re: Problema con selección de aristas y caras (macro)

Mensaje por NarGalloth »

.

En primer lugar, querría disculparme por haber posteado incorrectamente la imagen. Debo admitir que no había visto las reglas de posteo, error mío. Trataré de que no vuelva a ocurrir.

Ahora, respecto a mi problema, gracias por tu respuesta, Mondeo14. El engranaje ya lo había generado con el origen de coordenadas en su centro, y efectivamente el espacio entre dientes lo dibujé mediante un croquis, todo referenciado al origen. Debo reconocer que generar el redondeado en el propio croquis, siendo algo tan simple y evidente, no se me había ocurrido. Dado que los puntos y las aristas del croquis sí que las puedo seleccionar por nombre, me ha resultado fácil hacer el redondeado.
Mi problema era que me estaba empeñando en redondear el sólido, no el dibujo. Y eso supone bastantes más problemas. De modo que gracias nuevamente, tu solución es perfectamente válida. Igualmente, he usado un eje de referencia para la matriz radial, algo que tampoco ha presentado demasiados problemas.

Sin embargo, a pesar de que este problema en concreto está resuelto, sigo teniendo la inquietud de no saber cómo proceder para seleccionar aristas o caras de un sólido, no de un croquis (desde una macro, obviamente), ya que a los elementos de un sólido no se les puede llamar por nombre (no tienen nombre a menos que se les asigne uno manualmente, y eso requiere seleccionarlos primero, con lo que no llegamos a ninguna parte), y eso me desconcierta.
Agradecería enormemente que algún experto, o simplemente alguno de vosotros acostumbrado a trabajar con macros, me orientase en este aspecto. He buscado por Internet en diversas fuentes, y he encontrado algunos ejemplos que básicamente seleccionan todos los elementos del sólido y luego filtran el que están buscando. ¿No hay una forma más sencilla de hacerlo? Y de no haberla, ¿cómo se supone que funciona este "filtrado"? Perdón por mi ignorancia, pero realmente me gustaría saber cómo afrontar estos problemas.

Gracias por vuestra atención y vuestro tiempo. Un cordial saludo,
NarGalloth

Última edición por Ricardo el Lun Nov 14, 2016 10:58 pm, editado 2 veces en total.
Avatar de Usuario

Autor del Tema
NarGalloth
Usuari@
Usuari@
Mensajes: 15
Registrado: Lun May 25, 2015 4:06 pm
Temas: 0
Programa CAD o CAM: SOLID WORKS
Ubicación: Vigo, España
Género:
Zodíaco:
Edad: 31
Estado: Desconectado

Re: Problema con selección de aristas y caras (macro)

Mensaje por NarGalloth »

Querría comentar que, a base de experimentar yo mismo, he encontrado la solución al problema. Por si alguna otra persona tiene la misma duda que yo, aquí está la respuesta:

Cualquier cosa se puede seleccionar con el comando SelectByID2. A la hora de seleccionar elementos de un sólido (mi problema), se procede de la siguiente manera:

Part.Extension.SelectByID2("", Type, X, Y, Z, False, 0, Nothing, 0)

- Vértices: En "Type" ponemos "VERTEX". El XYZ son las coordenadas absolutas del vértice en cuestión.
- Aristas: En "Type" ponemos "EDGE". El XYZ son las coordenadas de un punto cualquiera contenido en la arista. Si las coordenadas no se corresponden con una arista, la función nos devolverá NULL.
- Caras: En "Type" ponemos "FACE". El XYZ son las coordenadas de un punto cualquiera contenido en la cara. Como antes, si no coinciden con una cara, devolverá NULL.

Puede que a muchas personas esto les resulte absolutamente evidente y sencillo, pero aún así prefiero indicarlo. Le puede facilitar la vida a quien no lo vea tan evidente.

Gracias por vuestra atención. Un cordial saludo,
NarGalloth

Tema anteriorTema siguiente