CorelDRAWでマクロを利用するためのドキュメント「Creating Custom Outline Enhanced Pattern Styles」の和訳です。
Creating Custom Outline Enhanced Pattern Styles
入門
Getting Started
輪郭線拡張パターンは、"拡張線スタイル"やELSとして参照されます。拡張線スタイルは、linestyles.dotと呼ばれるファイルに格納されています。そのファイル名拡張子にもかかわらず、このファイルは、あなたが、コンピュータの管理者特権を持っている限り、あなたが、Microsoft NotepadやXMLエディタで、編集することができるXMLファイルです。
新しいELSを作成する過程で、あなたは、Corel DESIGNERで、輪郭線拡張パターン・リストを頻繁に再ロードします。あなたが、初めて輪郭線のペン・ダイアログ・ボックスを開くとき、このファイルは、自動的に、読み込まれます。あなたは、実行中に、Corel DESIGNERのファイルを編集できますが、あなたが、変更を表示するには、アプリケーションを再起動する必要があります。別の方法では、あなたは、アプリケーションを再起動する必要なしで、ショートカットを使用して、DOTファイルを再読み込みできます。:
- 輪郭線のペン・ダイアログ・ボックスを開きます。
- Shiftキーを押したままにします。
- Pattern Style領域では、Standard、あるいは、Enhancedのうち、以前に選択されていなかったスタイルをクリックします。
ファイルで、1つ目のパターンを変更することによって、あなたは、簡単なテストを行うことができます。1つ目のパターンは、次のようになります。:
<stdPattern>
<dotLength>1</dotLength>
<dotLength>1</dotLength>
</stdPattern>
このパターンは、Standardパターンのリスト・ボックスで、1つ目のパターンと一致します。:
このパターンを、次のように変更します。:
<stdPattern>
<dotLength>9</dotLength>
<dotLength>1</dotLength>
</stdPattern>
ファイルを保存し、Shiftキーを押しながら、Standardをクリックします。次に、あなたのStandardパターンのリスト・ボックスの1つ目のパターンは、以下のように見える必要があります。:
あなたが、あなたの新しいパターンが含まれているCorel DESIGNER(.cdt)ファイルを作成するとき、パターン定義は、ファイル内に格納されているため、ファイルは、他のどのコンピューターでも正常に開きます。あなたは、カスタム・パターンで、新しいCorel DESIGNERファイルを作成する時だけ、DOTファイルを必要とします。
拡張線スタイルの概要
Enhanced Line Styles Overview
ELS定義の要点をまとめた次の図を見てください。図面は、あなたが、読もうとしているものを理解するために役立つ視覚的な前後関係を与えます。図面に表示されるELS定義の具体的な例については、この文書の最後で説明しています。
中央の薄い灰色の線に注目してください。この線は、あなたが、Corel DESIGNERで、ELSを適用する曲線に対応している制御曲線です。薄い灰色の長方形の周囲の制御曲線は、ELSを定義する必要がある領域を示します。この領域の外で、ELSを定義することができますが、これを行うと、Corel DESIGNERで、画面更新の問題が発生します。制御曲線によって定義される領域の高さは、Corel DESIGNERで指定されたパターン幅と一致します。
パターン構文の概要
Pattern Syntax Overview
2種類のパターンがあります。:"stdPattern"は、Standardを表します。そして、"enhPattern"は、Enhancedを表します。ここに、両方の型のためのいくつかの例があります:
<stdPattern>
<dotLength>5</dotLength>
<dotLength>1</dotLength>
<dotLength>1</dotLength>
<dotLength>1</dotLength>
</stdPattern>
<!-- NES_HOLLOWDOT -->
<enhPattern>
<wideline threadWidth="762" nbDivisions="1">
<line start="0" height="1" divide="1" cap="255" join="255">
<styleData hollow="true" bar="false">
<styleLength>4</styleLength>
<styleLength>4</styleLength>
</styleData>
</line>
</wideline>
</enhPattern>
<!-- NES_DIAMONDS -->
<enhPattern>
<wideline threadWidth="762" nbDivisions="5">
<line start="0" height="5" divide="1" cap="255" join="255">
<cyclicalData width="1" lineDivision="3">
<stylePoint>0</stylePoint>
<stylePoint>100</stylePoint>
</cyclicalData>
</line>
<line start="0" height="5" divide="1" cap="255" join="255">
<cyclicalData width="1" lineDivision="3">
<stylePoint>100</stylePoint>
<stylePoint>0</stylePoint>
</cyclicalData>
</line>
</wideline>
</enhPattern>
Standardパターンの構文
Standard Pattern Syntax
この記事は、Standardパターンについてはありませんが、標準の線種の編集は、非常に簡単です。線種を変更するために、ユーザー・インターフェイスを表示するEdit Styleボタンをクリックします。:
強化されたパターン構文
Enhanced Pattern Syntax
拡張線スタイルには、次の構文があります:
[<!-- optional comment -->]
<enhPattern>
<wideline threadWidth="n" nbDivisions="n">
<line start="n" height="n" divide="n" cap="0|1|2" join="0|1|2">
[
<styleData hollow="true|false" bar="true|false">
<styleLength>n</styleLength>+
</styleData>
]
|
[
<cyclicalData width="n" lineDivision="n">
<stylePoint>n</stylePoint>+
</cyclicalData>
]
</line>+
</wideline>
</enhPattern>
構文規則:
シンボル | 意味 |
---|---|
[] | オプション |
+ | 前の要素の1回以上 |
| | 論理和 |
n | 数 |
拡張パターン参照
Enhanced Pattern Reference
ELS定義のいろいろなプロパティは、画面上に曲線をプロットするために、使用される線の定義と制御曲線を解釈するコードの一部のいろいろな線のレンダラーが必要です。いろいろな線のレンダラーを使用すると、動作に矛盾が起こる可能性があります。そして、ELS定義を理解しにくくします。
4つのいろいろな線のレンダラーがあります:
- "cyclicalData"が明示されたとき、cyclicalData線レンダラーが、使用されます。
- "styleData"が、くぼみとバーを持つ設定を"false"に設定するとき、styleData線レンダラーが、使用されます。
- cyclealDataとstyleDataが存在しないとき、あるいは、styleDataが、中空バーを持つ設定を"true"に指定するとき、ELSポリライン線レンダラーが、使用されます。
- Standardポリラインの線のレンダラーは、Standardパターンのために使用されます。(Standardパターンの詳細については、この記事には含まれていません)
残念ながら、パラメータは、異なる線のレンダラーで、異なる動作をします。たとえば、nbDivisionsパラメータの解釈は、cyclicalData線レンダラーとstyleData線レンダラーの間で異なります。
wideline
あなたは、ELSパターン定義ごとに、1つのwideline要素を持っている必要があります。将来的には、他のタイプの拡張パターンを持つかもしれませんが、今のところ、私たちは、widelineだけを持っています。widelineは、一連の線から構成されています。
line
あなたは、wideline内に、必要なだけline要素を含めることができます。
threadWidth
threadWidth値は、ペン幅を1/10ミクロンで指定します。この値を、これまでに使用した循環線の輪郭幅に対応した762に持ち続けます。threadWidth値は、あなたが、Corel DESIGNERのtheOutlineのペン・ダイアログ・ボックスで設定した輪郭線の幅に支配されているため、現在、無視されます。
cyclicalData
cyclicalDataプロパティは、サイクルから構成されている線パターンを定義するために使用されます。地震計によって描かれる、隙間のない線を想像してみてください。ここに、いくつかの例があります。:
あなたは、循環データ情報を含む1つ以上の線を含めることができます。
nbDivisions
ここに、ELSパターン幅が、あなたが、線にcyclicalData情報を指定するとき、どのように分割されるかについての例があります。あなたが、UIで10mmのパターン幅を設定する場合、そして、あなたは、nbDivisionsを10に設定します。続いて、あなたのELSパターン幅は、以下のように分割されます:
start
この場合、開始値は、あなたの線が始まるところを示します。それは、0から始まるインデックスです。私の例では、この値の範囲は、0から10ですが、小数にすることはできません。
height
高さの値は、分割数で表した線の高さです。開始値とともに、それは、あなたの線パターンの高さ、幅、面積を定義します。繰り返しますが、この値を小数にすることはできません。たとえば、あなたが、開始値が1で高さが3の値を持っている場合、続いて、あなたの線の周期的なデータは、この領域の中でレンダリングされ、際限なく繰り返されます。
stylePoint
cyclicalDataは、stylePoint値のリストから構成されています。あなたは、これらの値を、望むだけ持つことができます。stylePoint値は、実際のパターンを表現し、そして、パーセンテージを表す整数のシーケンスです。それらの範囲は、0から100で、小数にすることはできません。0の値は、stylePointが、線パターン領域の上部にあることを示します。そして、100の値は、stylePointが、線パターン領域の上部にあることを示します。最後のstylePointは、常に暗黙的で、それは、firststylePoint値と一致します。つまり、cyclicalDataを使用するとき、ギャップを設けることはできません。stylePoint値の"horizontal"の位置は、線パターン幅に合わせて、すべてスケーリングされているため、あなたが持っているstylePointvaluesの数の上に依存します。たとえば、あなたが、stylePoint値10、30と75を持っている場合、あなたのパターンは、このように見えます。:
width
あなたは、幅を変更して、cyclicalData値を水平方向にスケーリングできます。widthプロパティは、1からnの範囲で乗数であり、小数であってはなりません。線パターンの幅は、常に、線パターンの高さの倍数です。たとえば、あなたが、上記の例で、幅を2に設定する場合、あなたのパターンは、以下のように見えるでしょう。:
divide
あなたは、分割値を指定して、パターンの高さを分割することもできます。分割値は、1からnの範囲にすることができ、小数にはできません。この値は、与えられたパーセンテージで、中心線の周辺で、比例して、パターンを縮小するために使用できる、スケーリング因子です。この値を指定することが、唯一の方法です。あなたは、正確に分割線に一致する、パターン高さを持つことを避けることができます。たとえば、分割値を2に設定すると、パターンは、その最初の寸法の1/2や50%になります。
lineDivision
lineDivision値は、無視されます。設定を1のままにします。
cap
キャップ値は、無視されます。設定を255のままにします。周期的な線は、ラインキャップをサポートしていません。ユーザー・インターフェイスの値は、周期的な線には使用されません。
join
接点値は、無視されます。設定を255のままにします。周期的な線は、線結合をサポートしていません。Cornerと呼ばれるUI値は、周期的な線には使用されません。
figurePoint
figurePointプロパティは、使用されません。そのため、あなたは、これらの値を破棄できます。
hollowとbarを"false"に設定したstyleData
styleData with hollow and bar set to "false"
この場合、styleDataのプロパティは、破線で構成される線パターンを定義するために使用されます。ここに、いくつかの例があります。:
あなたは、必要なだけstyleDataの行を含めることができますが、あなたは、少なくとも2本の線を持っている必要があります。
hollowとbar
hollowとbarの両方は、"false"に設定する必要があります。
nbDivisions
あなたが、線にstyleDataの情報を指定するとき、nbDivisions値は、ELS Pattern Widthが分割される方法を指定します。たとえば、あなたが、ユーザー・インターフェイスで、10mmのパターン幅を設定する、そして、あなたは、nbDivisionsを10に設定する場合、続いて、あなたのELSパターン幅は、以下のように分割されます:
start
この場合、開始値は、あなたの線が始まるところを示します。それは、0から始まるインデックスです。結果的に、私の例では、その値の範囲は0から9です。そして、それを小数にすることはできません。たとえば、あなたの開始値が、1の場合、続いて、あなたの線スタイルデータは、この線上にレンダリングされ、無期限に繰り返されます。
height
この場合、高さの値は実用的ではありません。
styleLength
styleData情報は、styleLength値のリストから構成されています。styleLength値は、実際のパターンを表現し、そして、それぞれ、4の倍数である必要がある整数のシーケンスです。-それは、0、4、8、12、16、20などです。あなたが、それぞれの値を4で割るとき、あなたが、破線の長さを取得するELSパターンの高さに適用するために、あなたは、乗数を取得します。破線は、交互です:最初のものは、不透明、2つ目は、透明、3つ目は、不透明などです。あなたが、透明な破線から始めたい場合、1つ目のstyleLength値を0に設定します。あなたは、必要なだけ多くのstyleLength値を持つことができますが、あなたが、奇数のstyleLength値を持っている場合、パターン自体が交互になることに注意してください。たとえば、パターン4-12-8について考えます。不透明な破線が太いとき、私たちは、あなたが期待するような4-12-8-4-12-8-4-12-8ではなく、4-12-8-4-12-8-4-12-8-4-12-8で終わります 。私たちは、少なくとも2本の線を持っている必要があります。そのため、私たちは、2つのいろいろな開始値で、パターン4-12-8を作成しました。:1と8。これにより、次のようになります。:
ELSパターンの高さが10 mmの場合、続いて、1つ目の破線の長さは、4/4 × 10 mm = 10 mmです。透明な2つ目の破線は、長さ12/4 × 10 mm = 30 mmです。そして、3つ目は、20mmです。結果的に、あなたのELSパターンの高さの値が小さいことは、あなたのパターンはより短くなります。
divide
分割値には、効果がありません。
cap
cap値は、効果がありません。それは、ユーザー・インターフェイスで提供される値に置き換えられます。
join
join値は、効果を持っていません。それは、Cornersと呼ばれるユーザー・インターフェイスで提供される値に置き換えられます。
hollowやbarが、"true"に設定されたstyleData
styleData with hollow or bar set to “true”
この場合、styleDataプロパティは、中空の破線で構成される線パターンを定義するために使用されます。ここに、いくつかの例があります。:
hollowが、"true"に設定されるとき、あなたは、styleData情報に1つ以上の線を含めることができます。hollowが、 "false"に設定されているときとは異なり、その場合、あなたは、少なくとも2本の線が必要です(前述を参照)。
hollowとbar
hollowとbarプロパティは、同じ動作を制御します。hollowプロパティを "true"に設定するとき、すべてが変更されます。そのため、私は、styleDataの2つのセクションを作成し、それぞれのケースについて個別に説明します。あなたは、これらのプロパティのいずれかを使用できますが、hollowプロパティをオフにするために、両方のプロパティを"false"に設定する必要があります。hollowプロパティをオンにするために、これらのプロパティを1つだけを"true"に設定する必要があります。
nbDivision
空洞化で、あなたが、線にstyleDataの情報を指定するとき、nbDivisions値は、ELS Pattern Widthが分割される方法を指定します。たとえば、あなたが、(UIで)10 mmのパターン幅を設定し、nbDivisionsを10に設定する場合、あなたのELSパターン幅は、以下のように分割されます:
start
この場合、開始値は、あなたの線が始まるところを示します。それは、0から始まるインデックスです。結果的に、私の例では、その値の範囲は0から10です。そして、それを小数にすることはできません。
height
height値は、分割数で表した線(hollowの破線)の高さです。再び、この値を小数にすることはできません。たとえば、あなたが、開始値が1で高さが3の値を持っている場合、次に、くり抜かれたstyleData線が、この領域内にレンダリングされます。そして、無期限に繰り返されます:
styleLength
styleLength値は、実際のパターンを表現します。そして、4の倍数である必要がある整数のシーケンスです。styleLengthの動作は、指定されたcapの種類によって異なります。(次のセクションを参照)。
cap
他のケースと違って、DOTファイルで指定された上限値は、UIの値を上書きします。この理由から、あなたは、ラインキャップが異なる複数のくぼんだ線を使用できます。
キャップが、0(丸)に設定されている場合、丸いキャップを除いて、破線の長さは、(styleLength - 4)/4 × 1/2 ELSパターンの高さです。たとえば、私たちが、ELSパターンの高さの10 mmのstyleLength 8-8を使用すると、私たちは、長さ(8-4)/ 4×5 mm = 5 mmのへこんだ破線を持っています。キャップを含む破線を区切る空間のために、数式は、空間= styleLength/4×2×ELSパターンの高さです。私たちの例では、styleLengthの空間は、8です。この理由から、実際の長さは、8/4×2×10mm = 40mmです。あなたは、これが意味をなさないことを認めますか?私たちの例を見てみましょう:
キャップが、1(キャップ無し)に設定される場合、続いて、それは、より単純です。この場合、styleLengthは、hollowを「false」に設定した場合と同じように機能します。結果的に、私たちの例では、破線と空間は、同じ長さです。そして、8/4 = 2を与えられます。長さは、2×10mm = 20mmです。この例を見てみましょう:
キャップが、2(四角形のキャップ)に設定される場合、続いて、それは、キャップなしの場合に似ています。この場合、空間には、四角形のキャップが含まれていません。残念ながら、制限は、私の以前の例で、四角形のキャップの使用に影響を及ぼします。そして、それは、説明できない結果を作り出します。ここに新しい例があります。ここでは、styleLength値が、4-4に設定されています。開始値は、0に設定されます。そして、高さは、10に設定されます。この理由から、私たちは、以下を取得します。:
キャップが、0、1、または2以外に設定されている場合、続いて、ユーザー・インターフェイスから取得した値により、前述の3つの動作のどれが適用されるかが決まります。
join
join値は無視され、効果はありません。ユーザーインターフェイスから変更しても、結果は変わりません。
divide
divide値には、効果がありません。
例1
Example 1
右上角の画像の1つ目のカスタムの例を考えてみましょう。1つは、"Left Example"というを名前を付けました。この例は、3本の線から構成されているELSパターンです。ジグザグは、cyclicalData線です。そして、破線は、くぼみのないstyleData線です。線は、まあ、線です。
このELSを表すXMLコードは次のとおりです。:
<!-- NES_LEFTEXAMPLE -->
<enhPattern>
<wideline threadWidth="762" nbDivisions="10">
<line start="1" height="3" divide="1" cap="255" join="255">
<cyclicalData width="2" lineDivision="3">
<stylePoint>80</stylePoint>
<stylePoint>20</stylePoint>
</cyclicalData>
</line>
<line start="7" height="1" divide="1" cap="255" join="255">
<styleData hollow="false" bar="false">
<styleLength>4</styleLength>
<styleLength>8</styleLength>
</styleData>
</line>
<line start="6" height="1" divide="1" cap="255" join="255">
</line>
</wideline>
</enhPattern>
このwidelineを定義する、3本の線があることに注意してください。
最初の線は、ジグザクのパターンを表現するために、上部の分割1と4の間で往復する周期的なデータを使用します。"Cyclical Line"セクションを見て、値がどのように解釈されるかを確認してください。
2つ目の線は、分割7の上部と揃えられる破線パターンを表現するために、スタイル・データを使用します。
3つ目の線は、単純な線です。そして、ちょうど分割6の上部と揃えられます。
例2
Example 2
たとえ、この記事で、あなたが、それを行うことができないことが述べていたとしても、あなたは、"Geschlossener"の例が、垂直セグメントを持っていることに気がついたかもしれません。あなたが、十分にズームするとき、あなたは、これらのセグメントは、垂直ではないことがわかります。この垂直の外観は、134のスタイル・ポイントを指定することによって生成されます。すべてのスタイル・ポイントが、互いに等しい距離で描画される場合、そして、それらは、すべてCyclicalData幅内に描画されます。45度の傾斜を表すために、1つの点が、循環線が、すぐ下に落ちるようにするために、133点が指定されています(2点で、十分だったとき)。場合によっては、このメソッドは、作業することができますが、レンダリング時間が遅くなります。
ここに、より複雑でない例があります。:
<!-- NES_STRAITEXAMPLE -->
<enhPattern >
<wideline threadWidth="762" nbDivisions="10">
<line start="0" height="10" divide="1" cap="255" join="255">
<cyclicalData width="1" lineDivision="1">
<stylePoint>0</stylePoint>
... 98 mores ...
<stylePoint>0</stylePoint>
<stylePoint>100</stylePoint>
... 98 mores ...
<stylePoint>100</stylePoint>
</cyclicalData>
</line>
</wideline>
</enhPattern>
結果は、次のように表すことができます。:
例3
Example 3
ここに、鉄道のように見える複雑な例があります。
これが、どのように行われるかのヒントです:
制限事項
Limitations
残念ながら、すべてが、現在のELS仕様で、表現できるわけではありません。
- 線は、進むことしかできません。後退する線を表現する方法はありません。
- 周期的な線種は、連続している必要があります。隙間を表現する方法は、ありません。
- 垂直線を表す方法はありません。