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

Q100291: एक OpScript में CEL स्टेटमेंट एकत्रित करना

सारांश

यह आलेख बताता है कि किसी ओपस्क्रिप्ट नोड की लुआ लिपि के अंदर एक सीईएल स्टेटमेंट ( कलेक्ट ऑपरेशन) के मूल्यांकन के कैश्ड परिणामों का उपयोग कैसे किया जाए

यह ओपस्क्रिप्ट नोड पर एक स्क्रिप्ट बटन के पायथन स्क्रिप्ट को निष्पादित करने और एक उपयोगकर्ता पैरामीटर में परिणामी दृश्य ग्राफ़ स्थान पथों को कैशिंग करके प्राप्त किया जाता है, ताकि वे ओपस्क्रिप्ट नोड की लुआ स्क्रिप्ट में ही उपयोग के लिए उपलब्ध हों।

यह उपयोगकर्ताओं को उनके लिए सुविधाजनक होने पर कलेक्ट ऑपरेशन करने की अनुमति देता है, और जब भी ओपस्क्रिप्ट नोड को पकाया जाता है, तो संभवतः पूरे दृश्य ग्राफ के खिलाफ सीईएल कथन से मिलान करने के बजाय, कैश्ड परिणामों पर ओपस्क्रिप्ट लुआ स्क्रिप्ट काम होता है।

इस तरह की स्क्रिप्ट को कैसे और क्यों स्थापित किया जाए, इसकी जानकारी के लिए कृपया पढ़ें।

अधिक जानकारी

उपयोगकर्ता किसी ओपस्क्रिप्ट नोड पर Lua स्क्रिप्ट के भीतर एक संग्रह ऑपरेशन के परिणामों का उपयोग करना चाहते हैं, उदाहरण के लिए एक दृश्य ग्राफ विशेषता के तहत परिणामी स्थान पथों को संग्रहीत करने के लिए या उन्हें Lua स्क्रिप्ट में संचालित करने के लिए उपलब्ध होने के लिए।

असीमित अप्रोच

किसी ओपस्क्रिप्ट के भीतर सीईएल के बयानों के मूल्यांकन के परिणामों को इकट्ठा करना अवांछनीय है, क्योंकि इसमें दृश्य के एक हिस्से की आवश्यकता होती है, यदि यह सब नहीं किया जाता है, तो प्रत्येक बार अपस्ट्रीम नुस्खा को संशोधित करने के लिए, यह निर्धारित करने के लिए कि क्या दिए गए स्थानों से मेल खाते हैं ।

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

अनुप्रयुक्त अप्रोच

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

किसी भी प्रासंगिक स्थानों को बदलने के लिए परियोजना को अद्यतित रखने के लिए इसे दोहराया जाना चाहिए।

CEL कथन से मेल खाने वाले मौजूदा स्थानों का एक सेट पुनः प्राप्त करने के लिए, CEL संग्रह कार्रवाई का उपयोग करें। स्क्रिप्ट बटन के माध्यम से निष्पादित स्क्रिप्ट में, आप CollectAndSelectInScenegraph () फ़ंक्शन का उपयोग कर सकते हैं जो विजेट मॉड्यूल का हिस्सा है :

collector = Widgets.CollectAndSelectInScenegraph(celStatement, traversalRootLocationPath) 
matchedLocationPaths = collector.collectAndSelect(select=False, node=myNode)

Where:
- celStatement  is the expression to be evaluated.
- traversalRootLocationPath is the scene graph location path at which the evaluation should start. This can be /root or any other specified scene graph location, for example /root/world/geo if only child locations in this branch should be matched against the CEL statement.

उदाहरण स्क्रीन

संलग्न उदाहरण दृश्य में आप इस रणनीति का कार्यान्वयन देख सकते हैं। यह दृश्य 'ऑपस्क्रिप्ट में जेनरेटिंग ज्योमेट्री' से एल-सिस्टम का उपयोग कर रहा है । आप पैरामीटर टैब के शीर्ष पर रिंच आइकन पर क्लिक करके कलेक्टएंडसेट ओपस्क्रिप्ट नोड में स्क्रिप्ट का निरीक्षण कर सकते हैं > 'यूजर पैरामीटर्स को एडिट करें', इसके बाद कलेक्टग्रोमेट्रिक बटन के ऊपर रिंच आइकन पर क्लिक करके> 'विजेट विकल्प ...'।

Capture.PNG

3.PNG

4.PNG

कलेक्टएंडसेट ओपस्क्रिप्ट नोड पर उपयोगकर्ता पैरामीटर इन चरणों का पालन किया गया था:

  1. पैरामीटर टैब में इसके पैरामीटर खोलने के लिए एक ओपस्क्रिप्ट नोड बनाएं और दबाएं।
  2. पैरामीटर्स टैब> 'उपयोगकर्ता पैरामीटर संपादित करें' के शीर्ष पर रिंच आइकन पर क्लिक करें। यह उपयोगकर्ता नाम के नोड में एक नया समूह पैरामीटर जोड़ता है

    6.png

  3. उपयोगकर्ता समूह पैरामीटर में पैरामीटर जोड़ने के लिए 'जोड़ें' पर क्लिक करें और पैरामीटर प्रकार के रूप में 'स्ट्रिंग ऐरे' चुनें। यह पैरामीटर होगा जहां हम मिलान किए गए स्थान पथ संग्रहीत करेंगे।

    6.png

  4. नए पैरामीटर के ऊपर सीधे रैंच आइकन पर क्लिक करें और 'रिनेम पैरामीटर' पर क्लिक करें। यह एक संवाद खोलेगा जहाँ आप एक नया नाम दर्ज कर सकते हैं। 'MatchedLocationPaths' के लिए पैरामीटर का नाम बदलें

    7.png


  5. फिर से 'जोड़ें' पर क्लिक करें और इस बार पैरामीटर प्रकार के रूप में 'बटन' चुनें।
  6. सीधे नए बने बटन के ऊपर रिंच आइकन पर क्लिक करें, और 'विजेट विकल्प ...' चुनें। यह एक संवाद खोलेगा जहाँ आप बटन पाठ को कुछ वर्णनात्मक में बदल सकते हैं, उदाहरण के लिए 'कलेक्टोमेट्रीक्लोशन्स'। संवाद एक स्क्रिप्ट फ़ील्ड भी प्रदान करता है जहां आप बटन क्लिक करने पर पायथन कमांड जोड़ सकते हैं जिसे निष्पादित किया जाना चाहिए।
  7. स्क्रिप्ट क्षेत्र में निम्नलिखित पायथन कमांड्स को कॉपी और पेस्ट करें:

    collector = Widgets.CollectAndSelectInScenegraph('//*{hasattr("geometry")}', '/root/world/geo')
    # This command will match all scene graph locations underneath /root/world/geo that have a ‘geometry’ attribute
    paths = collector.collectAndSelect(select=False, node=node)
    # The 'node' variable is this parameter's node
    नोड के मिलान किए गए लोकपथ उपयोगकर्ता पैरामीटर में मिलान स्थान पथों को संग्रहीत करने के लिए, स्क्रिप्ट में निम्नलिखित कमांड जोड़ें:

    paramName = 'user.matchedLocationPaths'
    param = node.getParameter(paramName)
    element = param.buildXmlIO(True)
    element.removeAllChildren()
    for path in paths:
       child = element.addChild(PyXmlIO.Element("string_parameter"))
       child.setAttr("name", "i%i" % (len(element) - 1))
       child.setAttr("value", path)
    element.setAttr("size", len(element))
    param.parseXmlIO(element)

बटन पर क्लिक करके स्क्रिप्ट को चलाने से एक मोडल डायलॉग खुलेगा, जबकि सीन ट्रैस किया जा रहा है और लोकेशन पकाए जा रहे हैं, जिससे आपको ऑपरेशन रद्द करने का विकल्प मिलेगा।

CollectAndSelect () फ़ंक्शन स्थान रास्तों तो इतना है कि यह उदाहरण के लिए एक Op Arg उपयोगकर्ता, के रूप में लुआ स्क्रिप्ट में उपयोग के लिए सुलभ है एक OpScript नोड पर एक उपयोगकर्ता पैरामीटर के रूप में स्थापित किया जा सकता है कि की एक सूची वापस आ जाएगी।

5.PNG

आगे की पढाई

CEL सिंटैक्स पर अधिक जानकारी के लिए, कृपया कटाना डेवलपर गाइड का CEL संदर्भ अनुभाग देखें

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

यदि आप इसके साथ किसी भी मुद्दे का सामना कर रहे हैं, तो कृपया एक समर्थन टिकट खोलें और हमें समस्या के बारे में बताएं और अब तक आपने कौन-कौन से समस्या निवारण कदम उठाए हैं।

समर्थन टिकट खोलने के तरीके के बारे में अधिक जानकारी के लिए, कृपया ' समर्थन पोर्टल का उपयोग करना ' लेख देखें।

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

We're sorry to hear that!

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

टिप्पणियां