2014-02-14 4 views
1

삭제 된 마지막 객체의 이름을 검색 할 수 있는지 궁금합니다.Maya Python/Mel : 삭제 된 마지막 객체의 이름

listHistory를 살펴 보았지만 선택 또는 명명 된 개체의 기록을 나열하는 것으로 보입니다. 또한 언두 히스토리를 스크립트 편집기에 인쇄하는 undoHistory printqueue를 살펴 보았지만 콘솔에서 해당 정보를 검색 할 수는 없습니다.

아이디어가 있으십니까? 둘러 보았는데 이것에 대한 정보를 찾을 수 없습니다. 미리 감사드립니다.

+0

나는 사실 이후에 가능하다고 생각하지 않습니다. 삭제를 감시하는'scriptJob'을 들여다 보았습니까? – mhlester

+0

임시 해결책으로 scriptJob을 사용하여 마지막 선택을 저장합니다.이 정보를 검색하는 방법이 있어야하는 것처럼 느껴집니다. – ABCheshire

답변

0

사실을 알 수 없으면 개별 삭제를 취소 할 수 없습니다. 그러나 모니터 할 개체에 attributeDeleted scriptJob을 붙이면 삭제 될 때 실행됩니다. 모든 객체를 실제로 잡으려는 경우, DagObjectCreated 이벤트를 수신하는 scriptJob을 사용하면 다른 scriptJob을 각각의 새 객체에 연결할 수 있습니다. 그러나 대부분의 경우에는 좋지 않습니다. 장면에 많은 scriptJob을 생성 할 것이므로

undoInfo -q -pq; 

:

import maya.cmds as cmds 
from functools import partial 

def objectDeleted(obj): 
    print "%s was deleted" % obj 

def catch_deletion(obj): 
    cmds.scriptJob (attributeDeleted = ((obj + ".tx"), partial(objectDeleted, obj))) 

catch_deletion('pCube1') 
+0

은 너무 엄격하지 않으므로 undoInfo를 사용하여 사실 이후 삭제를 catch 할 수 있습니다. – joojaa

+0

나는 이것이 일반적인 경우에는 가능하지 않다고 생각한다; 실행 취소 대기열은 doIt() 및 undoIt()을 노출하는 MPxCommands를 저장하며, 실행 취소 또는 다시 실행 가능 상태로 유지하기 위해 내부 정렬을 사용하지 않습니다. OP는 상관없이 장면을 감사 할 책임이 있습니다. – theodox

+0

아니요, 힌트를 얻었으므로 실행 취소 대기열을 풀어 추가 조사를 할 수 있습니다. 그러나 이것이 op가 물었던 것입니다. 어쨌든 나는 그것이 반드시 가능하지 않다는 것을 나타 내기 위해 5 월을 사용했습니다. – joojaa

2

당신과 함께 목록을 얻을 수 있습니다 (플러스 당신은 ...로드에 장면을 통해에 또한 루프를 가질뿐만 아니라 기존 개체에 동일한 삭제 콜백을 첨부 할 것) Maya를 스캘핑하는 데는 정말 좋은 사용 사례가 몇 가지 있습니다. 사실 후 선택 순서를 결정하는 등. 어쨌든 실제로 큐의 형태를 알기가 어려울 수 있으므로 삭제 된 오브젝트가 무엇인지 얻기 위해 실행 취소 및 다시 실행이 필요할 수 있습니다.

이렇게 작동하거나 작동하지 않을 수 있으며, 마일리지가 다를 수 있습니다.

자료를 복원 한 후 부수적으로 메모하면 저장시 개체 목록을 저장하지 않는 것이 좋습니다. 순서는 동일하므로 (보장됨) 결국 변경 사항을 누락 된 객체로 볼 수 있습니다. 생성되는 순서대로있는 객체를 보라. 예를 들어, 가져 오기에서 가져 오기로의 기초적인 diff에 사용할 수 있습니다. 동일한 작업이 삭제됩니다.