返回列表 回复 发帖

VISUAL LISP 关于点的命令

转自http://hi.baidu.com/tanglan/blog

1、定义点信息

(1)普通定义方式

     (setq pt' (2.0 3.0 0.0))   ;定义点坐标为(2,3,0),注意此时pt后要加单引号

     (setq pt (quote(2.0 3.0 0.0))    ;QUOTE函数和'的含义相同

(2)参数定义方式

     如果点坐标为变量参数,则定义方式为

     (setq pt' (list x y z))

     例如

     (setq x 2.0 y 3.0 z 0.0)

     (setq pt (list x y))     ;注意此时pt后不能加单引号

     结果

     pt=(2.0,3.0)


     LIST函数:将任意数目的表达式组合成一个表,本函数常用于定义二维或三维点变量(由两个或三个实数组成的表)

     类似命令: APPEND函数:将任意多个表组合成一个表


2、点坐标的提取

(1)提取点的X坐标   CAR

     (setq x_val (car pt))

     (car list) 返回list 中的第一个元素

(2)提取点的Y坐标 CADR

     (setq y_val (cadr pt))

     (cadr list) 返回list 中的第二个元素

(3)提取点的Z坐标 CADDR

     (caddr list) 返回list 中的第三个元素

(4)CAR与CDR

    AutoCAD允许CAR与CDR多重嵌套(4层),CAR表示提取第1个值,CDR表示删除第1个值。嵌套过程从后向前,如CDDR表示(cdr(cdr x)),则对x列表删除前两个值。若x=(5 5 8 9),则(cddr x)=(8 9);CADR表示(car(cdrx)),(cadr x)=(8)。


3、测量点的距离

   (1)(setq rads   (angle pt1 pt2))     ; 两点在当前UCS坐标系下XY平面的角度

   (2)(setq len   (distance pt1 pt2))   ; 两点的距离


4、ROTS 将数值转换成字符串

     (rtos number [mode [precision]]) 根据 mode、precision 参数和系统变量 UNITMODE、DIMZIN、LUNITS 和 LUPREC 的设置,rtos 函数返回代表 number 的字符串。

     参数:

     number:数值。

     mode:整数,指定现行单位模式。mode 的取值对应于 AutoCAD 系统变量 lunits 的允许值,如下所示:
         1   科学
         2   小数
         3   工程(英尺和十进制英寸)
         4   建筑(英尺和分数英寸)
         5   分数

     precision:整数,指定精度。

     示例:

     (setq x 17.5)

     (setq fmtval (rtos x 2 2))   ; 将 x 的值转换为小数格式的字符串,精度为 2


5、ATOF 将一个字符串转换成实数

     (atof string)

     string:要转化为实数的字符串。

     示例:

     命令:(atof "97.1")
     97.1
     命令:(atof "3")
     3.0

返回列表