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

news2024/11/26 22:43:06

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

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

一、可实现多芯电缆不同结构分层的图纸

 二、可实现复杂芯数电缆不同结构分层的图纸

三、可实现立体出图

 

 基于VBA实现的电缆结构自动出图有以下几个特点:

1、低成本高效率,首先不用额外安装软件,基于Excel就可以实现,同时只要输入数据,就可自动出图,避免使用画图软件,耽误较长时间画图。

2、可编辑性强,编辑Excel,就可以添加或减少结构。

3、可移植性强,换句话说,可以在任何电脑上操作,不用担心软件限制。

4、渲染的结果不输画图软件,而且颜色可通过索引号较快调整,应付紧急出图绰绰有余。

关键代码段(以下代码为实现复杂结构,即多层芯数的关键):

ReDim cable(Cn), TB(Cn)
ReDim cable_index(Cn), TB_index(Cn)
Dim cable_c, arr_c As Variant
   arr_c = Sheet2.Range("B2:B13")
   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 * (1 / Sin(3.1416 / C1)) * Sin(2 * i * 3.1416 / C1)
         .IncrementTop -0.5 * id * (1 / Sin(3.1416 / C1)) * Cos(2 * i * 3.1416 / C1)
         End If
         End With

    Next
    
     For j = 1 To C2
      Set TB(j + C1) = Sheet1.Shapes.AddShape(msoShapeOval, X, Y, id, id)
      TB_index(j + C1) = TB(j + C1).Name
        TB(j + C1).Select
        With Selection.ShapeRange
        tc = cable_c(j + C1)
         With .Fill
        .Visible = msoTrue
        .ForeColor.SchemeColor = tc
         End With
         With .Line
        .Weight = 0.5
        .ForeColor.SchemeColor = 64
         End With
        End With
       
       
       Set cable(j + C1) = Sheet1.Shapes.AddShape(msoShapeOval, X, Y, td, td)
       cable_index(j + C1) = cable(j + C1).Name
       cable(j + C1).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(j + 1 + C1, j + C1)).Select
         Selection.ShapeRange.Group.Select
        
         With Selection.ShapeRange
         If C1 = 1 Then
            di = id
         Else
         di = id * (1 / Sin(Pi / C1))
         End If
          If C1 = 1 Then
         .IncrementLeft 0.5 * (di + id) * Sin(2 * j * 3.1416 / C2)
         .IncrementTop -0.5 * (di + id) * Cos(2 * j * 3.1416 / C2)
         End If
            
         
         If C1 > 1 Then
         .IncrementLeft 0.5 * (di + 2 * id) * Sin(2 * j * 3.1416 / C2)
         .IncrementTop -0.5 * (di + 2 * id) * Cos(2 * j * 3.1416 / C2)
         End If
         End With
    Next

总结

这一系列文章暂时结束了,总体看基于VBA实现的电缆结构自动出图,代码理解不是很难,但是如果涉及结构变化或防错,还有很多工作要做,在这里就不过多介绍了。

如果大家不想自己研究,想简单点,那么大家可以到我的资源处下载。

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

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

相关文章

重点| 系统集成项目管理工程师考前50个知识点(5)

本文章总结了系统集成项目管理工程师考试背记50个知识点!!! 帮助大家更好的复习,希望能对大家有所帮助 比较长,放了部分,需要可私信!! 30、活动之间的四种依赖关系: 强…

[附源码]Node.js计算机毕业设计高校互联网班级管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Redis 压力测试 服务监控

Redis 压力测试 & 服务监控 Redis 压力测试 Redis 安装成功后,会在 /usr/local/bin/目录下生成redis-benchmark压测工具。该工具模拟N个客户端同时执行Redis指令,默认提供一组默认测试参数,用户可以自定义其属性,更改测试行…

java开发必备技能:mysql

mysql 架构 连接器 mysql的连接器负责处理mysql客户端的连接请求及维护连接。 传输协议 mysql支持多种传输协议,不同的平台可以选择不同的协议: 连接压缩控制 mysql建立的连接可以对客户端和服务器之间的流量进行压缩,以减少通过连接发…

Rock派(基于瑞芯微RK3308B)开发记录-上篇

本文作者:Linux兵工厂,一个嵌入式软件领域的攻城狮。欢迎指教公一众-号:Linux兵工厂,获取硬核Linux资料和文章 前言 根据项目需求并且经过各方面评估最终选择了这款Rock Pi(Rock派)系列中的Rock Pi S产品。正式它的各方面的特性…

马士兵-郑金维—并发编程—6.JUC并发工具

JUC并发工具 一、CountDownLatch应用&源码分析 1.1 CountDownLatch介绍 CountDownLatch就是JUC包下的一个工具,整个工具最核心的功能就是计数器。 如果有三个业务需要并行处理,并且需要知道三个业务全部都处理完毕了。 需要一个并发安全的计数器来操作。 CountDown…

Web大学生网页作业成品 :黑色主题个人博客网站设计与实现(HTML+CSS+JavaScript)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

基于java+springmvc+mybatis+vue+mysql的农业信息管理系统

项目介绍 农业信息的需求和管理上的不断提升,农业信息管理的潜力将无限扩大,农业信息管理系统在业界被广泛关注,本系统对此进行总体分析,将农业信息管理的发展提供参考。农业信息管理系统对农业信息有着明显的带动效应&#xff0…

【统一融合:拉普拉斯算子:GAN框架】

UIFGAN: An unsupervised continual-learning generative adversarial network for unified image fusion (UIFGAN:一个无监督不断学习生成对抗网络统一的图像融合) 本文提出了一种新的无监督连续学习生成对抗网络(UIFGAN)用于统…

阿里资深架构师熬夜纯手写的238页微服务容器化开发实战笔记

本文将分为目录、主要内容和大牛对本文的高度评价三部分组成,因为内容比较多,小编只能把部分知识点和目录拿出来给大家介绍,希望大家能够理解!!! 本文目录 本文包括的主要内容 微服务和 Docker容器技术是目…

怎么安装 Arch Linux?

Arch Linux 是一个 x86-64 通用发行版,它流行于那些喜欢 DIY Linux 系统的用户和 Linux 铁杆粉丝当中。 本文导航 ◈ 如何安装 Arch Linux11% ◈ 安装 Arch Linux 的条件:14% ◈ 第一步:下载 ISO 文件18% ◈ 第二步:创建一个 …

磨金石教育摄影技能干货分享|世界顶级的手机摄影作品欣赏

随着手机像素越来越高,拍照功能越来越完善,手机摄影成为了越来越多人的首选,大家不再执着于单反相机。手机的方便与简捷更受非专业人士的青睐。 每到一个地方,见到不同的景色和人文,我们都可以随手掏出手机记录这些美好…

前端模板-2【vue部分小功能】

前端模板【vue部分小功能】 1 Vue部分模板 1.1 vue实现store【存储当前选中页面】 我的习惯用法,大家可自行调整【以存储当前页面名称为例】 ①在src下新建文件夹store,并创建configure.js、index.js configure.js const configure {state: {HOST: h…

LeetCode 每日一题——1945. 字符串转化后的各位数字之和

1.题目描述 1945. 字符串转化后的各位数字之和 给你一个由小写字母组成的字符串 s ,以及一个整数 k 。 首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,‘a’ 用 1 替换,‘b’ 用 …

React 入门:实战案例 TodoList 底部功能实现

文章目录目标实现效果实现已完成和全部数量统计和显示实现全选和全不选实现清除已完成功能完整代码App 组件完整代码Footer 组件完整代码通过前面的章节已经完成 TodoList 的增删改的功能,本文我们来实现底部相关功能:已完成和全部数量实时统计&#xff…

【Linux】文件系统/inode/软硬链接

目录 一.了解磁盘 1.磁盘的概念 2.磁盘的物理结构 3.磁盘的逻辑结构 4.磁盘区域的划分 二.linux文件系统 三.inode 四.软硬链接 1.软链接 2.硬链接 一.了解磁盘 前言: 一般情况下, 系统中存在大量的未被打开的文件, 这些文件全部存储在磁盘上, 也简称磁盘级文件 在li…

功能测试进阶自动化测试,一个女测试工的坎坷之路

绝大多数测试工程师都是从功能测试做起的,工作忙忙碌碌,每天在各种业务需求学习和点点中度过,过了好多年发现自己还只是一个功能测试工程师。 随着移动互联网的发展,从业人员能力的整体进步,软件测试需要具备的能力要…

从ADAS到高阶自动驾驶,车联网芯片如何赋能产业升级?

2022年,L2及L2ADAS前装搭载率正在快速提升,中国智能网联汽车产业进入了由ADAS加速向高阶自动驾驶迈进的关键期。 根据《高工智能汽车研究院》数据显示,今年1-9月前装标配搭载L2级辅助驾驶搭载量为395.19万辆,同比增长69.53%&…

Java开发必备技能:RocketMQ

官方文档可见:https://github.com/hiwei-zhang/rocketmq/tree/develop/docs/cn RocketMQ集群架构 RocketMQ由以下这几个组件组成 NameServer : 提供轻量级的Broker路由服务。Broker:实际处理消息存储、转发等服务的核心组件。Producer:消息…

69. 利用 ALV 实现增删改查系列之一:让 ALV 报表进入可编辑状态

在 CSDN 和我的知识星球里有朋友向我提出同样的问题,询问如何在 ALV 里实现增删改查操作。 虽然需求只有一句话,但是这个需求背后涉及到的知识点不少,因此笔者会通过几篇文章的篇幅,来介绍这个需求的详细实现步骤。 本文先解决第一个障碍,如何让 ALV 报表进入可编辑状态?…