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

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

इसलिए, मैं इलस्ट्रेटर UI में ऐसा करने का एक तरीका ढूंढ रहा हूं: राइट क्लिक> ट्रांसफॉर्म> स्केल। क्या इस तरह का कोई यूआई कमांड है जिसे मैं कोड (जावास्क्रिप्ट) से एक्सेस कर सकता हूं?

1
superrache 11 पद 2017, 20:27

2 जवाब

ऐसा करने के कम से कम तीन तरीके हैं:

  1. आवश्यक परिवर्तन करने वाली AI क्रियाओं को रिकॉर्ड करें, और फिर अपनी स्क्रिप्ट से इन क्रियाओं (DoScript) को चलाएं
  2. समूह चयनित वस्तुओं और समूह के लिए आवश्यक परिवर्तन लागू करें जैसा कि @Dane ने प्रस्तावित किया है। वस्तुओं को मूल परतों में पुनर्स्थापित करने की अनुमति देने के लिए आपको Layer ऑब्जेक्ट प्रॉपर्टी का बैकअप लेने की आवश्यकता है, जैसा कि नीचे VBA उदाहरण में दिखाया गया है:

    For i = Index_Lo To Index_Hi
        Call Layers_Backup.Add(Item:=SelectedItems(i).Layer, Key:=Format(i))
        Call SelectedItems(i).Move(Temp_Group, AiElementPlacement.aiPlaceAtEnd)
    Next i
    
    Call Temp_Group.Resize(scaleX:=120, scaleY:=120, changeLineWidths:=120)
    
    For i = Index_Lo To Index_Hi
        Call SelectedItems(i).Move(Layers_Backup(Format(i)), AiElementPlacement.aiPlaceAtEnd)
    Next i
    
  3. आवश्यक AI परिवर्तन संवाद बॉक्स दिखाने, भरने और निष्पादित करने के लिए Windows API फ़ंक्शन (जैसे PostMessage (..., WM_COMMAND, ..., ...), SendDlgItemMessage, FindWindowEx आदि) को कॉल करें

आईएमएचओ, आइटम # 1 को लागू करना सबसे आसान है जबकि आइटम # 2 सबसे विश्वसनीय है

1
Argut 17 जिंदा 2018, 10:55

तो मैं नहीं जानता कि क्या आप किसी न किसी रूप में लूपिंग नहीं कर सकते हैं। उस ने कहा, यदि आप अपने चयन को किसी समूह में डालने से गुरेज नहीं करते हैं, तो यह आपके चयन के माध्यम से एक समूह में जोड़ने के लिए तेज़ हो सकता है जो लूपिंग से तेज़ हो सकता है और चयन और स्केल के माध्यम से और प्रत्येक तत्व को स्थानांतरित कर सकता है। समूह ऑब्जेक्ट के साथ आप groupObject.scale() और .translate() कर सकते हैं। यहाँ एक स्निपेट है जो मैंने अपनी एक स्क्रिप्ट से लिया है।

#target "illustrator"
var aiApp = app.activeDocument;
var aSelection = aiApp.selection;
var aGroup = app.activeDocument.groupItems.add();

for (i=0; i < aSelection.length; i++){
aSelection[i].move( aGroup, ElementPlacement.INSIDE); 
aSelection[i].move( aGroup, ElementPlacement.PLACEATEND);  
 }
//moves up 700 points and scales by 200
aGroup.translate(0,700)
aGroup.resize(200, 200, true , true, true, true, 200)
0
Dane 14 पद 2017, 12:06
मेरे चयन को समूहीकृत करने का बहुत अच्छा विचार है। सब कुछ समूहीकृत होने पर परिवर्तन आसान होते हैं। हालाँकि, मुझे चीजों को परतों में रखने की आवश्यकता है क्योंकि परत के नाम महत्वपूर्ण हैं।
 – 
superrache
14 पद 2017, 18:08