1、第六章交互式输入函数和屏幕输出函数 6.1坐标系与角度测量 6.1.1坐标系 WCS 世界坐标系:即参考坐标系。所有其他坐标系均相对于 WCS 定义,该坐标系恒定不变。相对于 WCS 所测量的值可以稳定地转换到其他坐标系中。 UCS 用户坐标系:即工作坐标系。用户可以设置 UCS 以使图形编辑工作更为方便。所有传入 AutoCAD 命令的点,包括 AutoLISP 程序和外部函数返回的点,都是当前 UCS 中的点(除非用户在命令提示中输入的点前加上 “*”,前缀为 WCS坐标系)。如果应用程序需要将 WCS、 OCS 或 DCS 中的坐标传送给 AutoCAD 命令,那么必须先调用函数 tra
2、ns 将它们转换到 UCS 中。(当AutoCAD等待用户输入一个三维点时,若用户输入一个二维点,或用定标设备拾取一个点时,取当前高度作为 Z坐标。当前高度见 ELEV命令和ELEVATION系统变量。具有当前高度的 XY平面角构造平面。) OCS 对象坐标系:由 entget 返回的点以此坐标系表示,即相对于对象本身的坐标。根据该对象的用途,这些点常常被转换到 WCS、当前 UCS 或当前 DCS 中。反过来,在调用 entmod 或 entmake 将这些点写入数据库之前,它们也必须被转换为 OCS。该坐标系也称为图元坐标系。 DCS 显示坐标系:在显示图形前,先将对象转换到此坐标系中。
3、DCS 的原点存储在 AutoCAD 系统变量 TARGET 中,并且以 Z 轴作为观察方向。换句话说,视口总是 DCS 的一个平面视图。这些坐标可以决定显示给 AutoCAD 用户的画面的位置。 . 。 PSDCS 图纸空间 DCS:此坐标系仅能与当前激活的模型空间视口进行转换。它实质上是一个二维的转换,如果参数 disp 是 0,那么 X 坐标和 Y 坐标总是按比例缩放和平移。 Z 坐标仅按比例缩放,但不作平移,因此,它可以用于确定两个坐标系之间的比例因子。 6.1.2角度的测量 在 AutoCAD中,测量角度有方位角(或称绝对角度)和相对角度。 1、方位角 角度 0表示正右方,逆时针转为
4、正。 2、相对角度 角度的测量基准由系统变量 “ANGBASE“和 “ANGDIR“决定, “ANGBASE“表示 零度位置,相对当前 UCS的 X轴正向测量, “ANGDIR“决定角度的正向方向(1 顺时针, 0 逆时针),对 “ANGBASE“的解释为逆时针为正, UCS的 X轴正向为 0。 (setvar “系统变量 “ 值) 设置系统变量 (getvar “系统变量 “ ) 获得系统变量值 UNITS命令确定角度单位 例题 假设 UCS是绕 Z轴转 90度,然后用下式设置零度方向和增加方向(setvar “angbase“ 45) 单位总是度,不随 AUNITS变(setvar “an
5、gdir“ 1) 顺时针为正若方位角为 180度,则相对角度为 45度。 只决定 CAD的输入和显示单位,许多 LISP函数总是返回弧度值 6.2 交互输入函数 getxxx及初始化函数 initget函数 例题 (initget (+ 1 2) “Type Exit“) 1 非空 2 非零 (setq n (getint “nType/Exit/正整数: “) 6.2.1 initget函数 (initget bits string) 总是返回 nil 为随后的用户输入函数 getxxx调用创建关键字并控制其输入范围。getstring 函数是唯一不接受关键字的用户输入函数。 在随后调用用户
6、输入函数时,如果用户输入的不是相应的数据类型(例如与 getpoint 函数相对应的类型是一个点),该函数将检索关键字表来确定用户是否键入了一个关键字。如果用户的输入和表中的一个关键字相匹配,函数将以字符串的形式返回该关键字。应用程序可以对返回的关键字进行检测,并对每一个关键字执行相应动作。如果用户的输入不是相应类型且和表中任何一个关键字都不匹配, AutoCAD 将要求用户再次输入。 initget 函数的位编码值与关键字表仅对紧随其后的那个用户输入函数有效。 如果 initget 函数设置了一个控制位,而该控制位对应用程序随后调用的那个用户输入函数来说没有意义,则忽略该控制位。 如果用户的
7、输入不满足一个或多个指定条件(例如在不允许输入零值时输入了零值), AutoCAD 将显示信息要求用户再次输入 bits 按位编码的整数,用于控制是否允许某些类型的用户输入。这些控制位可以任意组合(即把各位加起来),构成 0 到 225 之间的值。如果没有指定 bits 参数,则假定它是 0。各位的值如下: 1 (位 0) 非空 2 (位 1) 非零 4 (位 2) 非负 8 (位 3) 无界。 允许用户在当前图形界限之外输入一个点,即使 AutoCAD 的系统变量 LIMCHECK 当前被设置为开 (ON),本条件也照样对随后调用的用户输入函数有效。 16 (位 4) (目前不使用) 。 3
8、2 (位 5) 用虚线绘制拖引线或拉伸方框 。对于那些可以由用户在图形屏幕上通过选择位置来指定一个点的函数,设置该控制位将使拖引线和拉伸方框显示为虚线而不是实线(某些显示驱动程序用颜色醒目的线来代替虚线)。如果系统变量 POPUPS 设为 0, AutoCAD 将忽略该控制位。 64 (位 6) 二维距离 。 128 (位 7) 任意输入,优先级最高 。 例如,如果同时设置了位 7 和位 0,那么用户仅键入 ENTER 键时,将返回空字符串。 注意 AutoLISP 的后续版本中可能会使用其他 initget 控制位,所以不要设置此处未提及的位。函数 识别关 键 字 控制位之 值非空1非零2非
9、 负4无界8使用虚线 32二 维 距离 64任意 输入 128getint y y y y ygetreal y y y y ygetdist y y y y y y ygetangle y y y y ygetorient y y y y ygetpoint y y y y ygetconer y y y y ygetword y y ygetstringentsel ynentsel ynentselp y用户输入函数控制位和关键词 string 代表关键字表的字符串。 关键字规范 关键字用一个或多个空格分隔。例如, “Width Height Depth” 关键字只能由字母、数值和连字符
10、 (-) 组成。 关键字有如下两种缩写办法: 关键字的必需部分用大写字母表示,而其余部分用小写字母表示。大写的缩写部分可以位于关键字的任何位置(例如, “LType“、 “eXit“或 “toP“) 。 整个关键字用大写字母表示,其后紧跟一个逗号,然后再跟随其必需部分(例如, “LTYPE,LT“)。这种情况下,关键字的必需部分必须包含关键字的第一个字符,这意味着 “EXIT,X”是无效的。 “LType”和“LTYPE,LT”这两种关键字缩写方式是等价的。 如果用户输入关键字不分 LT大小写。 用户还可以输入关键字缩写部分之后的字符。在本例中,用户可以输入 LT、 LTY 、 LTYP或 L
11、TYPE,但只输入 L 是不够的。 如果 string 参数完全以大写或小写字符给出,其后没有逗号,也没有跟随必需部分,则只有用户完整输入这个关键字时 AutoCAD 才能识别。 initget 函数支持本地化的关键字。 下列关键字字符串语法允许输入本地化的关键字,而返回与语言无关的关键字: “local1 local2 localn _indep1 indep2 indepn“ 在这里, local1 至 localn 是本地化的关键字,而从 indep1 到 indepn 是与语言无关的关键字。本地化关键字和语言无关关键字的数目必须相同,而且第一个与语言无关的关键字的前面必须有一个下划线,如下例所示: (initget “Abc Def _Ghi Jkl“) (getkword “nEnter an option (Abc/Def): “) 输入 A 返回 Ghi,输入 _J 则返回 Jkl。