AutoLisp/VisualLisp学习笔记#1

         本系列作为CAD二次开发工作中AutoLisp/VisualLisp学习心得体会及分享;

 一、.AutoLisp/VisualLisp 数据类型

        数据类型与常见C/C++中数据类型的名称有明显区别,分别为:

1.整形 int 

2.实数型 real(即双精度浮点数double)

3.字符串 str

4.表 list

        表作为AutoLisp/VisualLisp中比较特殊的数据结构,有点类似于C/C++中数组。由()为特征,可以为空,可以嵌套,例如

(+ a b c) (0 list(1 2 3)) (0 "CIRCLE")

        点对是一种特殊的表,只包含两个原子元素,写作( . )有点类似于pair(,),例如

(A.B)  (10.55)

5.函数

6.文件描述符 File

        类似于指针,作为文件的唯一标识

7.图元名 ename

        类似于指针,作为图元的唯一标识

8.选择集 pickset

        一个或多个图元对象的集合

9.vla对象

        是Active X的组成部分,不仅直线、圆等图元为vla对象,甚至图层、模型空间、CAD程序本身也为vla对象。

二、AutoLisp/VisualLisp 变量

        AutoLisp/VisualLisp语言对大小写并不敏感,符号的大小写等价,变量名、函数名定义中不能只包含数字,且不能包含(  ) 、 ;

       AutoLisp/VisualLisp中较为独特的一点为不需要对变量进行类型声明,直接赋值即可,并且同一变量可以被赋予不同类型的值从而改变类型,例如

(setq a 5 b "LINE");;a为整型int,b为字符串str,
(setq c 9.9);;此时c为实数real
(setq c "ABC");;此时c为字符串str

三、AutoLisp/VisualLisp 表达式

        AutoLisp/VisualLisp中表达式由表构成,采用前缀表示法,与大多数计算机语言所采用的中缀表示法

        表达式中第一个元素必须为函数名,并默认返回该函数求值结果,因此可以使用quoto或单引号‘禁止求值,例如

(setq x(* (+ a b) c));;等价于x=(a+b)*c
(setq y(1 2 3));;非法,将函数1的结果赋值给y,但1并不是一个函数名
(setq y'(1 2 3));;将表(1 2 3)赋值给y

        AutoLisp/VisualLisp中流程控制表达式包括cond、if、repeat、while,其中cond与常见C/C++switch语句类似,repeat与for语句类似,例如

(setq a (cond((判断1) 1) ((判断2) 2) ((判断3) 2)))
(seqt conditon1 1 conditon2 2)
(if (conditon1>conditon2)
(progn 
;;为真时执行代码段1
)
(progn 
;;为假时执行代码段2
)
)
(setq i 0)
(repeat 10
;;代码段重复10次
)
(setq i 0)
(while (< 10 i)
;;代码段
(seqt 1+ i)
)

        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值