XSIforum.com

Juntas de simetría perfectas

0 Usuarios y 1 Visitante están viendo este tema.

Juntas de simetría perfectas
« en: 05 Enero 2006, 23:40:59 »
Hola a todos. He creado el siguiente script que sirve para lo siguiente.

Supongamos que estamos modelando la mitad de un coche (ahorraros las críticas, el que he puesto de ejemplo no está terminado ;)) y al duplicarlo resulta que en la juntura aparecen las dichosas crestas o valles que arruinan el modelo. Por ejemplo:



Se puede observar que en la parte central hay una cresta muy fea debido a que los vertices que componen las aristas del "parallel edge loop" central no están alineados.

Pues bien, seleccionamos la mitad original. Seleccionamos el "parallel edge loop" central:



y aplicamos el script, alineando en YZ (ya que el modelo se extiende a lo largo del eje Z):



Y este es el resultado:





Como veis no crestas, no valles... un resultado perfecto y en cuestión de segundos!!!!

Bueno y este es el script para que lo podáis utilizar:

' ==============================================================
' Script para el alineado de aristas. Por Moebius4u. 5 de Enero de 2006
' ===============================================================
' Muy útil en las aristas centrales de un modelo poligonal simétrico, previo a la realización de la simetría.
' Evita crestas o valles en el centro del modelo.
' ================================================================

SonAristas = true

For Each oSel in Application.Selection

   LogMessage oSel & " is a " & oSel.Type
   
   if oSel.Type <> "edgeSubComponent" then
   
      SonAristas = false
      
   end if
   
Next

if SonAristas = false then

   logMessage "Atención: Este script sólo funciona con aristas"
   
else

   set xsiDial = createObject("xsidial.xsidialog")
   
   alignDirection = xsidial.combo("¿En que dirección (global) quiere alinear los vertices de cada arista?", array("xy", "xz", "yz"))
   
   set oSelection = Application.Selection 

   for i = 0 to (oSelection.Count - 1)  ' Para cada objeto seleccionado
   
      ' Obtenemos el nombre del objeto padre
   
        parentObject = oSelection(i).Subcomponent.Parent3DObject.Name
        
        LogMessage parentObject
   
      ' Obtenemos las aristas seleccionadas
      
      set subComponent = oSelection(i).SubComponent   
      
      LogMessage subComponent
      
      IndicesAristas = subComponent.ElementArray
      

      for j=0 to Ubound(IndicesAristas)
      
         set oSegment = oSelection(i).subcomponent.Parent3DObject.activePrimitive.geometry.segments(indicesAristas(j))
         
         LogMessage "Procesando arista: " & oSegment.Index

             LogMessage "Procesando vertice: " & oSegment.Points(0).Index
          
          set p = oSelection(i).subcomponent.Parent3DObject.activePrimitive.geometry.points(oSegment.Points(0).Index)
         set parentObjSpace = oSelection(i).subComponent.Parent3DObject.Kinematics.Local.Transform
          set oGlobalPos = XSIMath.MapObjectPositionToWorldSpace(parentObjSpace , p.position)
          xPos = oGlobalPos.x
          yPos = oGlobalPos.y
          zPos = oGlobalPos.z
          
                LogMessage "Procesando vertice: " & oSegment.Points(1).Index
                
                if alignDirection =0 then
            translate parentObject & ".pnt[" &oSegment.Points(1).Index& "]" , xPos , yPos  , zPos, siAbsolute,, siObj, siXY
         elseif alignDirection =1 then
            translate parentObject & ".pnt[" &oSegment.Points(1).Index& "]" , xPos , yPos  , zPos, siAbsolute,, siObj, siXZ
         elseif alignDirection =2 then
            translate parentObject & ".pnt[" &oSegment.Points(1).Index& "]" , xPos , yPos  , zPos, siAbsolute,, siObj, siYZ
         end if
   
      next      

   next   

end if


Como siempre, espero comentarios y mejoras.

Saludos  ;)
« Última modificación: 18 Agosto 2007, 15:18:38 por Wounded Knee »

Re: Juntas de simetría perfectas
« Respuesta #1 en: 05 Enero 2006, 23:53:37 »
Se os ven todas las fotos? Son 5 en total. A mi no se que me pasa pero no se me ven todas.

Ya me diréis...

Re: Juntas de simetría perfectas
« Respuesta #2 en: 06 Enero 2006, 00:17:17 »
Yo veo 3. Por cierto, un script muy bueno y útil. Seguro que lo usaremos mucho

Tomás

  • O_O
  • *****
  • 4621
  • Mi no entender
Re: Juntas de simetría perfectas
« Respuesta #3 en: 06 Enero 2006, 00:36:25 »
ahora

Re: Juntas de simetría perfectas
« Respuesta #4 en: 06 Enero 2006, 00:44:19 »
Sí. Ahora se me ven todas las fotos. Debía de haber algún problema con el servidor de Imageshack.

eduardito

  • *****
  • 3064
  • hola holita
Re: Juntas de simetría perfectas
« Respuesta #5 en: 06 Enero 2006, 09:31:18 »
coño, si señor muy bueno, lo voy a probar.  O0

Rashek

  • ***
  • 3056
  • www.goldpiece.net
Re: Juntas de simetría perfectas
« Respuesta #6 en: 06 Enero 2006, 13:16:57 »
muy bueno, tnks ;)

dracon

  • ***
  • 1582
  • XSI: the very best.
Re: Juntas de simetría perfectas
« Respuesta #7 en: 07 Enero 2006, 09:02:21 »
Mu guapo y util, a mi me viene de perlas. Muxas gracias   O0

martindisenio

  • **
  • 672
  • Fabricante de lo Desconocido
Re: Juntas de simetría perfectas
« Respuesta #8 en: 21 Enero 2006, 18:34:59 »
parece util, gracias