【CATIA二次开发】CATVBA中四个延时方法Timer函数,Sleep函数,TimeGettime函数,Adddate函数

我们在做CATIA 二次开发的时候,有的情况下需要暂停程序运行,让CATIA飞一会。

那么,CATIA VBA 获取延时较为可行的四个方法:

1、一般延时 Timer函数(计时单位为秒级,1代表1s

一个应用接口需要限制运行速度,需要在循环中加个延时函数,这个延时不需要多么精确,要求有个几秒延时,网上用的比较多的就是用Timer函数编写,也是在VB联机手册中所推荐的Timer是VBA自带的函数,用起来比较方便,一般程序如下:

Sub delay(T As Single)

    Dim time1 As Single

    time1 = Timer

    Do While Timer - time1 < T

        DoEvents '转让控制权,以便让操作系统处理其它的事件

    Loop

    Debug.Print ("运行结束,总计耗时为:" & Timer - time1 & "s")

End Sub


Sub calculate1_time()

    delay (1.5)

End Sub



2、精确延时--sleep函数(计时单位为毫秒级,1000代表1s)

精确延时可以用sleep函数,sleep函数是Windows API函数,使用前必须声明,然后使用:

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

延时-Sleep函数,主要功能就是使当前线程等待⼀段时间,⽤法就是“Sleep 毫秒数”,这⾥的毫秒数可以设置成任意整型数据。如Sleep 1000,表⽰延时1秒(1000毫秒)。Sleep与DoEvents之间是有点区别的。DoEvents其实是将CPU的控制权交出去,是为了在长循环中进程占据全部CPU资源,也就是相当于⼀种事件,⽹上有这样的说法:DoEvents就是把机会让给别的事件,⾃⼰暂时休息⼀下,但是占着的位置不会空出来。在死循环⾥放个DoEvents,CPU占⽤率是100%,同时这个进程还是可以做别的事情的。⽽Sleep前⾯也讲过了,就是使当前线程等待⼀段时间的,英⽂单词表⾯上理解也可以理解成“睡觉”的意思,也就是什么都不做了,也不会占着CPU资源的,当然进程也是什么事都不⼲的,也就是将程序挂起,使操作系统暂时不会响应任何用户操作.一般程序如下:


Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub calculate2_time()

    Dim d As Date

    d = Time()

    Sleep 3000 '延时3秒

    Debug.Print ("运行结束,总计耗时" & DateDiff("s", d, Time()) & "s")

End Sub


3、精确延时--timeGetTime函数(这里和上面的sleep一样需要声明,计时单位为毫秒级,1000代表1s)

更好的办法是使用timeGetTime函数,timeGetTime函数返回的是开机到现在的毫秒数,可以支持1毫秒的间隔时间,而且永远增加,不存在回头的问题。当然不是永远不回头,毕竟Long型变量(双字,4字节)也是有取值范围的,这个值在0到2^32之间。大约49.71天。

同sleep函数一样,timeGetTime函数是Windows API函数,使用前必须先声明,即:

Private Declare Function timeGetTime Lib "winmm.dll" () As Long

延时函数和方法1一样,只是将Timer函数换成timeGetTime:

注意:延时时间单位是毫秒。由于延时函数中使用了 DoEvents语句交出了系统控制权,所以不会影响用户的其它操作。


Private Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long

Sub delay(T As Long)

    Dim time1 As Long

    time1 = timeGetTime

    Do

        DoEvents  '转让控制权,以便让操作系统处理其它的事件

    Loop While timeGetTime - time1 < T

End Sub

Sub ce_time()

    Dim d As Date

    d = Time()

    Call delay(1000)  '调用函数 可以使用call,也可以不使用

    Debug.Print ("运行结束,总计耗时为:" & DateDiff("s", d, Time()) & "s")

End Sub


4,一种巧妙的用法,使用vba自带dateadd 函数(计时单位是秒级,1代表1s)

函数表达式是:DateAdd(interval, number, date)

Public Sub BKWait(HowManySecs)

     'pause for HowManySecs seconds

Dim EndWait

      EndWait = DateAdd("s", HowManySecs, Now)

     While Now < EndWait

            'this is dummy text...nothing is actually done during the wait

     Wend

End Sub


Sub calculate4()

BKWait (5)

End Sub

以上就是在CATVBA中使用延时的四种方法,老铁你学废了吗?


文章来源CATIA小蚂蚁    


CATIA

【CATIA二次开发】CATVBA中四个延时方法Timer函数,Sleep函数,TimeGettime函数,Adddate函数的评论0条

    暂无评论

    【CATIA二次开发】CATVBA中四个延时方法Timer函数,Sleep函数,TimeGettime函数,Adddate函数的相关视频课程

    【CATIA二次开发】CATVBA中四个延时方法Timer函数,Sleep函数,TimeGettime函数,Adddate函数的相关案例教程

    我们在做CATIA 二次开发的时候,有的情况下需要暂停程序运行,让CATIA飞一会。 那么,CATIA VBA 获取延时较为可行的四个方法: 1、一般延时 Timer函数(计时单位为秒级,1代表1s) 一个应用接口需要限制运行速度,需要在循环中加个延时函数,这个延时不需要多么精确,要求有个几秒延时,网上用的比较多的就是用Timer函数编写,也是在VB联机手册中所推荐的Timer是VBA自带的函数,
    01 方法一 第一种方法:利用设计表导出CATIA文件参数。 我们想要导出如下结构树中的参数:length,width,height,radius,density。 采用设计表方法,基于现有参数创建设计表。 选定想要导出的所有参数,必要的时候使用过滤器进行过滤,此处我们只导出用户参数,所以进行了用户参数过滤。 选择导出txt文本到本地,打开txt文本便可以看见我们导出的参数。 关于设计表的具体操作
    简介:FRED作为COM组件可以实现与Excel、VB、Matlab等调用来完成庞大的计算任务或画图,本文的目的是通过运行一个案例来实现与Matlab的相互调用,在此我们需要借助脚本来完成,此脚本为视为通用型脚本。 配置:在执行调用之前,我们需要在Matlab命令行窗口输入如下命令: enableservice('AutomationServer', true) enableservice('Au
    大家好,CATIA软件没有一键关闭当前所有文件这个功能,但是有的时候我们打开的当前文件太多(如下图一下打开了几十个文件),想要一次将其关闭掉,又不想从“任务管理器”直接终止CATIA软件的运行,那么这个时候我们就要想办法通过二次开发来实现这一目标。 代码非常简单: Sub CATMain() On Error Resume Next For i = 1 To 1000 CATIA.ActiveDo
    简介:本文是以十字元件为背景光源,经过一个透镜元件成像在探测器上,并显示其热成像图。 成像示意图 首先我们建立十字元件命名为Target 创建方法: 面1 : 面型:plane 材料:Air 孔径:X=1.5, Y=6,Z=0.075,形状选择Box 辅助数据: 首先在第一行输入temperature :300K, emissivity:0.1; 面2 : 面型:plane 材料:Air 孔径:X
    影响力
    粉丝
    内容
    获赞
    收藏
      项目客服
      培训客服
      0 0