CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ActiveX 开发指南

相关分类

SetVariable Method (ActiveX)

2023-1-4 01:07| 发布者: admin| 查看: 459| 评论: 0|来自: AutoCAD

摘要: 设置 AutoCAD 系统变量的值。

设置 AutoCAD 系统变量的值。

支持的平台:仅窗口

签名

工 务 局:

object.SetVariable Name, Value
对象

类型:文档

此方法适用的对象。

名字

访问:仅输入

类型:字符串

要设置的系统变量的名称。

价值

访问:仅输入

类型:变体

指定系统变量的新值。

返回值(RetVal)

无返回值。

言论

设置系统变量时,AutoCAD 可能需要整数、文本或双精度值。传递错误的数据类型(例如,在需要整数时传递双精度类型的变体)将生成错误。避免这种情况的最简单方法是使用其中一个函数,例如,在传递数据之前显式键入数据。CxxxCInt()

有关所有 AutoCAD 系统变量及其类型的列表,请参阅 AutoCAD 帮助系统中的“系统变量”。

例子

工 务 局:

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)))
)

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-11 18:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部