주소복사 | 조회 수 225 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
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를 반환합니다.

 

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

 


질문과 답변

question and answer

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 일반 Cinema 4D Education 학생용 라이센스 사용방법 2 그래바 2020.09.03 18286
공지 Octane 옥테인 크래시 관련 자주 올라오는 질문들과 해결하는 법을 정리해보았습니다. 16 updatefile 이효원 2020.04.19 48906
공지 [필독] 단톡방 질문 방식 관련 공지사항 4 file 권오훈 2019.06.27 12884
공지 일반 [필독] 질문 게시판 유의사항 ! 권오훈 2019.06.27 4817
목록
Board Pagination Prev 1 ... 6 7 8 9 Next
/ 9
닫기

마이페이지

로그인을 해주세요