030集—CAD 实现钟表时针动态转动效果——vba代码实现

news2024/9/20 1:15:24

cad图中显示动图案例如下:

部分代码如下:

 (按下Esc键可退出)


#If VBA7 Then
  ' 64位系统声明
  Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
  ' 32位系统声明
  Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
#If VBA7 Then
    ' 64位系统声明
    Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
#Else
    ' 32位系统声明
    Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
#End If
Sub CreateClock()
    ' cad二次开发代码yngqq443440204@2024年8月27日19:34:59
    'MsgBox "按下Esc键退出,CAD二次开发qq:443440204", , "CopyRight@yngqq"
    Dim v As Integer
    v = 15 '倍速
    Dim escapePressed As Boolean
    escapePressed = False
    Dim doc As AcadDocument
    Set doc = ThisDrawing

    ' Step 1: 创建钟表外框(圆形)
    Dim center(0 To 2) As Double
    center(0) = 0: center(1) = 0: center(2) = 0
    Dim center1(0 To 2) As Double
    center1(0) = 1000: center1(1) = 1000: center1(2) = 0
    Dim radius As Double
    radius = 10
   Dim outerCirclearr(0) As AcadEntity
    ' 创建外框圆
    Dim outerCircle As AcadCircle
    Set outerCircle = doc.ModelSpace.AddCircle(center, radius)
    Set outerCircle1 = doc.ModelSpace.AddCircle(center, 33)
   Set outerCirclearr(0) = outerCircle
   Set myl = ThisDrawing.Layers.Add("图层1")
  ' myl.transparency = 90
    ' Step 2: 填充外框
    Dim hatch As AcadHatch
    Set hatch = doc.ModelSpace.AddHatch(acHatchPatternTypePreDefined, "SOLID", True)
   hatch.Layer = "图层1"
    
    hatch.AppendOuterLoop (outerCirclearr)
    hatch.color = 12
   'hatch.transparency = True ' 设置透明度
    hatch.Evaluate

    ' Step 3: 创建指针(时针 分针 秒针)
    Dim hourHand As AcadLine
    Dim minuteHand As AcadLine
    Dim secondHand As AcadLine
   
    ' 指针长度和粗细
    Dim hourLength As Double, minuteLength As Double, secondLength As Double
    hourLength = 17: minuteLength = 20: secondLength = 28
   
    Dim hourWidth As Double, minuteWidth As Double, secondWidth As Double
    hourWidth = 30: minuteWidth = 20: secondWidth = 10
    
     Dim myhour(2) As Double
      myhour(0) = hourLength
        Dim mymin(2) As Double
      mymin(0) = minuteLength
        Dim mysec(2) As Double
      mysec(0) = secondLength
    ' 创建时针 分针 秒针
    Set hourHand = doc.ModelSpace.AddLine(center, myhour)
    Set minuteHand = doc.ModelSpace.AddLine(center, mymin)
    Set secondHand = doc.ModelSpace.AddLine(center, mysec)
   
    ' 设置颜色和宽度
    hourHand.color = acBlue
    minuteHand.color = acGreen
    secondHand.color = acYellow
   
    hourHand.Lineweight = acLnWt035
    minuteHand.Lineweight = acLnWt025
    secondHand.Lineweight = acLnWt018
  
    ' Step 4: 模拟指针的走动
    Dim i As Integer
    Dim a As Double
'    For Each ent In ThisDrawing.ModelSpace
'        ent.Move center, center1
'    Next ent
    ZoomExtents
    Do
    a = GetAsyncKeyState(vbKeyEscape)
         If GetAsyncKeyState(vbKeyEscape) <> 0 Then
            escapePressed = True
         End If
        ' 旋转指针
        RotateEntity hourHand, center, 6 * (-1) / 360 * v
        RotateEntity minuteHand, center, 6 * (-1) / 60 * v
        RotateEntity secondHand, center, (-6) * v
       
        ' 刷新视图
        'doc.Regen acActiveViewport
         hourHand.Update
         minuteHand.Update
         secondHand.Update
        ' 暂停以创建动画效果
       Sleep 100
        DoEvents
       If escapePressed Then
            ThisDrawing.Utility.Prompt "检测到ESC键,退出循环 " & vbCrLf
            MsgBox "已按下Esc键,CAD二次开发qq:443440204", , "CopyRight@yngqq"
            Exit Do
        End If
     Loop
End Sub

' RotateEntity函数:旋转实体
Sub RotateEntity(entity As AcadEntity, basePoint As Variant, angle As Double)
    entity.Rotate basePoint, angle * 3.14159 / 180
End Sub






缩小视图,完整预览整个钟表,可使用如下代码:ZoomScaled 0.8, acZoomScaledRelative

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2083446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

95.SAP MII功能详解(08)Workbench-Transaction介绍

目录 1.Transaction 2.Properties of transaction 1.Transaction You use transactions to access data from multiple sources and execute processes, which are triggered synchronously or asynchronously.您可以使用事务从多个源访问数据并执行同步或异步触发的流程。…

期权新手交易必看!50ETF期权和沪深300ETF期权分享

今天带你了解期权新手交易必看&#xff01;50ETF期权和沪深300ETF期权分享。上证 50ETF期权和沪深 300ETF期权是国内ETF期权最早上市的两个品种&#xff0c;也是交易量及活跃度最高的两个品种。 50ETF期权 上证50ETF期权就是在你支付一定额度的权利金后&#xff0c;获得了在未…

构建一个资源控制面板:模拟 CPU 和内存负载

构建一个资源控制面板&#xff1a;模拟 CPU 和内存负载 每个人都会有一段异常艰难的时光。生活的压力&#xff0c;工作的失意&#xff0c;学业的压力&#xff0c;爱的惶惶不可终日&#xff0c;挺过来的,人生就会豁然开朗&#xff0c;挺不过来的、时间也会教你&#xff0c;怎么与…

记一次事务里发普通消息的线上问题排查过程

1 结论 结论先行&#xff1a;事务MQ的使用场景&#xff0c;使用方式一定得正确&#xff0c;稍有不慎&#xff0c;可能就会带来数据不一致问题。 2 问题背景及现象 3 排查过程 3.1 初次分析 发现问题&#xff0c;及时修复&#xff0c;加完锁上线&#xff0c;以为问题修复了&a…

const、inline、nullptr的使用

目录 1.const引用 1.1权限的放大 1.2权限的缩小 2.inline 3.nullptr 1.const引用 可以引用一个const对象&#xff0c;但是必须用const引用。const引用也可以引用普通对象&#xff0c;因为对象的访 问权限在引用过程中可以缩小&#xff0c;但是不能放大。 不需要注意的是…

C#从入门到精通(20)—C#目录类Directory用法总结

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;人工智能学习网站 前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任…

【硬核】开源的高性能轻量级ORM框架

简介 easy-orm是一款简洁、轻量高效的数据库对象关系映射框架&#xff0c;它的代码编写规范基于SQL语义&#xff0c;学习成本低&#xff0c;可以快速掌握。 下图是与业界mybatis-plus框架相比。 功能mybatis-pluseasy-orm单表CRUD√√多表CRUD√子查询x√多数据源√预编译√…

一文带你深度了解FreeRTOS信号量——二值信号量

本篇文章深度讲述FreeRTOS信号量——二值信号量的知识&#xff0c;希望我的分享对你有所帮助&#xff01; 关于FreeRTOS信号量的相关介入&#xff0c;大家可以参考一下这篇文章&#xff1a; 一文带你初探FreeRTOS信号量_freertos 二进制信号量-CSDN博客 目录 一、二值信号量简…

25届最近5年自动化考研院校分析

哈尔滨工程大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、初试大纲复试大纲 七、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定…

顺序结构就是“千里走单骑”

顺序结构&#xff0c;就是把工作分成若干个步骤&#xff0c;然后让计算机按步骤依次执行。 对于代码而言&#xff0c;顺序结构就是从上到下依次执行每一条语句。 #include<stdio.h>int main(){//The steps of putting an elephant into the fridge.printf("First,…

【Python知识宝库】掌握列表与元组,轻松处理数据集合

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 在Python编程中&#xff0c;列表&#xff08;List&#xff09;和元组&#xff08;Tuple&#xff09;是两种非常基础且强大…

Unity实战案例 2D小游戏HappyGlass(游戏管理类脚本)

本案例素材和教程都来自Siki学院&#xff0c;十分感谢教程中的老师 本文仅作学习笔记分享交流&#xff0c;不作任何商业用途 基础效果 游戏管理脚本 using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using Uni…

FineBI修改地图配置

前言 在使用FineBI绘制地图时&#xff0c;有时候我们可能发现FineBI中的默认地图模型不是最新的&#xff0c;导致某些地区的区域地图与现实不一致&#xff0c;比如说FineBI的默认地图中深圳地图没有大鹏新区&#xff0c;并且将现在大鹏新区的地方标记为了龙华区&#xff0c;为…

Leetcode19删除链表的倒数第K个节点(java实现)

今天分享的题目如下&#xff1a; 说一下我们的解题思路&#xff1a;我们要想删除第k个节点&#xff0c;那么指针必须落在k-1节点上&#xff0c;比如我们想要操作题目中的节点4&#xff0c;那么指针必须落在节点3&#xff0c;然后让节点3.next 3.next.next即可。 所以明白了这个…

【精选】计算机毕业设计之:基于springboot汽车租赁系统

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

推荐3款免费的数据恢复软件,从此再也不怕数据丢失

Handy Recovery Handy Recovery是一款功能强大且易于使用的数据恢复软件&#xff0c;能够帮助用户恢复因误删、病毒攻击、系统崩溃等原因丢失的数据。该软件支持多种文件系统&#xff0c;包括FAT12/16/32、NTFS、NTFS5以及HFS等。它不仅可以从硬盘、闪存驱动器、U盘等设备中恢复…

Linux学习(13)计算机网络基础概论

本节学习内容 1.网络的基本概念&#xff08;网络、互联网、IP地址、MAC地址、常用网络协议&#xff09; 2.网络分层模型&#xff08;OS的7层模型与tcp/ip协议族体系4层结构、数据链路层、网络层、传输层、应用层&#xff09; 3.网络应用程序通信流程 一、网络的基本概念 1…

python可视化-直方图

1、加载数据 import pandas as pd from sklearn.datasets import load_iris import warnings# 禁用所有警告信息 warnings.filterwarnings(ignore)# 加载数据 iris load_iris() iris iris.keys() df pd.DataFrame(iris.data, columnsiris.feature_names) df[target] iris.t…

联华证券_股票特大单买入意味什么,主力入市

“股票特大单买入”通常意味着有大量资金集中在某一时刻涌入该股票&#xff0c;这往往被视为主力资金入市的迹象。以下是这一现象的详细解读&#xff1a; 1. 主力资金入市 特大单买入: 指的是单笔大额资金买入某只股票&#xff0c;通常是由机构投资者或其他大资金操盘者进行的…

动手学深度学习(pytorch)学习记录19-参数管理[学习记录]

文章目录 参数访问目标参数一次性访问所有参数从嵌套块收集参数 参数初始化内置初始化自定义初始化 参数绑定延后初始化 本节内容&#xff1a; 访问参数&#xff0c;用于调试、诊断和可视化&#xff1b; 参数初始化&#xff1b; 在不同模型组件间共享参数&#xff1b; 延后初始…