Skip to content
On this page

系统变量

CAD系统变量是用于存储操作环境设置、图形信息和命令设置等的数据存储单位。它们可以控制CAD的某些功能和设计环境、命令的工作方式。CAD系统变量通常具有6到10个字符的长度,可以是整数型、实数型、点开关或文本字符串等类型。有些系统变量具有只读属性,用户只能查看而不能修改;而没有只读属性的系统变量可以通过调用命令进行查看和设置。下面介绍的是我们在CAD绘图中最常用的几种系统变量。

mxcad 根据上述CAD系统变量的定义提供了对应CAD变量的获取和设置方法。根据不同的变量类型, 我们分了四种不同方式设置:

  1. 获取浮点数变量getSysVarDouble,

  2. 获取长整数变量getSysVarLong

  3. 获取点变量getSysVarPoint

  4. 获取字符串变量getSysVarString

提示

设置就是方法的get改成set, 传入变量名和对应类型的值。

正交

我们可以通过设置长整数变量 ORTHOMODE 来控制是否开启正交绘图模式。开启正交绘图模式后,可限制光标只在水平或垂直轴上移动,来达到直角或正交模式下绘图的目的。但用户从命令行输入坐标值或使用实体捕捉时,将忽略正交绘图。

变量名变量值说明
ORTHOMODE1开启正交绘图模式
ORTHOMODE0关闭正交绘图模式
ts
import { MxCpp } from "mxcad"

const mxcad = MxCpp.getCurrentMxCAD()
// 开启正交绘图模式
mxcad.setSysVarLong("ORTHOMODE", 1)

对象捕捉

在CAD绘图过程中经常会遇到需要图形一些特殊位置的点如端点、中点、交点等。如果单靠眼睛去捕捉这些点是不精确的,因此 mxcad 提供了一些实体捕捉方式来提高精确性。

我们可以通过设置长整数变量 OSMODE 的动态捕捉值来设置不同的捕捉方式,1其中,我们获取到的动态捕捉值是根据这些开关是否开启运算得到的总值。下面以设置平行捕捉方式为例(其他捕捉方式可直接参考下面示例):

方式运算值说明
最近点捕捉512捕捉对象与指定点距离最近的点。这些对象包括直线、圆、圆弧、复合线、椭圆、样条曲线等距光标最近的点。
端点捕捉1捕捉到圆弧、直线、复合线、射线、平面等距光标最近的端点
中点捕捉2捕捉到圆弧、直线、复合线、实体填充线、样条曲线等实体的中点
圆心捕捉4捕捉到圆弧、圆、椭圆和椭圆弧的圆心。
垂足捕捉128捕捉到与圆弧、圆、构造线、椭圆、椭圆弧、直线、复合线、射线、实体或样条曲线等正交的点,也可以捕捉到对象的外观延伸的正交点。
切点捕捉256在圆或圆弧上捕捉到与上一点相连的点,这两点形成的直线与该圆或圆弧相切。
象限点捕捉16捕捉到圆弧、圆或椭圆最近的象限点。
插入点捕捉64捕捉到块、文字、属性、或属性定义等的插入点。
交点捕捉32捕捉到圆弧、圆、椭圆、椭圆弧、直线、复合线、射线、样条曲线或构造线等对象之间的交点。
延伸捕捉4096延伸捕捉模式用于捕捉直线或圆弧的延伸点。
平行捕捉8192平行捕捉模式用于绘制平行于另一对象的直线。
外观交点捕捉2048捕捉弧、圆、椭圆、直线、复合线、射线、样条曲线或参照线等两个对象的外观交点,这两个对象在三维空间不相交,但在图形显示里看起来是相交的。
关闭捕捉16384关闭实体捕捉。
ts
import { MxCpp, McGePoint3d } from "mxcad"
const mxcad = mxcad.MxCpp.getCurrentMxCAD()
const osModeVal = mxcad.setSysVarLong("OSMODE")
export enum SysVarLongSketchSettingsOsMode {
  /** 端点捕捉 */
  End = 1,
  /** 中点捕捉 */
  Mid = 2,
  /** 圆心点捕捉 */
  Cen = 4,
  /** 节点捕捉 */
  Node = 8,
  /** 象限点捕捉 */
  Quad = 16,
  /** 交点捕捉 */
  Int = 32,
  /** 插入点捕捉 */
  Ins = 64,
  /** 垂足点捕捉 */
  Perp = 128,
  /** 切点捕捉 */
  Tan = 256,
  /** 最近点捕捉 */
  Near = 512,
  /**外观交点捕捉*/
  App = 2048,
  /**延伸点捕捉*/
  Ext = 4096,
  /** 平行点捕捉 */
  Par = 8192,
  /**捕捉关闭 */
  Off = 16384,
}
// 关闭捕捉 0 或 1
const osModeOff = osModeVal & SysVarLongSketchSettingsOsMode.Off
// 平行点捕捉 0 或 1
const osModePar = osModeVal & SysVarLongSketchSettingsOsMode.Par

// 是否开启平行点捕捉
const isOpenOsModePar = true
// 设置
mxcad.setSysVarLong("OSMODE", 
    isOpenOsModePar 
    ?
    (osModeVal | SysVarLongSketchSettingsOsMode.Par) 
    :
    (osModeVal & ~SysVarLongSketchSettingsOsMode.Par)
)

动态输入

我们可以通过设置长整数变量 DYNINPUT 来控制是否开启动态输入模式。开启动态输入模式后,用户在绘图时可以实时查看并编辑当前操作的长度、角度和圆弧半径等数值。

变量名变量值说明
DYNINPUT1开启动态输入模式
DYNINPUT0关闭动态输入模式
ts
import { MxCpp } from "mxcad"

const mxcad = MxCpp.getCurrentMxCAD()
// 开启动态输入模式
mxcad.setSysVarLong("DYNINPUT", 1)

极轴和对象追踪

极轴追踪允许用户沿特定的角度增量来追踪点,从而帮助创建精确的直线、角度等图形对象。例如,如果用户设置了30度的角度增量,那么在使用极轴追踪时,每相隔30度,光标处就会显示一条虚线,帮助用户追踪和定位到特定的角度。

我们可以通过设置长整数变量 AUTOSNAP 来启动极轴,长整数变量DYNTRACE来启动对象追踪。其中极轴的增量可以通过设置浮点数变量POLARANG,为该变量赋值时需将角度转化为弧度值。

ts
import { MxCpp } from "mxcad"

const mxcad = MxCpp.getCurrentMxCAD()

// 开启对象追踪
mxcad.setSysVarLong("DYNTRACE",1)

// 开启极轴
const autoSnapVal = mxcad.getSysVarLong("AUTOSNAP")
// 指定极轴角度
mxcad.setSysVarDouble("POLARANG", 30/180 *Math.PI)
// 是否开启极轴
const isOpenOsModePar = true
// 设置
mxcad.setSysVarLong("AUTOSNAP", isOpenOsModePar ? (autoSnapVal | 8) :(autoSnapVal & ~8) )

栅格

栅格模式在CAD中可以看作是在二维空间中设置的一系列规则点,这些点或线形成了一个矩阵,覆盖了用户坐标系的整个平面。开启栅格模式后,用户可以通过栅格点来精确地定位和绘制对象,类似于在图纸下放置一张坐标纸。栅格模式还有助于显示对象之间的距离和角度,作为一个定位和显示的参考框架。

我们可以通过设置长整数变量 GRIDMODE 来控制是否开启格栅模式。

变量名变量值说明
GRIDMODE1开启栅格模式
GRIDMODE0关闭栅格模式
ts
import { MxCpp } from "mxcad"

const mxcad = MxCpp.getCurrentMxCAD()
// 开启栅格模式
mxcad.setSysVarLong("GRIDMODE",1)