怠preなプリプレス

この記事は、私自身の記事の一種の再投稿であり、別の(アクセスの少ない)サイトで公開されています。 ここに記事を投稿するのはなぜですか? このサイトにはたくさんのプリプレッサーがあります。私は彼らの魂の幅を広げたいと思っています。 Bezd-woz-mezd-but! つまり、何もしない(c)

すぐに予約したい-教え方がわかりません。 そうですね、自然から演説までは不可能なので、他の人がアイデアに触発されるだけでなく、上記のいずれかを理解することもできます。

この記事(そして、私もそれ以降の記事も)は、主にフレキソ印刷を印刷するためのレイアウトを準備している人を対象としています。 したがって、スクリプトの主なアイデアは、フレキソ印刷の条件に関連付けられ、「調整」されます。

Adobe Illustratorプログラムは、レイアウトを芸術的に開発するための視覚的な環境であるだけでなく、
その武器庫には比較的優れたスクリプト言語エンジンがあり、ドキュメントとオブジェクトを使ったさまざまなアクションのためにサードパーティのスクリプトを実行できます。 このエンジンは、JavaScript、VisualBasic Sc​​ript、AppleScriptなどのスクリプト言語をサポートします(後者は、名前が示すとおり、Apple Corporationの発案の可能性があります)。
私が比較的よく知っている唯一の言語であるため、JavaScript環境のスクリプトについて詳しく説明します。
JavaScrtiptの詳細に立ち入るつもりはありません。興味深い場合は、Webプログラミングの例を使って調べてください。 ベース
同様に、オブジェクトとオブジェクトのツリーの構造の違いのみ。 そして、この構造から始めます。
ドキュメントの構造は、次のように(簡略化された形式で)表すことができます。

ドキュメント構造のこの表現に基づいて、特定のオブジェクトへのアクセスの論理チェーンを構築することが可能です。 このようなもの: Active DocumentMountingArea_№xxx(複数ある場合)層番号xxx(それらが複数あり、特定の層にオブジェクトが必要な場合)
原則として、すべてが論理的です。 この論理構造のいくつかのポイントは省略できます。 たとえば、アートボードやレイヤーを指定せずに、既存のオブジェクトのすべての配列を処理したい場合。 この場合、アップグレードされた論理チェーンはActiveDocumentのようになります。 オブジェクト[No. xxx]
論理クエリチェーンを構築するオプションは、特定の目標によって異なります。
次に、開いているドキュメントに存在する同じオブジェクトの数と数、およびプログラムでこの知識を取得する方法を見てみましょう。
繰り返しますが、論理チェーンに依存して、変数= ActiveDocumentのようなクエリを書くことができます。 オブジェクト 数量
JSでは、次のようになります。

var docRef = app.activeDocument; var docRefAll = docRef.pageItems.length; //      


すべてがシンプルですか? 結構! 先に進みます。
続行する前に、変更できるオブジェクトのリスト(完全なリストではありません)に注意を向けたいと思います。
  1. テキストオブジェクト
  2. グラフィックプリミティブ;
  3. 複合オブジェクト
  4. 組立エリア;
  5. 層。

残念ながら、Illustratorの作成者は、かなり弱いスクリプト言語エンジンを開発しました。 これは、私たちの行動に多くの(そしてかなりの)制限を課します。 上記の各オブジェクトを使用すると、ごくわずかな変更を加えることができます。 グラフィカル環境では余裕がありません。
スクリプトの機能が非常に制限されている場合、スクリプトを記述することは本当に意味がありますか? もちろんそうです。 数千のオブジェクトを手動で処理することが単調であるだけでなく、かなり愚かな作業でもあるためです。 そして私たちは賢い人であり、怠け者です。 そして、彼らは結果に対して私たちに支払いをしますが、この結果をどの程度正確に達成したか、そしてそれが私たちにどれだけのコストをかけたかに注意を払っていません。
そして、ドキュメントに多数のオブジェクトがあるので、今何ができますか? たとえば、再ペイント!
オブジェクトを再描画する前に(オブジェクトのテキストまたは複雑な、プリミティブまたはストロークは関係ありません)、このオブジェクトの色構造を理解する必要があります。
そして、構造は非常に単純です(実際、著者の論理を理解すれば、すべてが単純です)。
オブジェクト 塗りつぶし .Colorチャンネル
ここで、 Object-実際に現在処理されているオブジェクト
塗りつぶし - 塗りつぶしのタイプ(可能なオプション:同種、勾配、SPOT、SPOT-勾配、メッシュ);
カラーチャンネル -色空間と塗りつぶしの種類によって異なります。 オプションがあります-シアン、マゼンタ、イエロー、ブラック(CMYK); 赤、緑、青(RGB); 色合い(スポット、グレースケール);
したがって、JS環境でオブジェクトを色で塗りつぶすと、次のようになります。
 docRef.pageItems[0].fillColor.cyan = 0100; //(     №0 (   0, ..  №0 —  ,  «»   ) docRef.pageItems[0].fillColor.red = 0…255; //(    RGB) docRef.pageItems[0].fillColor.tint = 0…100; //(  SPOT-       Grayscale) 

オブジェクトのストロークの色の設定を検討する場合、レコードは次の計画になります。
 docRef.pageItems[0].strokeColor.cyan = 0100; 

つまり 塗りつぶしの色(塗りつぶし)とストロークの指定の違いは、塗りつぶしの種類( fillColorまたはstrokeColor)の表示のみです
しかし、オブジェクトの均一な塗りつぶしではなく、グラデーションの塗りつぶしを示すことができますか? もちろんできます。 これを行うには、スクリプトでグラデーション塗りつぶしが何であるかを理解する必要があります。
グラデーション塗りつぶしは、塗りつぶしの開始(1つのエッジ)から塗りつぶしの終わり(塗りつぶしの反対側のエッジ)までの線上の一連のキーポイントであり、独自の色を持ちます。 つまり 黒から白への塗りつぶしは次のようになります。
Point1 [フォーム0,0,0,100の色配列] ... Point2 [フォーム0,0,0,0の色配列]
JS言語で:
 docRef.pageItems[0].fillColor.gradient.gradientStops[0].color.black=100; docRef.pageItems[0].fillColor.gradient.gradientStops[1].color.black=0; 

最初の行はオブジェクトの1つのキーポイントに対して100%の黒を示し、2番目の行は2番目のポイント(この場合は終了)に対して0%の黒を示します。
しかし、ご存じのように、グラデーション塗りつぶしのキーポイントの数は常に少なくとも2ですが、それよりも多く発生します。
この場合、学校のコンピューターサイエンスコース(または、より便利な場合は大学のコース)を思い出して、グラデーション塗りつぶしのすべてのキーポイントを処理するサイクルを記述する必要があります。
このようなブロックを作成します。
 gradNumb = docRef.pageItems[0].fillColor.gradient.gradientStops.length; //(      ) for (k = 0; k < gradNumb; k++) { //(     ) docRef.pageItems[0].fillColor.gradient.gradientStops[k].color.black = 0; //( 0%        ) } 

さらに、ADOBE Corporationの開発者のロジックを理解するのは非常に簡単です。ADOBECorporationは、キーフィルポイントへのアクセスのプロパティを「深く」固定しています。 一度、私はこれらの色を変えるオプションに到達するために多くの努力を費やしました。
これまでに学んだことのすべてを少しまとめてみましょう。
 var docRef = app.activeDocument; var docRefAll = docRef.pageItems.length; for (n = 0; n < docRefAll; n++) { if ((docRef.pageItems[n] == »[PathItem]«) && (docRef.pageItems[n].fillColor == »[GradientColor]«)) { gradNumb = docRef.pageItems[n].fillColor.gradient.gradientStops.length; for (k = 0; k < gradNumb; k++) { docRef.pageItems[n].fillColor.gradient.gradientStops[k].color.black = 0; } } if ((docRef.pageItems[n] == »[PathItem]«) && (docRef.pageItems[n].fillColor == »[CMYKColor]«)) { docRef.pageItems[n].fillColor.black = 100; } } 

このモジュールで出会った2つの新しいコマンド-塗りつぶしのタイプを確認します。
オブジェクトがグラフィック(テキストブロックではない)であり、同時にグラデーションで塗りつぶされている場合、各キーの塗りつぶしポイントを処理します。
オブジェクトがグラフィック(テキストブロックではない)であり、同時にモノフォニックの塗りつぶしがある場合-オブジェクトを黒でペイントします。
現時点では、おそらく停止します。 記事が継続に関するフィードバックを受け取った場合、もちろん継続します。

Source: https://habr.com/ru/post/J185192/


All Articles