|
Latest Comments
- Mar 08, 2010 back quote는 정확히 말하자면, 어떤 MEL명령의 실행 결과를 얻고자 할 때 사용되는 겁니다. 쉽게 생각하자면, 그 결과값이 담긴 임시변수(한번 밖에 사용할 수 없는)라고 생각하시면 될까요? 그러니까, string $test[]=`ls -sl`; 처럼 ls -sl 명령의 결과를 string $test[] 변수에 저장할 수 있게되지요. a)의 경우는 $word라는 변수에 담긴 문자열의 크기를 알아내는 size 명령의 수행결과를 뜻하게 되니까, 그값에 0만 아니라면 if문에 의해서 참이라고 판단이되는 거구요 b)의 경우는 mySphere라는 이름의 sphere의 반지름을 알아내서 그 값이 5인지 비교하는 것이지요. for ($sel in `ls -sl`) delete $sel; 그래서, 이런 식으로 사용할 수도 있습니다. expression에 imperative syntax를 사용하면 구문에러가 난다고 할 때의 expression은 마야에서 말하는 expression이 아니라 if 문 뒤에 나오는 구문 같은 것들을 가리키는 좀 더 넓은 의미의 expression(수식이라고 부르는게 나을까요?)입니다. 여기에서는 size($word)같은 식의 명령을 바로 쓸 수 없다는 이야기지요. 명령자체는 수식이 될 수 없으니까요. 하지만 ``로 감싸서 그 결과값을 사용한다면 그것은 곧 수식이라고 볼 수 있겠죠.
- Mar 08, 2010 none일 경우에 확인을 이렇게도 되네요. ㅎㅎㅎ 감사합니다. ~~
- Mar 06, 2010 아... else 문에도 return 을 써줘야 제대로 나오는군요 else 문이 실행되면 다시 함수가 다시 실행되서 if문에 있는 return 에서 출력할꺼라 생각했는데 그리고 None 이 나오기 전에 해당 Joint가 먼저 return 되야 하기 때문에 미쳐 생각을 못했는데 담부턴 세세한 부분까지 신경써줘야 겠네요.. 답변 감사하고 오늘도 좋은 공부 하고 갑니다. ^^
- Mar 06, 2010 return해도 그값을 저장받고 있지 않으니까요. 이렇게 해보시구요. jnt1 = cmds.listConnections-('ikHandle1') jnt2 = cmds.listRelatives(j-nt1) def test(jnt,obj): t_jnt = cmds.listRelatives(j-nt) if obj in t_jnt: #print t_jnt return t_jnt else: return test(t_jnt[0],obj) result = test(jnt1[0],jnt1[1]) print result 그리고 지금 로직에서는 t_jnt가 None일 경우를 대처하지 못하고 있는걸요? jnt가 더이상 child node가 없으면 cmds.listRelatives(j-nt)가 None을 return하니까요. 그것도 고려하시려면 이렇게... from maya import cmds jnt1 = cmds.listConnections-('ikHandle1') jnt2 = cmds.listRelatives(j-nt1) def test(jnt,obj): print jnt, obj t_jnt = cmds.listRelatives(j-nt) if t_jnt is None: return None elif obj in t_jnt: return t_jnt else: return test(t_jnt[0],obj) result = test(jnt1[0],jnt1[1]) print result
- Mar 05, 2010 NoneType은 말그대로 아무것도 아니라는 거지요. Boo_UIFunctionInst.B-oo_UploadList 메소드가 결과값을 return하는지 확인해보세요. 만약 어떤 메소드가 아무값도 return하지 않게 되어 있으면 항상 None을 return합니다. 혹시 오류로 인해 None이 return된것인지를 검사하려면 if self.CHFileList is None: 과 같이 하시면 되구요.
