着墨中文lisp登入_AUTOLISP程序的设计技巧
AUTOLISP
程序设计技巧
一、引言
在
AutoCAD
中的角度捕捉只有当正交状态打开时的直和水平方向,对于其他特殊角
度无能为力;另外,其网点捕捉也是相对于
X
轴和
Y
轴,无法实现其他方向的特殊长度捕捉,给绘图带来极大的不方便。
在应用
AutoCAD
进行设计制图的操作中,
LINE
和
POLYLINE
是使用频率最高的两个命令,
经常要遇到在某些特定角度上绘制
特定长度的简单线或复合线的情况,因而实现这两个捕捉对提高
AutoCAD
作图效率很有实用价值。
二、方法原理
所谓角度捕捉,
是指当十字光标在某一角度
α
的一定围选取一点时,
该点自动落在该
α
角度线上;
当我们设定捕捉角度为
α
时,
将会以基准点作为原点、
自
X
轴正方向出发,
将整个屏幕划分为[360/α]个区间,
则
NXα
角度就是角度捕捉线,
其中,
0≤N≤[360/α],
[360/α]表示不大于
360/α
的整数。
所谓长度捕捉,是在角度捕捉的基础上,在某一角度线上有一系列捕捉点,该系列点离基准点的距离为捕捉长度的正整数倍,当
选取直线上的一点时,落点自动落到离其最近的捕捉点上。
实现特定角度和长度捕捉的关键点是:当十字光标
(
即十字交叉线
)
移动时,程序要随时跟踪其交叉点的位置,并将该位置与用户
所设定的捕捉角度与长度对应起来,从而计算出在该角度上的落点。
以下举例说明该两个捕捉的实现过程:
假定捕捉角度为
α=30°,捕捉长度为
L
。
当十字光标在任意的某一区间移动时,比如在第
5
区间(120°~150
°)移动时,此时,落点只能在
120°或
150°线上
(
该线在图
中并不直接显示
)
,该两根角度线的中心线为
135°。当十字光标的中心点处在
120°~135°之间时,
则落点应在
120°线上,该落
点的具体位置为由十字光标的中心点向
120°线作垂线来获得,其交点
D(
称为垂点
)
即为落点,为直观起见,此时由基准点
(
此处为
O
点
)
向落点作一橡筋拖曳线,该橡筋拖曳线随十字光标的移动而相应移动,显示出拖动过程
(
见图
1)
;同样,当十字光标的中心点处在
135°~150°之间时,则落点应在
150°线上,并显示相应的橡筋拖曳线。该橡筋拖曳线并不是真正的线段,
只是用
XOR
墨水绘制的
一个向量,当用
XOR
墨水重新绘制一遍该向量时,该向量将从屏幕上消失,这就是本程序实现光标拖动的原理。
落点落在某一捕捉角度线上时,还得落在捕捉长度
L
的整数倍的点
(
称为捕捉点
)
上,还是针对图
1
,其垂点必然处于某两个捕捉
点
A
与
B
之间,设
A
与
B
的中点为
C
,当
D
处于
A
与
C
之间时,落点应为
A
;当
D
处于
C
与
B
之间时,落点应为
B (
见图
1)
。其中:
-- --
OA = n XL ; OB = (n + 1) XL
n:
非负整数。