XSIforum.com

como tengo la salida del ctr_dist en un texto ?

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

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #10 en: 05 Junio 2010, 22:24:46 »
Esto es mas facil
Código: [Seleccionar]
CreatePrim "Text", "NurbsCurve"
Create2DSkeleton -5, 0, 0, 5, 0, 0, 0, 0, 0, 4
SetValue "bone.bone.primary_icon", 7
SetValue "root.Name", "StartRuler"
SetValue "StartRuler.bone.Name", "Ruler"
SetValue "StartRuler.eff.Name", "EndtRuler"
AddExpr "Ruler.bone.length"
SetExpr "Ruler.bone.length", "ctr_dist (StartRuler., EndtRuler.)"
oDistancia = GetValue ("Ruler.bone.length")
SetValue "text.text.text", oDistancia

alanf

  • *****
  • 6029
  • Pipeline Developer @ Felix & Paul Studios
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #11 en: 05 Junio 2010, 22:27:55 »
Explota justo aki "... ctr_dist(OBJ1.name, OBJ2.name) ..." con un .. No coinciden los tipos 'ctr_dist' y si le meto
(variable.name., variable.name.) no hace nah d nah
arrrchhhhhhh
es puñeteria mía ya xD
Es que no existe la funcion ctr_dist(). Estas confundiendo scripting con expresiones. Las expresiones son un lenguaje distinto.


Veo que ya has solucionado la cuestion, pero mientras escribias hize una version object-model con Python de lo mismo xD
Código: [Seleccionar]

xsi = Application
lm = xsi.LogMessage
from math import sqrt
from math import pow

objA = xsi.Selection(0)
posA = objA.Kinematics.Global.Transform.GetTranslationValues2()

objB = xsi.Selection(1)
posB = objB.Kinematics.Global.Transform.GetTranslationValues2()

Ax, Ay, Az = float(posA[0]), float(posA[1]), float(posA[2])
Bx, By, Bz = float(posB[0]), float(posB[1]), float(posB[2])

distBetween = sqrt(
pow( (Ax-Bx), 2 )
+ pow( (Ay-By), 2 )
+ pow( (Az-Bz), 2 )
)

lm( "Distancia entre centros: "+ str(distBetween) )

Lo pongo por no desperdiciar codigo.

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #12 en: 05 Junio 2010, 22:36:02 »
Eres un crak xD

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #13 en: 05 Junio 2010, 22:36:53 »
no se por q sigo con el BVs :S
costumbre mala del curro xD
A ver como lo hago dinamico ahora xD

alanf

  • *****
  • 6029
  • Pipeline Developer @ Felix & Paul Studios
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #14 en: 05 Junio 2010, 22:51:25 »
Me olvide que puedo asignar multiples variables a la vez directamente. Version mas corta:

Código: [Seleccionar]
xsi = Application
lm = xsi.LogMessage
from math import sqrt
from math import pow

objA = xsi.Selection(0)
Ax, Ay, Az = objA.Kinematics.Global.Transform.GetTranslationValues2()

objB = xsi.Selection(1)
Bx, By, Bz = objB.Kinematics.Global.Transform.GetTranslationValues2()

distBetween = sqrt(
pow( (Ax-Bx), 2 )
+ pow( (Ay-By), 2 )
+ pow( (Az-Bz), 2 )
)

lm( "ctr_dist: "+ str(distBetween) )

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #15 en: 06 Junio 2010, 00:00:24 »
Weno al final m he echo un par d botones :P

Para crear la regla
Código: [Seleccionar]
' Crear Regla

SICreateCurve "crvlist", 1, 1
SIAddPointOnCurveAtEnd "crvlist", -5, 0, 0, False, 0
SIAddPointOnCurveAtEnd "crvlist", 5, 0, 0, False, 0

CreateClusterCenterWithNull "crvlist.pnt[0]", 0
CreateClusterCenterWithNull "crvlist.pnt[LAST]", 0

SetValue "crvlist.Name", "Ruler"
SetValue "Ruler.crvlist_Point_ClsCtr.Name", "Start_Ruler"
SetValue "Ruler.crvlist_Point1_ClsCtr.Name", "End_Ruler"

SetValue "Start_Ruler.null.shadow_icon,End_Ruler.null.shadow_icon", Array(0, 0)
SetValue "Start_Ruler.null.primary_icon,End_Ruler.null.primary_icon", Array(4, 4)

MakeLocal "Ruler.display", siNodePropagation
SetValue "Ruler.display.wirecolorr", 0.878
SetValue "Ruler.display.wirecolorg", 0.878
SetValue "Ruler.display.wirecolorb", 0
MakeLocal "Start_Ruler.display", siNodePropagation
SetValue "Start_Ruler.display.wirecolorr", 0.125
SetValue "Start_Ruler.display.wirecolorg", 0.878
SetValue "Start_Ruler.display.wirecolorb", 0.125
MakeLocal "End_Ruler.display", siNodePropagation
SetValue "End_Ruler.display.wirecolorr", 0.125
SetValue "End_Ruler.display.wirecolorg", 0.878
SetValue "End_Ruler.display.wirecolorb", 0.125

CreatePrim "Text", "NurbsCurve"
SetValue "text.Name", "Distance_txt"
SetValue "Distance_txt.text.text", "Regla"

MakeLocal "Distance_txt.display", siNodePropagation
SetValue "Distance_txt.display.wirecolorr", 0.878
SetValue "Distance_txt.display.wirecolorg", 0.251
SetValue "Distance_txt.display.wirecolorb", 0

ApplyCns "Direction", "Start_Ruler", "End_Ruler"
ApplyCns "Direction", "End_Ruler", "Start_Ruler"
ApplyCns "Pose", "Distance_txt", "Start_Ruler"

Para medir
Código: [Seleccionar]
oPOSX = GetValue("Start_Ruler.kine.global.posx") - GetValue("End_Ruler.kine.global.posx")
oPOSY = GetValue("Start_Ruler.kine.global.posy") - GetValue("End_Ruler.kine.global.posy")
oPOSZ = GetValue("Start_Ruler.kine.global.posz") - GetValue("End_Ruler.kine.global.posz")
oDistancia = sqr(oPOSX*oPOSX + oPOSY*oPOSY + oPOSZ*oPOSZ)
SetValue "Distance_txt.text.text", oDistancia

No es lo chulo que quería pero funciona xD molaría que se actualizara solo sin tener q darle al botón q le vamos hacer hasta aquí llego xD
me ralla mucho lo de los mil decimales !
« Última modificación: 06 Junio 2010, 00:12:16 por morphi »

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #16 en: 06 Junio 2010, 00:06:57 »
Lo encontre en la ayuda xD round(<expr>)  Es mejoooooor!!!!!
xD

alanf

  • *****
  • 6029
  • Pipeline Developer @ Felix & Paul Studios
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #17 en: 06 Junio 2010, 02:23:58 »

Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #18 en: 13 Junio 2010, 06:19:23 »
Pero me parece que morphi quiere pasarlo a un objeto de texto en 3D, quizas para tener texto 3D animado. Con ICE no lo veo posible. Ademas, los ICE string nodes introducidos en la 2011 desafortunadamente no sirven para escribir a parametros de texto.
Me refería más bien a usar el log de ICE como representación gráfica de la distancia entre 2 nulls (en numeric), es mucho más limpio que crear curvas de texto con el scop para actualizar su valor. Para utilizar ese valor en expresiones y tal es fácil crear un custom property con la expresión de la distancia entre los 2 nulls :)

Los strings de la 2011 son una buena incorporación pero para la regla no son necesarios, con loguear la longitud de un vector ya lo tienes O0

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: como tengo la salida del ctr_dist en un texto ?
« Respuesta #19 en: 23 Junio 2010, 15:25:37 »
Osea q o m miro el ice en serio o m paso a ser un fósil mas
pufffffff
No m bastaba con el houdini, tengo q aprender ice y C4D, m va ha estallar la cabeza leñe!