Vla-get-preset
- 構文
- (vla-get-preset vla-object )
- 機能
- 属性がプリセットかどうかを取得する。
- 引数
-
- vla-object … Attribute のVLAオブジェクト
- 戻り値
- ブール型
- :vlax-True: 属性はプリセット属性。
- :vlax-False: 属性はプリセット属性ではない。
- 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))
)
関連事項