CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于校准平板电脑(AutoLISP)

2023-1-6 12:00| 发布者: admin| 查看: 502| 评论: 0|来自: AutoCAD

摘要: 数字化平板电脑可以使用 TABLET 命令或 AutoLISP 平板电脑功能进行校准。

数字化平板电脑可以使用 TABLET 命令或 AutoLISP 平板电脑功能进行校准。

重要:平板电脑支持仅限于 Windows。

该功能使应用程序能够直接管理校准设置,并保存这些设置以供将来使用。函数的第一个参数是一个整数代码。如果代码等于 0,则该函数返回当前校准。如果代码等于 1,则根据其余参数设置校准。校准表示为四个 3D 点(除代码外)。tablettablet

前三个点(row1row2row3)是平板电脑转换矩阵的三行。第四个点,方向,是一个垂直于假定平板电脑表面所在的平面的向量(以WCS,世界坐标系表示)。当使用 TABLET 命令设置校准时,假定平板电脑的表面位于当前 UCS 的XY平面中。

注意:TABMODE 系统变量控制平板电脑模式是打开 (1) 还是关闭 (0)。您可以使用函数来控制它。setvar

以下代码检索当前平板电脑校准并将其存储在变量中:tcal

(defun C:TABGET ()
  (setq tcal (tablet 0))
  (if tcal
    (princ
      (strcat "\nConfiguration saved, "
              "use TABSET to retrieve calibration."
      )
    )
    (princ "\nCalibration not obtainable ")
  )
 (princ)
)

如果 TABGET 命令成功,则变量现在包含由平板电脑函数返回的列表。此列表可能如下所示:tcal

(1 (0.00561717 -0.000978942 -7.5171)
  (0.000978942 0.00561717 -9.17308)
  (0.0 0.0 1.0)
  (0.0 0.0 1.0)
)

若要将校准重置为上述例程检索的值,可以使用以下代码:

(defun C:TABSET ()
  (if (not (apply 'tablet tcal))
    (princ "\nUnable to reset calibration. ")
    (progn
      (princ "\nTablet calibration reset. ")
      (setvar "tabmode" 1)
      (if (= (getvar "tabmode") 0)
        (princ "\nUnable to turn on tablet mode ")
      )
    )
  )
 (princ)
)

定义平板电脑的转换矩阵

参数row1row2row3作为 3×3 转换矩阵传递,用于转换 2D 点。2D 点表示为齐次坐标中的列向量(通过将 1.0 追加为第三个元素),因此变换如下所示:

点的计算类似于 3D 情况。AutoCAD 使用以下公式转换点:

通过将前两个 (X',Y') 分量除以第三个分量(比例因子 D'),可以将变换产生的矢量转换回 2D 点。生成的 2D 点类似于 (X'/D',Y'/D')。

对于射影变换,最一般的情况是进行完整计算。但对于仿射和正交变换,Mtablet 20 和米 21 都是 0,所以 D' 将是 1.0。省略了D'和除法的计算;生成的 2D 点只是 (X',Y')。

正如上一段所暗示的,仿射变换是射影变换的特殊、统一的情况。正交变换是仿射变换的特例:不仅 M 20 和米 21 零,但 M 00 = M 11 和米 10 = -M 01 .

注意:设置校准时,如果方向未归一化,则返回的列表不等于提供的列表。AutoCAD 在返回方向矢量之前对其进行归一化。此外,它还确保第三列 (row3) 中的第三个元素等于 1。如果使用从 AutoCAD 检索的值来设置校准,则不会出现这种情况。但是,如果程序计算转换本身,则可能会发生这种情况。[Z]tablet

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 12:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部