AutoCAD システム変数の値を設定します。
サポートされているプラットフォーム: Windows のみ
VBA:
object.SetVariable Name, Value
タイプ: Document
このメソッドが適用されるオブジェクト。
アクセス: 入力のみ
タイプ: 文字列
設定するシステム変数の名前。
アクセス: 入力のみ
タイプ: バリアント型
指定したシステム変数の新しい値。
戻り値はありません。
システム変数を設定する際、AutoCAD は整数、文字、倍精度浮動小数点の値を要求します。間違ったデータ型を渡すと、(たとえば、整数を必要としているのに倍精度浮動小数点のバリアントに渡すと)エラーが生成されます。これを防ぐ最も簡単な方法は、渡す前に CInt() のようなデータ型変換関数 Cxxx の 1 つを使用して、データを明示的に限定することです。
すべての AutoCAD システム変数およびそのタイプの一覧については、AutoCAD のヘルプ システムの「システム変数」を参照してください。
VBA:
Sub Example_SetVariable()
' This example sets various system variables, each of
' a different data type.
Dim sysVarName As String
Dim sysVarData As Variant
Dim DataType As Integer
' Set FILEDIA system variable (data type Integer) to 1. NOTE that
' you need to declare a variable as the data type of system variable,
' assign data to that variable and then make it variant type
Dim intData As Integer
sysVarName = "FILEDIA"
intData = 1
sysVarData = intData ' Integer data
ThisDrawing.SetVariable sysVarName, sysVarData
' Check the variable using GetVariable
sysVarData = ThisDrawing.GetVariable(sysVarName)
MsgBox sysVarName & " = " & sysVarData, , "SetVariable Example"
' Set DCTCUST system variable (data type String) to "My Custom Dictionary"
Dim strData As String
sysVarName = "DCTCUST"
strData = "My Custom Dictionary"
sysVarData = strData ' String data
ThisDrawing.SetVariable sysVarName, sysVarData
' Check the variable using GetVariable
sysVarData = ThisDrawing.GetVariable(sysVarName)
MsgBox sysVarName & " = " & sysVarData, , "SetVariable Example"
' Set CHAMFERA system variable (data type Double) to 1.5
Dim dataDouble As Double
sysVarName = "CHAMFERA"
dataDouble = 1.5
sysVarData = dataDouble ' Double data
ThisDrawing.SetVariable sysVarName, sysVarData
' Check the variable using GetVariable
sysVarData = ThisDrawing.GetVariable(sysVarName)
MsgBox sysVarName & " = " & sysVarData, , "SetVariable Example"
' Set INSBASE system variable (data type array) to (1.0,1.0,0)
Dim arrayData3D(0 To 2) As Double
sysVarName = "INSBASE"
arrayData3D(0) = 1#: arrayData3D(1) = 1#: arrayData3D(2) = 0
sysVarData = arrayData3D ' 3D array data
ThisDrawing.SetVariable sysVarName, sysVarData
' Check the variable using GetVariable
sysVarData = ThisDrawing.GetVariable(sysVarName)
MsgBox sysVarName & " = " & sysVarData(0) & ", " & sysVarData(1) & ", " & sysVarData(2), , "SetVariable Example"
End Sub
Visual LISP:
(vl-load-com)
(defun c:Example_SetVariable()
;; This example sets various system variables, each of
;; a different data type.
;; Set FILEDIA system variable (data type Integer) to 1. NOTE that
;; you need to declare a variable as the data type of system variable,
;; assign data to that variable and then make it variant type
(setq sysVarName "FILEDIA"
intData 1
sysVarData intData) ;; Integer data
(vla-SetVariable doc sysVarName sysVarData)
;; Check the variable using GetVariable
(setq sysVarData (vlax-variant-value (vla-GetVariable doc sysVarName)))
(alert (strcat sysVarName " = " (itoa sysVarData)))
;; Set DCTCUST system variable (data type String) to "My Custom Dictionary"
(setq sysVarName "DCTCUST"
strData "My Custom Dictionary"
sysVarData strData) ;; String data
(vla-SetVariable doc sysVarName sysVarData)
;; Check the variable using GetVariable
(setq sysVarData (vlax-variant-value (vla-GetVariable doc sysVarName)))
(alert (strcat sysVarName " = " sysVarData))
;; Set CHAMFERA system variable (data type Double) to 1.5
(setq sysVarName "CHAMFERA"
dataDouble 1.5
sysVarData dataDouble) ;; Double data
(vla-SetVariable doc sysVarName sysVarData)
;; Check the variable using GetVariable
(setq sysVarData (vlax-variant-value (vla-GetVariable doc sysVarName)))
(alert (strcat sysVarName " = " (rtos sysVarData 2)))
;; Set INSBASE system variable (data type array) to (1.0,1.0,0)
(setq sysVarName "INSBASE"
arrayData3D (vlax-3d-point 1 1 0)
sysVarData arrayData3D) ;; 3D array data
(vla-SetVariable doc sysVarName sysVarData)
;; Check the variable using GetVariable
(setq sysVarData (vlax-variant-value (vla-GetVariable doc sysVarName)))
(alert (strcat sysVarName " = " (rtos (vlax-safearray-get-element sysVarData 0) 2) ", "
(rtos (vlax-safearray-get-element sysVarData 1) 2) ", "
(rtos (vlax-safearray-get-element sysVarData 2) 2)))
)