그 외

파이썬 - IsCommandEnabled에 대한 질문입니다.

by 꺼니 posted Dec 01, 2011 Replies 0
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
Extra Form

현재 수백개의 커브들을 정리해야하는 문제가 생겨서 정리하는 도중에 발생하게 된 질문입니다.

 

 

우선 사건발생상황을 말씀드리겠습니다.

 

일러스트레이터의 커브를 임포트해오고 난 후, 이 녀석을 Extrude를 사용하고 나면 선이 제대로 정리가 안된 것들(2,3개의 선이 하나로 뭉쳐있다거나, 널 스플라인이 혼재해 있는 등의)은 서피스가 꼬이는 현상이 발생하였습니다.

 

이녀석들을 싸그리 소탕하고자.. 몇가지 원인을 분석해보던 중, 스플라인 커브들 중 explode segments명령이 활성화 되는 것들에 한해서, explode를 하고 난 후 널 스플라인 데이터를 지워주고나면, 깨끗하게  면이 나오는 것을 발견했습니다.

 

다만 여기서부터 이녀석들을 몽땅 하나씩 수작업으로 제거를 하려고 보니, 이런 게 앞으로 더 있는데 , 모두 수작업으로 하려면 한참 시간이 걸릴 것 같아서.. 스크립트를 짜기 시작했습니다.

 

 

뭐 로직은 별게 없습니다. 전체 커브를 그룹핑 한후, 선택한 그룹노드의 하위 패스오브젝트들을 모두 리스트로 불러들인 후 -> 이녀석들 중 explode segments가 활성화가 되는가 안되는가를 판별한 후, 판별되는 녀석들을 몽땅 explode시켜준 후,  이놈들의 하위자식들 중 1번을 삭제해주면 되는 것입니다.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

여기서부터 질문입니다 ㅠㅠ

 

explode segments의 CallCommand는 13316입니다. 이놈의 활성화를 체크하기 위해 IsCommandEnabled라는걸 사용하는데요

콘솔창에서 각각 패스들을 클릭하면서 c4d.IsCommandEnabled(13316)을 체크하면, True와 False값을 정확하게 반환해줍니다.

하지만

 

    objName = doc.GetActiveObject()
    childs = objName.GetChildren()
    for cur in childs:
        doc.SetActiveObject(cur,0)
        print c4d.IsCommandEnabled(13316)

 

이런 식으로 각 하위 오브젝트마다 활성화되는 걸 판단하기 위해 넣었는데.. 분명 처음에 실행할 때는 올바르게 true와 false를 반환하지만,  한번 반환한 이후론 계속 모두 False를 반환합니다.

 

어떻게 하면 제대로 된 값을 얻을 수 있을까요?

 


Articles

1 2 3 4 5 6 7 8 9