Sets the value of an AutoCAD system variable.
Supported platforms: Windows only
VBA:
object.SetVariable Name, Value
Type: Document
The object this method applies to.
Access: Input-only
Type: String
The name of the system variable to set.
Access: Input-only
Type: Variant
The new value for the specified system variable.
No return value.
When setting system variables, AutoCAD may require integers, text, or double values. Passing the wrong data type (for example, passing a variant of type double when an integer is required) will generate an error. The easiest way to avoid this is to use one of the Cxxx functions, such as CInt(), to explicitly type your data before passing it.
For a list of all AutoCAD system variables and their types, please refer to "System Variables" in the AutoCAD Help system.
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))) )