एक टिकट बनाएं
अनुसरण करें

Q100372: पायथन के साथ इनपुट और आउटपुट पोर्ट का नाम बदलना

सारांश


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

अधिक जानकारी

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

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

उदाहरण SCRIPT

# 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)))

SCRIPT का उपयोग करना

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


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

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

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

Windows: C:\Users\usename\.katana\Shelves\RenameShelf\renameInputPorts.py
लिनक्स: /mnt/nethome/users/usename/.katana/Shelves/RenameShelf/renameInputPorts.py


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


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


पायथन कनेक्टिंग नोड्स: Katana डेवलपर गाइड - नोड्स के साथ काम करना - कनेक्टिंग नोड्स
शेल्फ स्क्रिप्ट: Katana ऑनलाइन मदद - तकनीकी जानकारी - शेल्फ आइटम स्क्रिप्ट
सुपरटूल: Katana ऑनलाइन सहायता - तकनीकी जानकारी - सुपरटूल

SCRIPT शोषण

selectedNodes = NodegraphAPI.GetAllSelectedNodes()

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

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

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

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

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

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

उपरोक्त पंक्तियाँ नोड पोर्ट के वर्तमान नाम को पुनः प्राप्त करती हैं और इसे उस पोर्ट के सूचकांक के बाद शॉट के नाम से बदल देती हैं। अंतिम नाम Shot1, Shot2, Shot3 की तरह लग रहा है कि कितने पोर्ट में नोड है।

क्या यह लेख उपयोगी था?
/

We're sorry to hear that!

Please tell us why.
2 में से 2 के लिए उपयोगी रहा

टिप्पणियां