SetVariable メソッド(ActiveX)

AutoCAD システム変数の値を設定します。

サポートされているプラットフォーム: Windows のみ

構文と要素

VBA:

object.SetVariable Name, Value
object

タイプ: Document

このメソッドが適用されるオブジェクト。

Name

アクセス: 入力のみ

タイプ: 文字列

設定するシステム変数の名前。

Value

アクセス: 入力のみ

タイプ: バリアント型

指定したシステム変数の新しい値。

戻り値(RetVal)

戻り値はありません。

注意

システム変数を設定する際、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)))
)