Q100372: स्पष्ट कनेक्शन के लिए पायथन के साथ इनपुट और आउटपुट पोर्ट का नाम कैसे बदलें

सारांश

कई इनपुट (जैसे मर्ज, स्विच या ग्लोबल स्टेट वेरिएबल्स नोड्स) वाले नोड्स सेट करते समय, कनेक्शन के उद्देश्य को स्पष्ट करने के लिए प्रत्येक कनेक्शन पोर्ट का मैन्युअल रूप से नाम बदलना काफी थकाऊ हो सकता है। इस प्रक्रिया को स्वचालित करने के लिए, आप पायथन के साथ एक कस्टम शेल्फ आइटम या सुपरटूल बना सकते हैं जो नाम बदलने का काम संभालता है। यह लेख बताता है कि यह कैसे किया जा सकता है।

अधिक जानकारी

एक उदाहरण स्क्रिप्ट जो प्रत्येक चयनित नोड के इनपुट पोर्ट के माध्यम से लूप करती है और उन्हें एक विशिष्ट मान पर पुनः नामित करती है, नीचे शामिल की गई है और समझाई गई है।

उदाहरण के लिए, मर्ज या वेरिएबलस्विच नोड का उपयोग करके Katana के भीतर इसका परीक्षण किया जा सकता है।

उदाहरण स्क्रिप्ट

# Grab all currently selected nodes
selectedNodes = NodegraphAPI.GetAllSelectedNodes()

# Loop through each selected node for node in selectedNodes:
# Get all the import ports within the node     inputPorts = node.getInputPorts()
# Loop through each port within the node     for inputs in inputPorts:         index = inputs.getIndex()         name = node.getInputPortByIndex(index).getName()
# Name each port 'Shot' plus their indexed location         node.renameInputPort(name,('Shot'+repr(index+1)))

स्क्रिप्ट का उपयोग करना

Katana के भीतर, स्क्रिप्ट का परीक्षण केवल एक मर्ज या वेरिएबलस्विच नोड बनाकर और उसमें कई इनपुट पोर्ट जोड़कर किया जा सकता है (इनपुट पोर्ट जोड़ने के लिए नोड पर बड़े तीर पर क्लिक करें):



नोड चयनित होने पर उपरोक्त स्क्रिप्ट को पायथन टैब में चिपकाने/निष्पादित करने से डिफ़ॉल्ट इनपुट पोर्ट का नाम कुछ इस प्रकार बदल जाएगा:

आप संलग्न 'renameInputPorts.py' फ़ाइल को डाउनलोड करके और इसे उपयोगकर्ता के होम क्षेत्र ' .katana/Shelves/ ' निर्देशिका में, शेल्फ फ़ोल्डर नाम के अंतर्गत रखकर, उपरोक्त स्क्रिप्ट को एक कस्टम शेल्फ आइटम के रूप में भी परीक्षण कर सकते हैं।

उदाहरण के लिए:

विंडोज़: C:\Users\username\.katana\Shelves\RenameShelf\renameInputPorts.py
लिनक्स: /home/username/.katana/Shelves/RenameShelf/renameInputPorts.py

यह सेटअप एक कस्टम शेल्फ़ या सुपरटूल का आधार है। यहाँ से, आप एक पॉपअप विजेट भी जोड़ सकते हैं जो आपको प्रत्येक पोर्ट का नाम बदलने की सुविधा देगा या आप कोड को सुपरटूल नोड के हिस्से के रूप में शामिल कर सकते हैं।

कनेक्शन स्थापित करने, शेल्फ आइटम और सुपरटूल्स बनाने के बारे में अधिक जानकारी के लिए, कृपया नीचे दिए गए लिंक का उपयोग करके Katana उपयोगकर्ता गाइड और Katana डेवलपर गाइड देखें:

पायथन नोड्स को जोड़ना: Katana डेवलपर गाइड - नोड्स के साथ कार्य करना - नोड्स को जोड़ना
शेल्फ स्क्रिप्ट: Katana उपयोगकर्ता गाइड - Katana में स्क्रिप्टिंग और प्रोग्रामिंग - शेल्फ आइटम स्क्रिप्ट
सुपरटूल्स: Katana उपयोगकर्ता गाइड - समूह, मैक्रोज़ और सुपर टूल्स - सुपरटूल्स


स्क्रिप्ट स्पष्टीकरण

selectedNodes = NodegraphAPI.GetAllSelectedNodes()

NodegraphAPI का उपयोग करके, आप सबसे पहले उन लक्षित नोड्स को खोजते हैं जिन पर स्क्रिप्ट तर्क लागू करना है। यह दो तरीकों से किया जा सकता है: या तो नोड्स को उनके नाम से निर्दिष्ट करके या वर्तमान में चयनित नोड्स के लिए क्वेरी करके। उपरोक्त पंक्ति वर्तमान में चयनित नोड ऑब्जेक्ट्स की सूची को selectedNodes के रूप में खोजती और संग्रहीत करती है।

for node in selectedNodes:
inputPorts = node.getInputPorts()

एक बार जब आपके पास नोड ऑब्जेक्ट्स की सूची हो जाती है, तो आप प्रत्येक को for loop के माध्यम से पुनरावृत्त कर सकते हैं और getInputPorts() फ़ंक्शन को कॉल कर सकते हैं जो नोड्स के सभी इनपुट पोर्ट्स प्राप्त करता है।

for inputs in inputPorts:         
index = inputs.getIndex()

अब जब आपके पास प्रत्येक नोड के पोर्ट हैं, तो आप इसे उनके नाम से या उनके अनुक्रमित स्थान के माध्यम से अलग-अलग पोर्ट के माध्यम से लूप करने के लिए सेट कर सकते हैं। उपरोक्त पंक्ति getIndex() फ़ंक्शन का उपयोग करके उनके अनुक्रमित स्थान का पता लगाती है।

name = node.getInputPortByIndex(index).getName()
node.renameInputPort(name,('Shot'+repr(index+1))) 

ऊपर दी गई पंक्तियाँ नोड पोर्ट का वर्तमान नाम प्राप्त करती हैं और उसका नाम बदलकर 'शॉट' कर देती हैं, उसके बाद उस पोर्ट का इंडेक्स देती हैं। अंतिम नाम शॉट1, शॉट2, शॉट3 जैसा दिखता है, जो इस बात पर निर्भर करता है कि नोड में कितने पोर्ट हैं।

संलग्नक

हम चाहते हैं कि खेद व्यक्त करते हैं

कृपया हमें बताएँ कि