基于VBA实现电缆结构自动出图(二) —— 单芯线

news2024/11/26 0:34:03

大家敢相信吗,原来VBA竟然可以实现电缆结构自动出图,换句话说,只要输入数据,VBA会自动将电缆的结构画出来,同时还可以渲染,结果竟然不输画图软件,真真让我刮目相看。这里我就不过多介绍VBA了,相信用过office软件的小伙伴都或多或少的接触过VBA,好的,话不多说,上干货。

本章开始我们来看一下如何做单芯线,并能实现立体图。实现的结果如下:

            

电缆芯数、导体外径和芯线外径均可以调整。

    备注:1.电缆芯数圆的个数的输入框建立“数据验证”,双重保护避免出现低于0的数字,更好的防错机制。

     

2. 界面中每个输入框建立了条件格式,其目的避免出现低于0的数字。

   

 实现的代码如下:

Sub Drawcable()
If ActiveSheet.Shapes.Count > 0 Then

ActiveSheet.Shapes.SelectAll
     Selection.Delete
End If

Dim i, Cn, X, Y, Cc As Integer
Dim cable(), TB() As Shape
Dim od, cd, id, coe As Variant
Dim cable_index(), TB_index() As String
Cn = Sheet1.Range("D3").Value
C1 = Sheet1.Range("D3").Value
Pi = Application.Pi()
coe = 28.35
td = Sheet1.Range("D4").Value * coe
id = Sheet1.Range("D5").Value * coe
X = 250
Y = 300

ReDim cable(Cn), TB(Cn)
ReDim cable_index(Cn), TB_index(Cn)
Dim cable_c, arr_c As Variant
   arr_c = Sheet2.Range("B1:B12")
   cable_c = Application.Transpose(arr_c)
For i = 1 To C1
      Set TB(i) = Sheet1.Shapes.AddShape(msoShapeOval, X, Y, id, id)
      TB_index(i) = TB(i).Name
        TB(i).Select
      With Selection.ShapeRange
         tc = cable_c(i)
         With .Fill
        .Visible = msoTrue
        .ForeColor.SchemeColor = tc
         End With
         With .Line
        .Weight = 0.5
        .ForeColor.SchemeColor = 64
         End With
      End With
      
      
      Set cable(i) = Sheet1.Shapes.AddShape(msoShapeOval, X, Y, td, td)
       cable_index(i) = cable(i).Name
       cable(i).Select
       With Selection.ShapeRange
         With .Fill
        .Visible = msoTrue
        .ForeColor.SchemeColor = 13
         End With
         With .Line
        .Weight = 0.25
        .ForeColor.SchemeColor = 64
         End With
        .IncrementLeft 0.5 * (id - td)
        .IncrementTop 0.5 * (id - td)
         
       End With
      
      
      
       ActiveSheet.Shapes.Range(Array(i + 1, i)).Select
         Selection.ShapeRange.Group.Select
        
         With Selection.ShapeRange
         If C1 > 1 Then
         .IncrementLeft 0.5 * (id + Gap) * (1 / Sin(3.1416 / C1)) * Sin(2 * i * 3.1416 / C1)
         .IncrementTop -0.5 * (id + Gap) * (1 / Sin(3.1416 / C1)) * Cos(2 * i * 3.1416 / C1)
         End If
         End With

    Next
    
    
    ActiveSheet.Shapes.SelectAll
         Selection.ShapeRange.Select
         'Selection.Copy
         'Sheet1.Paste
         'Selection.Left = X - 0.5 * (od - id) - 0.5 * (id - td)
         'Selection.Top = Y - 0.5 * (od - id) - 0.5 * (id - td)
         
      If Sheet1.Range("D10") = "立体" Then
         Selection.ShapeRange.Line.Visible = msoFalse
         Selection.ShapeRange.ThreeD.Depth = 150
         Selection.ShapeRange.ThreeD.RotationX = 180
         Selection.ShapeRange.ThreeD.RotationY = 120
      ActiveSheet.Shapes.Range(cable_index).Select
         Selection.ShapeRange.ThreeD.Z = 80
      ActiveSheet.Shapes.Range(TB_index).Select
         Selection.ShapeRange.ThreeD.Z = 70
    
      End If
    
    
End Sub

代码段:

1. Shapes.AddShape(msoShapeOval, x, y, w, h)'画出一个圆形

解释:worksheet对象msoShapeOval:圆形标识符,这个是微软定死的,就这么用就对了x:圆形左位置,y:圆形上位置,w:圆形宽,h:圆形高

2. 常量coe可以更改,以便调整大小

3. ForeColor.ShemeColor为颜色,等于号后面的数字为颜色索引号,大家可在搜索中输入"颜色索引",一看就懂。

4. 立体图的命令相对简单,三维坐标设定值即可。

小结

  第二篇文章可以实现立体图,这也是VBA可以实现渲染的高级用法。

  关注我,带你体验不一样的编程乐趣。

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

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

相关文章

传奇登录器列表显示不连接

传奇登录器列表显示不连接 我们打开登录器后列表显示不连接怎么办? 图中有打码部分望读者理解(平台gz) 以下我们大家说下几种列表显示不连接的几种情况 第一种:列表格式错误 在我们开区的位置默认是127.0.0.1 端口默认7000 如果…

Django captcha验证码应用【亲测可用】

1、下载captcha安装包: pip install django-simple-captcha pip3 install pillow -i Simple Index 2、在settings的INSTALLED_APPS添加: captcha, 3、在控制台执行: 生成迁移文件:python3 manage.py makemigrations 迁移文件…

数据流标准差计算方法-不用事先计算均值

数据流标准差计算方法-不用事先计算均值 挑战 标准差(Standard Deviation)是误差有效值的估计,在信号处理里面代表偏差有效值。公式定义需要事先知道均值(引自百度百科): 数据流进来,你事先不知道均值,…

【云原生】k8s中kubectl陈述式资源管理

内容预知 1.k8s陈述资源管理方法的说明 1.1 管理k8s核心资源的三种基本方法 陈述式资源管理方法 声明式资源管理方法 GUI式资源管理方法 1.2 kubectl命令行工具 的说明 2.k8s集群中的基本信息查看 2.1 k8s中基本管理信息的查看 (1)查看版本信息 …

移动端内webview页面调试技巧

前言 长假七天乐确实很爽,只是疫情不稳定,还是呆在家里安全些, 在这宅在家的七天里,何不找点有趣的小demo耍耍 本期教大家制作一个 能播放M3U8直播源的在线电视台网站, 既能学到知识技术,又可以方便在家…

Vue之iconfont

iconfont的使用1.iconfont的使用2.多个iconfont如何做到不冲突1.iconfont的使用 1.打开iconfont官网链接 链接 2.搜索想要的图标,加入购物车 3.点击最上面一行购物车图标,添加至项目 (如果没有项目,请先到 资源管理->我的项目…

B2:Unity制作Moba类游戏——聊天系统

一场游戏对局中,和队友进行友好的有礼貌的有效的沟通可以极大提升对局胜率。在LOL国服,打字和队友聊天沟通战术是非常常见的行为: 语言的力量是无限的,甚至可以和外国小伙伴效沟通战术: 聊天系统制作起来非常简单&…

jQuery图片批量上传插件源码,支持批量上传、预览、删除、放大,可配置上传数量、上传大小、追加方式,含详细使用文档

jQuery图片批量上传插件源码,支持批量上传、预览、删除、放大,可配置上传数量、上传大小、追加方式,含详细使用文档 程序包内含使用Demo 完整程序源代码:jQuery图片批量上传插件源码 上传前 上传后 使用方法 1、先引入jquer…

linux搭建nexus私服仓库并简单使用

linux搭建nexus私服仓库并简单使用1、linux搭建nexus私服仓库1.1、下载安装包1.2、linux安装1.3、启动和关闭1.4、登录控制台1.5、账号与密码2、创建自己的私服仓库3、上传 jar 包4、具体项目引入私服仓库1、linux搭建nexus私服仓库 1.1、下载安装包 下载nexus包,这…

用Python写一个新年倒计时

❤️‍🔥前言: 春回大地,万象更新!春在招手,朋友们,我们一起互相祝愿吧!一年更比一年好。时光苒,岁月如梭。踏着新年欢快的钟声,我们又迎来了这个期待已久的日子过去的一年,我们有泪…

m基于PSO粒子群优化的柔性制造系统AGV调度模型matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在PSO中,群中的每个粒子表示为向量。在投资组合优化的背景下,这是一个权重向量,表示每个资产的分配资本。矢量转换为多维搜索空间中的位置。每个粒子也会记住它…

Word控件Spire.Doc 【超链接】教程(5):使用 C# 更改颜色或从 Word 中的超链接中删除下划线

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

STM32 ~ 定时器

定时器的基本框图: 不管是做PWM输出、定时中断还是输入捕获都肯定要搞清楚CK_INT 从哪里来,频率是多少?才能正确使用定时器。时钟肯定是来自时钟树,那我们就要去Reference manual里找找: 时钟源确实可以找到&#xf…

奈雪收购乐乐茶,茶饮品牌开启整合之路

近日,奈雪的茶以5.25亿元收购了乐乐茶43.64%的股权,成为其第一大股东。这是今年以来新式茶饮品牌最大的一笔投资,也使得奈雪的股价一路飙涨,五日涨幅超过15%,创下年内新高。 据《2022年中国新式茶饮研究报告》显示&…

【程序人生】卡塔尔世界杯吉祥物python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)

卡塔尔世界杯吉祥物python海龟绘图(附源代码) 世界杯主题前端特效5个(附源码)程序人生 本文目录: 一、python turtle海龟绘图卡塔尔世界杯吉祥物 (1)、世界杯吉祥物“Laeeb”绘制效果图 &am…

数据结构---栈和队列

栈和队列栈入栈出栈栈的JAVA实现队列入队出队循环队列栈和队列。这两者都属于逻辑结构,它们的物理实现既可以利用数组,也可以利用链表来完成。 栈 栈(stack)是一种线性数据结构,它就像一个上图所示的放入乒乓球的圆筒…

实施 GitOps 的三个关键步骤

GitOps 是一种自动化和管理基础架构和应用程序的模型,通过许多团队已经使用的相同 DevOps 最佳实践来形成的模型,例如版本控制、代码审查和 CI/CD 流水线。在实施 DevOps 时,我们找到了自动化软件开发生命周期的方法,但在基础设施…

[附源码]Python计算机毕业设计高铁乘坐舒适性在线调查及评价系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

3399的-mipi适应多个lcd屏显示-后续2-linux内核中的修改

一、前提: 1. rk3399核心板 2.linux4.4.19 源码 3. 多个MIPI显示屏的启动序列以及显示时序(重要) 4.rk3399MIPI通道0 5.接上一个uboot中的修改配置 二、内核驱动的修改 0. dts就不再给出了,请参考uboot的修改 1. 主要涉及的…

基于C#开发的(WinForm)图书管理系统【100010037】

图书管理系统项目开发说明书 项目简介 项目背景(选择这个项目的原因、前景,面向的用户,优势); * 根据学院需要希望能够充分利用现代科技来提高图书管理的效率,在原有的办公系统基础上进行扩展&#xff0c…