获取时间值,在编程当中属于一个常见需求。

不过,对于autolisp的应用场景来说,获取时间值其实没有多少用处。这个说法可能出乎很多人的意料, 这很正常,我在真正动手写autolisp代码之前也是这么想的,写了一些autolisp代码之后逐渐意识到时间值的无用。

我们这里说的时间值,指的是某个具体的时刻,不是文件的时间戳。获取文件的时间戳,需要使用其他的方法, 以后有空再谈。

autolisp获取时间值有几种方法,一种是检索autocad的系统变量,二是通过activex函数调用windows系统的时间函数查阅时间。 一般来说,检索autocad的系统变量获取的时间值就足以解决问题,没有必要使用第二种方法,一来是太麻烦, 二是autocad也是调用windows系统函数来实现时间检索的,本质上是一回事。

和时间相关的autocad系统变量,有两三个。准确地说,是新版本、高版本有三个,老版本、低版本有两个。 按字母顺序排序,这三个系统变量分别是cdatedatemillisecs,这其中,millisecs是autocad2018才开始有的。

cdate这个系统变量,返回的是包含日期和时间的一个浮点数,整数部分是8位数的年月日, 小数部分也是8位数,代表的是时分秒及2位数的毫秒值。不过,从autocad2017开始, 这个值只精确到秒。

date这个系统变量,返回的也是一个浮点数,这个值代表的是简化儒略日(Modified Julian Day,MJD)。 它的整数部分表示的是简化儒略日历法下的天数,小数部分代表的是当前时刻除以24h的商。

millisecs返回的是一个整数值,代表的是系统启动后经历过的毫秒值。这个值在系统重启之后, 就清零了。

了解了这三个系统变量返回值的含义之后,想要获取时间值去实现一些功能就很容易了。 要是这篇博客对你有用的话,就赐我一杯咖啡吧。😁