00X集——CAD vba 填充(hatch)及挖空

首先,画个椭圆,并填充,直接上代码:

Sub 画椭圆填充()
'2024年3月6日21:10:22 by qq443440204
Dim hat As AcadHatch '填充
Dim ell(0) As AcadEllipse '椭圆
Dim cent(0 To 2) As Double '椭圆中心点
Dim dd(0 To 2) As Double '椭圆长轴端点
'先画个椭圆
cent(0) = 400000: cent(1) = 3800000
dd(0) = 100: dd(1) = 1000  'xy轴长度
rr = 0.4 '长短轴比率
Set ell(0) = ThisDrawing.ModelSpace.AddEllipse(cent, dd, rr)
'开始填充
Set hat = ThisDrawing.ModelSpace.AddHatch(0, "AR-B816", True) '建填充对象
hat.AppendInnerLoop ell '以ell数组为边界
hat.PatternScale = 1000 '修改填充比例
hat.PatternAngle = 3.14159 / 4 '修改填充角度
ZoomExtents
End Sub

效果如下: 

再画个外围正方形,内围圆,填充中间部分。 

'2024年3月6日21:13:29 by qq443440204
Sub 空心填充()
Dim 总孔数 As Integer
Dim hobj As AcadHatch
Dim c1(0) As AcadCircle, cc1(2) As Double
Dim c2 As AcadCircle, cc2(2) As Double
Dim box(0) As AcadLWPolyline
Dim p1(2) As Double, p2(2) As Double
Dim 小孔数组() As Object
Dim mycircle(0) As AcadCircle
总孔数 = 8
Set c1(0) = ThisDrawing.ModelSpace.AddCircle(cc1, 60) '画圆
p1(0) = -100: p1(1) = -100
p2(0) = 100: p2(1) = 100
Set box(0) = 画长方形(p1, p2) '画正方形
Set hobj = ThisDrawing.ModelSpace.AddHatch(0, "ansi32", True) '建填充对象
hobj.AppendInnerLoop box '以box数组为内边界
hobj.AppendOuterLoop c1 '以c1数组为外边界
'cc2(1) = 80 '小圆y坐标
'Set c2 = ThisDrawing.ModelSpace.AddCircle(cc2, 10) '画1个小圆
'小孔数组 = c2.ArrayPolar(总孔数 + 1, 2 * 3.14, cc1) '阵列成8个,首尾相连,故+1
'c2.Delete
'Stop
'For ii = 0 To 总孔数 - 1
'  Set mycircle(0) = 小孔数组(ii)
'  hobj.InsertLoopAt 0, acHatchLoopTypeDefault, mycircle '按给定索引在图案填充中插入边界,既在填充里挖掉小孔
'Next ii
'hobj.PatternSpace = 2 '修改间距
ZoomExtents
End Sub

Function 画长方形(p1, p2) As AcadLWPolyline '用对角线画矩形
Dim boxp(0 To 7) As Double
boxp(0) = p1(0): boxp(1) = p1(1)
boxp(2) = p1(0): boxp(3) = p2(1)
boxp(4) = p2(0): boxp(5) = p2(1)
boxp(6) = p2(0): boxp(7) = p1(1)
Set 画长方形 = ThisDrawing.ModelSpace.AddLightWeightPolyline(boxp)
画长方形.Closed = True
End Function

 

最后在填充中阵列一些小圆,并挖空小圆中的填充

 

'2024年3月6日21:13:29 by qq443440204
Sub 空心填充()
Dim 总孔数 As Integer
Dim hobj As AcadHatch
Dim c1(0) As AcadCircle, cc1(2) As Double
Dim c2 As AcadCircle, cc2(2) As Double
Dim box(0) As AcadLWPolyline
Dim p1(2) As Double, p2(2) As Double
Dim 小孔数组() As Object
Dim mycircle(0) As AcadCircle
总孔数 = 8
Set c1(0) = ThisDrawing.ModelSpace.AddCircle(cc1, 60) '画圆
p1(0) = -100: p1(1) = -100
p2(0) = 100: p2(1) = 100
Set box(0) = 画长方形(p1, p2) '画正方形
Set hobj = ThisDrawing.ModelSpace.AddHatch(0, "ansi32", True) '建填充对象
hobj.AppendInnerLoop box '以box数组为内边界
hobj.AppendOuterLoop c1 '以c1数组为外边界
cc2(1) = 80 '小圆y坐标
Set c2 = ThisDrawing.ModelSpace.AddCircle(cc2, 10) '画1个小圆
小孔数组 = c2.ArrayPolar(总孔数 + 1, 2 * 3.14, cc1) '阵列成8个,首尾相连,故+1
c2.Delete
For ii = 0 To 总孔数 - 1
  Set mycircle(0) = 小孔数组(ii)
  hobj.InsertLoopAt 0, acHatchLoopTypeDefault, mycircle '按给定索引在图案填充中插入边界,既在填充里挖掉小孔
Next ii
hobj.PatternSpace = 2 '修改间距
ZoomExtents
End Sub

Function 画长方形(p1, p2) As AcadLWPolyline '用对角线画矩形
Dim boxp(0 To 7) As Double
boxp(0) = p1(0): boxp(1) = p1(1)
boxp(2) = p1(0): boxp(3) = p2(1)
boxp(4) = p2(0): boxp(5) = p2(1)
boxp(6) = p2(0): boxp(7) = p1(1)
Set 画长方形 = ThisDrawing.ModelSpace.AddLightWeightPolyline(boxp)
画长方形.Closed = True
End Function

 

 小圆半径改成40,图形发生变化:

 改成80后的图:

另附语法: 

object.InsertLoopAt Index, LoopType, Loop

Object

Hatch
使用该方法的对象。

Index

Integer[整数]; 仅用于输入
生成图案填充边界的顶点数组中的索引位置。索引必须从 0 开始的正整数。

LoopType

AcLoopType 常数; 仅用于输入

acHatchLoopTypeDefault

acHatchLoopTypeExternal

acHatchLoopTypePolyline

acHatchLoopTypeDerived

acHatchLoopTypeTextbox

Loop

Variant[变体] (对象或对象数组); 仅用于输入
形成封闭边界的对象或对象数组。如果使用是的对象数组,它们的端点必须首尾相连以形成回路。边界,或定义边界的数组,可由以下类型的对象组成:

Line, Polyline, Circle, Ellipse, Spline, Region。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【爬虫】单首音乐的爬取(附源码)

以某狗音乐为例 import requests import re import time import hashlibdef GetResponse(url):# 模拟浏览器headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0}# 发送请求…

python+django+vue房屋租赁系统 8gwmf

房屋租赁系统在设计与实施时,采取了模块性的设计理念,把相似的系统的功能整合到一个模组中,以增强内部的功能,减少各组件之间的联系,从而达到减少相互影响的目的。如房源信息、预约信息、求租信息模块等[12]。 管理员后…

常见排序算法解析

芝兰生于深林,不以无人而不芳;君子修道立德,不为穷困而改节 文章目录 插入排序直接插入排序希尔排序 选择排序直接选择排序堆排序 交换排序冒泡排序快速排序优化挖坑法前后指针法非递归版 归并排序递归非递归 总结 插入排序 插入排序&#…

STM32控制气泵和电磁阀实现

一、功能简介 使用STM32控制气泵和电磁阀的开和关,气泵和电磁阀的供电电压为12V。 二、实现过程 1、气泵和电磁阀的开和关均为开关量,实现控制方法有多种,比如继电器,但是继电器动作有噪声且体积较大,更好的方法为使…

Xilinx 7系列FPGA配置(ug470)

Xilinx 7系列FPGA配置(ug470) 配置模式串行配置模式接口从-连接方式主-连接方式串行菊花链(非同时配置)串行配置(同时配置)时序 主SPI配置模式SPIx1/x2 连接图SPIx1模式时序SPIx4 连接图SPI操作指令操作fla…

php反序列化字符逃逸

php反序列化和序列化 PHP序列化:serialize() 序列化是将变量或对象转换成字符串的过程,用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。“序列化”是一种把对象的状态转化成字节流的机制 类似于这样的结构: O:4:&quo…

【Linux】Linux网络故障排查与解决指南

🍎个人博客:个人主页 🏆个人专栏:Linux ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 检查网络连接状态: 检查路由表: 检查DNS配置: 检查网络连接状态: 检查防火墙设…

类与对象(三)--构造函数体中的赋值和初始化列表的区别

🎧1构造函数体赋值 🔎在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 ⭐️就像上述代码中的构造函数,其函数体的语句只能被称为赋予初值而不能称为初始化。因为初始化是在定义的同时赋…

解决WordPress更新插件或者更新版本报WordPress 需要访问您网页服务器的权限的问题

文章目录 前言一、原因二、解决步骤总结 前言 当对WordPress的插件或者版本进行更新时报错:要执行请求的操作,WordPress 需要访问您网页服务器的权限。 请输入您的 FTP 登录凭据以继续。 如果您忘记了您的登录凭据(如用户名、密码&#xff09…

前端面试拼图-原理源码

摘要:最近,看了下慕课2周刷完n道面试题,记录下... 1. JS内存泄漏如何检测?场景有哪些? 1.1 垃圾回收 GC 垃圾回收是一种自动管理内存的机制,它负责在运行时跟踪内存的分配和使用情况,并在不再需要的对象…

Python 开发图形界面程序

用 Python 语言开发图形界面的程序,有2种选择: Tkinter 基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少。 PySide2/PySide6 基于Qt 的Python库&#x…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:浮层)

设置组件的遮罩文本。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 overlay overlay(value: string | CustomBuilder, options?: { align?: Alignment; offset?: { x?: number; y?: number } })…

6. Gin集成redis

文章目录 一:连接Redis二:基本使用三:字符串四:列表五:哈希六:Set七:管道八、事务九:示例 代码地址:https://gitee.com/lymgoforIT/golang-trick/tree/master/14-go-redi…

跨境电商选品API商品采集API接入指南

选品是每个电商卖家的必经之路,产品的好坏将直接决定店铺的盈利、发展方向。选择合适的产品可以让卖家事半功倍,快速爆单。 用API实现代购系统和1688淘宝等平台的商品信息对接,可以免去很多选品工作。 item_get 获得淘宝商品详情item_get_p…

Maven入门(作用,安装配置,Idea基础maven,Maven依赖,Maven构建项目)【详解】

目录 一. Maven的作用 1.依赖管理 2.统一项目结构 3.项目构建 二.Maven安装配置 1. Maven的仓库类型 2 加载jar的顺序 3. Maven安装配置 4.安装Maven 5.配置仓库 三.idea集成maven 1.给当前project集成maven 2.给新建project集成maven 3.创建maven项目 4.pom…

闫震海:腾讯音乐空间音频技术的发展和应用 | 演讲嘉宾公布

一、3D 音频 3D 音频分论坛将于3月27日同期举办! 3D音频技术不仅能够提供更加真实、沉浸的虚拟世界体验,跨越时空的限制,探索未知的世界。同时,提供更加丰富、立体的情感表达和交流方式,让人类能够更加深入地理解彼此&…

Spring——Bean的作用域

bean的作用域 Bean Scope Scope说明singleton(默认情况下)为每个Spring IoC容器将单个Bean定义的Scope扩大到单个对象实例。prototype将单个Bean定义的Scope扩大到任何数量的对象实例。session将单个Bean定义的Scope扩大到一个HTTP Session 的生命周期…

Linux之cd、pwd、mkdir 命令

cd命令,切换目录 1)当Linux终端(命令行)打开的时候,会默认以用户的HOME目录作为当前的工作目录。 2)我们可以通过cd命令,更改当前所在的工作目录。 3)cd命令来自英文:C…

LeetCode-第67题-二进制求和

1.题目描述 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 2.样例描述 3.思路描述 将两个二进制字符串转换成整型,然后相加后的整型转为二进制字符串 4.代码展示 class Solution(object):def addBinary(self, a, b):# 将字符串…

11. C语言标准函数库

C语言制定了一组使用方式通用的函数,称为C语言标准函数库,用于实现编程常用功能,标准函数库由编译器系统提供,并按功能分类存储在不同源代码文件中,调用标准库内函数时需要首先使用 #include 连接对应的源代码文件。 【…