Vla-put-preset

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年2月1日 (月) 09:29時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-put-preset ''vla-object'' ''bool'' ) ; 機能 : 属性がプリセットかどうかを指定する。 ; 引数 :* vla-object … Attrib...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-put-preset vla-object bool )


機能
属性がプリセットかどうかを指定する。


引数
  • vla-object … Attribute のVLAオブジェクト
  • bool … ブール型
  • :vlax-True: 属性はプリセット属性。
  • :vlax-False: 属性はプリセット属性ではない。


戻り値
nil


  • MEMO:プリセット属性は、ユーザがブロックを挿入するときに属性をその既定値 (プリセット値) に設定する。
  • 属性は、オプションの 4 つのモード、一定、プリセット、非表示、確認のいずれかとしてのみ存在することができる。
  • システム変数 AFLAGS に現在のモードの設定が格納される。
  • Mode プロパティを使用して現在のモードを取得できる。


サンプル
(vl-load-com)
(defun c:Example_Preset()
    ;; 属性定義を含むブロックを作成するサンプル。
    ;; 最初に、属性プリセット フラグがオンにされているし、親ブロックが参照として
    ;; 挿入される属性の既定値が表示される。
    ;; この例を実行するたびに、属性を検索し、プリセット値を切り替えるしようとする。
    ;; 
    ;; * 注: この例を初めて実行した後メニューの「挿入/ブロック...」を選択し、
    ;; 「ブロック-プリセット」からブロック参照を作成します。Blockref が
    ;; 表示されるときの属性の表示設定値が表示される。
    ;; 再び例を実行し、ブロック挿入を繰り返します。属性値のプリセットは、
    ;; オフになっていますとされたら、今この時間に注意すること。
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; このブロックが既に作成されているか確認。
    ;; 作成されてたら、ブロックの内部属性を取得。
    ;; それ以外の場合、新しい属性を含むブロックを作成。    
    (setq err (vl-catch-all-apply 'vla-Item (list (vla-get-Blocks doc) "Block-PRESET")))
  
    (if (/= (type err) 'VL-CATCH-ALL-APPLY-ERROR)             ;; ブロック作成
        (progn
            (setq newBlock err)
            (setq attributeObj (vla-Item newBlock 0))         ;; ブロックチェック
    
            (vla-put-Preset 
               attributeObj 
               (if (= (vla-get-Preset attributeObj) :vlax-true) :vlax-false :vlax-true))     ;; トグルで変更
        )
        (progn
	           ;; ブロック属性を作成
            (setq BlockInsertionPoint (vlax-3d-point 0 0 0))

            (setq newBlock (vla-Add (vla-get-Blocks doc) BlockInsertionPoint "Block-PRESET"))

	           ;; 属性定義
            (setq attrInsertionPoint (vlax-3d-point 0 0 0)
	                 attHeight 1
	                 attMode acAttributeModePreset
	                 attPrompt "New Prompt"
	                 attTag "New_Tag"
                  attValue "Preset")
	        
	           ;; 新しいブロックに属性定義オブジェクトを追加する。
	           (setq attributeObj (vla-AddAttribute newBlock attHeight attMode attPrompt attrInsertionPoint attTag attValue))
        )
    )
    
    ;; 属性を読み込み
    (setq IsPreset (if (= (vla-get-Preset attributeObj) :vlax-true)
                             (strcat "ありまぁす。プリセット値は: " (vla-get-TextString attributeObj))
                                     "プリセットはありません"))
                   
    (alert (strcat "このブロックの属性は " IsPreset))
)

関連事項