終了

illustrator javascriptとC#のPageItem

参加者 ,
Sep 05, 2017 Sep 05, 2017

リンクをクリップボードにコピー

コピー完了

illustrator CC2017を使用しております。

javascriptでは「pageItem」という、グループ、パス、複合パス等どれでも受けれるインターフェースがあると思うのですが

C#のAPIではpageItemが無いようなのですが、代わりになるインターフェースはあるんでしょうか?

pageItems(リストの方)のはjavascript側もC#側も存在するので存在自体はあるのではないかと思いますが…

C#のAPI側では提供されていないんでしょうか?

C#でpageItemsをforeachでループする場合に、pageItemが無いのでobject扱いになってしまい

pageItemが持っているプロパティにアクセスできず困っています。

宜しくお願い致します。

表示

1.9K

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

支持者 , Sep 05, 2017 Sep 05, 2017

dynamicで受け取って、PageItemTypeでswitchするならこんな感じ?

var app = new Illustrator.Application();
var doc = app.ActiveDocument;
foreach (Illustrator.Layer layer in doc.Layers)
{
    foreach (dynamic pageItem in layer.PageItems)
    {
         switch ((Illustrator.AiPageItemType)pageItem.PageItemType)
         {
              case Illustrator.AiPageItemType.aiPathItem:
                  var pathItem = pageItem as Illustrator.PathItem;
           
                  break;
        }
    }
}

投票

翻訳

翻訳
Community Expert ,
Sep 05, 2017 Sep 05, 2017

リンクをクリップボードにコピー

コピー完了

確かにCOMコンポーネントを使用した時に、PageItemsコレクションオブジェクトはあっても

PageItemオブジェクトはないですね。ただ、それぞれのTypeNameは取得できますので、

それに応じた処理を行うのではないでしょうか(当然それぞれのオブジェクトに共通で

使えるものもあると思います)。

以下の図はExcel VBAの画面ですが、C#でも同じものがあるはずです。

ScreenShot00030.jpg

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
支持者 ,
Sep 05, 2017 Sep 05, 2017

リンクをクリップボードにコピー

コピー完了

dynamicで受け取って、PageItemTypeでswitchするならこんな感じ?

var app = new Illustrator.Application();
var doc = app.ActiveDocument;
foreach (Illustrator.Layer layer in doc.Layers)
{
    foreach (dynamic pageItem in layer.PageItems)
    {
         switch ((Illustrator.AiPageItemType)pageItem.PageItemType)
         {
              case Illustrator.AiPageItemType.aiPathItem:
                  var pathItem = pageItem as Illustrator.PathItem;
           
                  break;
        }
    }
}

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
参加者 ,
Sep 05, 2017 Sep 05, 2017

リンクをクリップボードにコピー

コピー完了

最新

noellaboさん

回答ありがとうございます。

dynamicで実行時の内容を見ると中身的にはpageItemの様な感じで取得できるんですね。

position等のどのタイプでもあるプロパティを参照するのに、わざわざタイプをみないとダメなのかと思っていたのですが

この方法なら思ってたように上手く参照できそうです。

ありがとうございます。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
参加者 ,
Sep 05, 2017 Sep 05, 2017

リンクをクリップボードにコピー

コピー完了

CS5 omachiさん

回答ありがとうございます。

やっぱり無いですよね…

使い方間違ってるとかではないのが分かっただけでも助かりました。

それぞれのタイプごとにキャストして使用するということですね。

ありがとうございます。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines