クラスのタグ属性を取得・設定するノード・関数

ホーム フォーラム マリオネット クラスのタグ属性を取得・設定するノード・関数

  • このトピックには4件の返信、2人の参加者があり、最後にyamada-yaにより1ヶ月前に更新されました。
3件の返信スレッドを表示中
  • 投稿者
    投稿
    • #9349
      yamada-ya
      参加者

      いつもありがとうございます。質問です。

      クラスオーガナイザであつかうことのできるクラス属性は下記の項目があります。これらのうち、適用とタグについて、これを操作するノードやVWScript関数が見つかりません。特にタグは、これからクラスをフィルタで管理する時に重要になると思います。。クラスのタグ属性を取得 / 設定するノード / Script 関数はありますか?

      目標はワークシートでクラスを一括管理することです。

      1. クラス名
      2. 適用
      3. タグ
      4. 面の属性 カラー・模様・ハッチング・タイル・グラデーション・イメージ
      5. 線の属性 カラー・模様・ラインタイプ・マーカー
      6. 不透明度
      7. テクスチャ
      8. 文字スタイル

      <h2>クラス属性を取得するノード</h2>
      アクティブクラス名 Get Active Class
      他のクラスの表示(表示+編集等) Get Class Option
      クラス数 Get Class Count
      クラスの表示状態 Get Visibility Status
      ++++

      クラス名 Get Class List
      適用 <<< 該当ノードなし
      タグ <<< 該当ノードなし
      面の属性 カラー Get Fill Color
      面の属性 模様 Get Fill Pattern
      面の属性 ハッチング Get Hatch Pattern
      面の属性 タイル・グラデーション・イメージ <<<おそらくScriptからノード作成
      線種 Get Line Style
      線の太さ Get Line Weight
      線の色 Get Line Color
      マーカー Get Class Marker
      不透明度 Get Class Opacity
      テクスチャ Get Class Texture
      文字スタイル Get Text Style

    • #9352
      木原 和信
      参加者

      yamada-ya様

      いつも大変お世話になります。エーアンドエー研究開発部です。

      ご質問いただきました、クラスに関するAPIについて回答いたします。

       

      クラスの”適用”にアクセスするAPIですが、ノード・スクリプト関数ともにご用意がございます。

      ノード:

      • 適用の状態を取得する:Is Graphic Used
      • 適用の状態を設定する:Set Graphic Usage

      スクリプト関数:

      • 適用の状態を取得する:GetClUseGraphic
      • 適用の状態を設定する:SetClUseGraphic

       

      次に、クラスの”タグ”にアクセスするAPIですが、

      残念ながらマリオネットのノードはありません。スクリプトの関数であればご用意がございます。

      • クラスのタグを取得する:GetObjectTags
      • クラスのタグを設定する:SetObjectTags

      マリオネットで使用する場合は、上記関数をPythonで記述してノードを自作する方法があります。

       

      以上となります。ご参考になれば幸いです。

      よろしくお願い申し上げます。

    • #9353
      yamada-ya
      参加者

      木原様

      いつもありがとうございます。
      Is Graphic Used は判定系ノードで見つかりました。取得系しか探していなかったので見落としました(^^;

      GetObjectTagsとSetObjectTags関数で質問です。
      Script関数リファレンスをみると、たとえばGetObjectTagsでは、

      +++++
      Python:
        def vs.GetObjectTags(objHandle):
           return (BOOLEAN, outArrTags)
      説明
        クラスやレイヤ、リソースなどに設定されているタグのリストを返します。
      Parameters:
        objHandle The handle to the object to query Tags from. オブジェクトのハンドル

      +++++

      となっていて、引数にクラスやレイヤ、リソースの「ハンドル」を指定するようにあります。

      これまで、レイヤと図形のハンドルは触ったことがありますが、クラスやリソースのハンドルは経験がありません。

      Script関数リファレンスの”Document List Handling”内の関数を一通り見たのですが、レイヤや図形のハンドルを操作する関数はありますが、クラスに関する関数を見つけることができませんでした。

      索引番号やクラス名で指定する、特定のクラスのハンドルはどのように取得したら良いのでしょうか。

      • #9354
        木原 和信
        参加者

        yamada-ya様

        お世話になります。エーアンドエー研究開発部です。

         

        クラスのハンドルは名前を指定して取得することができます。

        • ノードの場合:Name
        • スクリプト関数の場合:GetObject

        索引番号で指定する場合は、番号から名前を取得した後、Name・GetObjectに渡します。

        • ノードの場合:Get Class List
        • スクリプト関数の場合:ClassList
        # クラス名を指定する場合
        className = '一般'
        classHandle = vs.GetObject( className )
        
        # 索引番号を指定する場合`
        classNumber = 1
        classHandle = vs.GetObject( vs.ClassList( classNumber ) )

         

        ご参考までにとなりますが、GetObjectTags/SetObjectTagsを使用したタグの取得/設定のコーディング例は以下の通りです。

        def AddClassTag( classname, tagname ):
            objHandle = vs.GetObject( classname )
            isGetOK, taglist = vs.GetObjectTags(objHandle)
            if isGetOK:
               if taglist is None:
                  taglist = []
               taglist = list( taglist )
               taglist.append( tagname )
               taglist = tuple( taglist )
               isSetOK = vs.SetObjectTags( objHandle, taglist )
               return isSetOK
            return isGetOK
        
        def GetClassTag( classname ):
            objHandle = vs.GetObject( classname )
            isGetOK, taglist = vs.GetObjectTags(objHandle)
            if taglist is None:
               taglist = []
            return taglist
        
        isOK = AddClassTag( '一般', 'テストタグ' )
        
        if isOK:
            taglist= GetClassTag( '一般' )
            tagtxt = ','.join( taglist )
            vs.Message( tagtxt )

         

        以上となります。ご不明な点ございましたらお気軽にご連絡ください。

    • #9355
      yamada-ya
      参加者

      木原様

      いつもすぐに回答してくださって、お忙しいところすみません。
      ありがとうございます。

      教えていただいた内容を読み込んでやってみます。

      Script関数の深い森の中で、木原さんは唯一の道しるべです。

3件の返信スレッドを表示中
  • このトピックに返信するにはログインが必要です。