2016-07-12 1 views
0

일부 노드에 대한 열거 형 목록 인 사용자 지정 특성을 추가하고 있습니다. addAttr을 사용하면이 작업을 쉽게 수행 할 수 있습니다. 하지만 나중에 새 enum 값을 추가하거나 enum 목록을 변경하는 방법은 없습니다. 그게 가능하니?Maya에서 사용자 지정 특성의 열거 형 목록을 변경할 수 있습니까?

나는 이것을하는 방법을 발견했지만 더 쉬운 방법이 있어야합니다. 나의 임시 해결책을 위해, 속성이 존재하는 경우에 나는 그것의 가치를 움켜 잡고 속성을 삭제한다. 그런 다음 수정 된 속성을 노드에 다시 추가하고 해당 값을 이전 값으로 설정합니다. $ enumValues를 변경함으로써 enum 목록을 편집 할 수 있습니다. 이 스크립트는 내 해결 방법을 보여 (I 만 값을 삭제하지 값을 추가 할 계획입니다) :

string $attrName = "MaterialType"; 
string $enumValues = "Water:Sky:Terrain:Building:Road:"; 
string $selected[] = `ls -sl`; 
if(`size $selected` == 1) 
{ 
    string $attrFullName = $selected[0]+"."+$attrName; 
    $existingValue = 0; 
    if(attributeExists($attrName, $selected[0])) 
    { 
     $existingValue = `getAttr $attrFullName`; 
     deleteAttr $attrFullName; 
    } 
    addAttr -ln $attrName -at "enum" -en $enumValues $selected; 
    setAttr $attrFullName $existingValue; 
} 
else 
{ 
    print "You must have 1 object and only 1 object selected\n"; 
}; 

나는이 스크립트를 실행하는 경우는 열거의 값을 변경하지하지만 이러한 변화가 마야의 인터페이스에 표시되지 않으며, 언급 할 가치가 파일을 닫고 파일을 다시 열 때까지.

더 효과적으로 수행하는 방법에 대한 제안 사항을 보내 주시면 감사하겠습니다.

답변

0

불행히도 속성을 삭제하고 다시 추가하는 것은이 작업을 수행하는 유일한 방법입니다. 마야 열거 형은 꽤 절름발이입니다.

스크립트가 완료된 후에 속성이 올바르게 작동해야합니다. 속성 편집기를 제대로 새로 고치려면 속성을 선택 취소했다가 다시 선택해야 할 수 있습니다. 스크립트가 실행 된 후 객체의 listAttr -ud으로 확인할 수 있습니다. UI가 새로 고쳐지지 않아도 결과에 속성 이름이 표시되어야합니다.

관련 문제