024集——批量复制文字样式、改变文本文字样式——vba代码实现

news2024/9/22 15:28:09

CAD vba 不可直接修改文字样式的名称,可复制文字样式,文字样式名称前加特定前缀

要为对象改变文字样式,可使用 StyleName 属性。

If ent.ObjectName = "AcDbText" Then ent.StyleName = "新的"

     Set sel = creatsel("mysell")
     sel.Select acSelectionSetAll, , , ftype, fdata
     For i = 0 To sel.Count - 1
        sel.Item(i).StyleName = "新的Standard"
     Next i

原始文字样式如下:

复制后: 

代码如下:


Public Function creatsel(Optional ByVal mys As String = "mysel") As AcadSelectionSet
On Error Resume Next
Dim sel As AcadSelectionSet
   If Not IsNull(ThisDrawing.SelectionSets.Item(mys)) Then
       Set creatsel = ThisDrawing.SelectionSets.Item(mys)
       creatsel.Delete
''如果图中有名为"mysel"的选择集,那么把这个选择集放入sel中,然后删除这个选择集
    End If
''如果图中没有"mysel",那么新建一个名为"mysel"的选择集,赋给sel这个对象
Set creatsel = ThisDrawing.SelectionSets.Add(mys)
End Function

Sub copy_textstyle()
On Error Resume Next
Dim oldtextstyle As AcadTextStyle
Dim newtextstyle As AcadTextStyle
Dim ent As AcadEntity
Dim mytext As AcadText
Dim mydoc As AcadDocument
Dim mylayoutt As AcadLayout
Dim ftype(0) As Integer, fdata(0) As Variant
Dim ftype2(0) As Integer, fdata2(0) As Variant
Dim mydimstyle   As AcadDimStyle
ftype(0) = 0: fdata(0) = "text,mtext,dimension"
ftype2(0) = 0: fdata2(0) = "dimstyle"
Set mydoc = Application.ActiveDocument
Dim textstyle_count As Integer
Dim tempHeight() As String
Dim tempwidth() As String
Dim tempObliqueAngle() As String
Dim tempfontFile() As String
Dim tempname() As String
Dim j As Integer, counter_textstyle As Integer
Set alltextstyle = ThisDrawing.TextStyles
textstyle_count = ThisDrawing.TextStyles.Count
'循环老字体样式,将名称和属性放入数组
For Each oldtextstyle In ThisDrawing.TextStyles
    ReDim Preserve tempHeight(j)
    ReDim Preserve tempwidth(j)
    ReDim Preserve tempObliqueAngle(j)
    ReDim Preserve tempfontFile(j)
    ReDim Preserve tempname(j)
    tempHeight(j) = oldtextstyle.Height
    tempwidth(j) = oldtextstyle.Width
    tempObliqueAngle(j) = oldtextstyle.ObliqueAngle
    tempfontFile(j) = oldtextstyle.fontFile
    tempname(j) = oldtextstyle.Name
'    Set sel = creatsel("mysell")
'   'MsgBox "c:\windows\fonts\" & oldtextstyle.fontFile
'    sel.Select acSelectionSetAll, , , ftype, fdata
'    For i = 0 To sel.Count - 1
'    sel.Item(i).TextStyle = ThisDrawing.TextStyles.Item(2)
'        If InStr(1, sel.Item(i).StyleName, "Standard", vbTextCompare) < 1 Then
'           If sel.Item(i).StyleName = oldtextstyle.Name Then
'
'           MsgBox InStr(1, sel.Item(i).StyleName, "Standard", vbTextCompare)
'             'On Error Resume Next
'             sel.Item(i).StyleName = "新的-" & oldtextstyle.Name
'             On Error GoTo 0
'             End If
'        End If
'    Next i
    'oldtextstyle.Delete
 counter_textstyle = counter_textstyle + 1
 j = j + 1
Next oldtextstyle
'循环,创建新数组
For j = 0 To counter_textstyle - 1
    Set newtextstyle = ThisDrawing.TextStyles.Add("新的" & tempname(j))
    newtextstyle.Height = tempHeight(j)
    newtextstyle.Width = tempwidth(j)
    newtextstyle.ObliqueAngle = tempObliqueAngle(j)
    newtextstyle.fontFile = tempfontFile(j)
Next j
MsgBox "OK    CAD二次开发qq:443440204", , "qq443440204"
End Sub
  TextStyle 对象

文字样式(或称字型),已命名并保存的用于确定文字字符串外观的设置集。

VBA 类名:

AcadTextStyle 

创建方法:

TextStyles.Add 

访问途径:

TextStyles.Item
Document.ActiveTextStyle 

要控制文字样式的设置,可以用如下属性或文字样式系统变量。可在AutoCAD 命令参考 的系统变量中查看文字样式系统变量。

当前的文字样式(由 ActiveTextStyle 属性设置)决定了图形中新创建的文字和已存在的没有指定明确文字样式的文字的外观。

如果当前 TextStyle 中的格式有所更改,更改后的 TextStyle 对象必须重置为当前 TextStyle,而且必须调用 Regen 方法来改变显示。要重置当前 TextStyle,只需使用 ActiveTextStyle 属性再调用已更新的 TextStyle 对象。

为对象指定其它文字样式可让其不随当前文字样式的改变而改变,要为对象指定文字样式,可使用 StyleName 属性。

方法

Delete

GetExtensionDictionary

GetFont

GetXData

SetFont

SetXData  

属性

Application

BigFontFile

Document

FontFile

Handle

HasExtensionDictionary

Height

LastHeight

Name

ObjectID

ObjectName

ObliqueAngle

OwnerID

TextGenerationFlag

Width  

事件

Modified  

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

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

相关文章

【C#】读取与写入txt文件内容

在 C# 中读取和写入文本文件内容是一个常见的任务。以下是使用几种不同方法读取和写入文本文件的示例。 一、读取txt文件内容 1.1 使用 StreamReader using System; using System.IO;class Program {static void Main(){string filePath "C:\path\to\your\file.txt&qu…

【Unity打包Android】Gradle报错,Deprecated Gradle features were used in this build ···

Unity 2020.3.41f1c1 打包Android 加入Google Admob广告SDK后&#xff0c;打包Android失败&#xff0c;具体报错如下&#xff1a; 报错1&#xff1a; Starting a Gradle Daemon, 2 stopped Daemons could not be reused, use --status for details> Configure project :l…

Hutool找出对象修改前后的字段变化

首先Maven引入Hutool依赖&#xff1a; <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.21</version> <!-- 请根据实际最新版本调整 --></dependency> 测试&#xff1a; 1…

OpenAI API error: “Unrecognized request argument supplied“

题意&#xff1a;OpenAI API 错误&#xff1a;‘提供了无法识别的请求参数’ 问题背景&#xff1a; Im receiving an error when calling the OpenAI API. Its not recognizing file argument, which I submitted to the API. 我在调用 OpenAI API 时遇到错误。API 不识别我提…

python语言day6 os random datetime .ini文件

os&#xff1a; 获取运行当前py文件的绝对路径&#xff1a; abspath中添加路径&#xff0c;会直接和绝对路径拼接。 folder_path os.path.abspath("") print(folder_path) 路径拼接&#xff1a; mac系统路径&#xff1a;file/TranslucentTB win系统路径&#xff1a;…

日撸Java三百行(day23:使用具有通用性的队列)

目录 前言 一、基础知识准备 1.Object类 2.Integer类 2.1包装类 2.2装箱和拆箱 2.3Integer类的常见方法 二、代码实现 1.队列创建及初始化 2.方法创建 3.数据测试 4.完整的程序代码 总结 前言 在昨天&#xff0c;我们使用了两个队列来辅助完成二叉树的“压缩顺序…

Android gradle 构建

Understanding Tasks - Gradle task kapt 是 Kotlin 语言的注解处理器&#xff0c;它是 Android Studio 中用于处理 Kotlin 注解的工具。它通过在编译期间生成代码来增强 Kotlin 代码的功能。需要 Kotlin 编译器来解析和处理注解&#xff1b;使用 APT 来生成代码&#xff0c…

【通天星主动安全监控云平台信息泄露漏洞】

目录 一、漏洞简介 二、资产测绘 三、poc利用 四、脚本批量验证 一、漏洞简介 “通天星主动安全监控云平台”是一个基于云计算技术的安全监控平台&#xff0c;通常用于保障网络安全、工业控制系统安全或物联网设备的安全。该信息泄露漏洞位于接口&#xff1a;/808gps/Stand…

可移植性(兼容性)测试指南

可移植性是指应用程序能够安装到不同的环境中&#xff0c;在不同的环境中使用&#xff0c;甚至可以移动到不同的环境中。当然&#xff0c;前两者对所有系统都很重要。就PC软件而言&#xff0c;鉴于操作系统、共存和互操作应用程序、硬件、带宽可用性等方面的快速变化&#xff0…

JavaScript秒值转换为年月日时间字符串

当前效果&#xff1a; 因为后端传递过来的是秒值&#xff0c;显示的时候也是秒值。 但是这种不太友好&#xff0c;所以需要转换为 “xxxx年xx月xx日 xx:xx:xx” 的格式。 参考代码&#xff1a; formatDate (now) {const date new Date(now)var y date.getFullYear() // 年…

Springboot3 自定义全局异常与异常捕获

全局异常构建 package com.lingyang.system.util.exception;import lombok.Getter;/*** author **文* Description:* createDate 2024/8/8 15:20**/ Getter public class TokenErrotException extends RuntimeException{private final String errorMessage;public TokenErrotE…

三维点云深度网络 PointNeXt 源码阅读 (III) —— 骨干网络模型

Title: 三维点云深度网络 PointNeXt 源码阅读 (III) —— 骨干网络模型 (BaseSeg、PointNextEncoder、PointNextDecoder、SetAbstraction 和 FeaturePropogation) 文章目录 前言I. 整体模型 —— Tier 01. 模型对象的建立2. BaseSeg 模型类 II. 编码器与解码器 —— Tier 11. P…

基于区块链的金融凭证应用开发

基于区块链的金融凭证应用开发 这个项目旨在开发一个基于区块链技术的金融凭证应用平台,用于提升供应链金融中应收账款管理的效率和透明度。通过将应收账款资产上链,并利用智能合约实现债权凭证的转让与拆分,项目目标是降低融资成本、增强信用分析能力,并推动供应链金融的…

昂科烧录器支持Cmsemicon中微半导体的8位微控制器CMS79F1239

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中Cmsemicon中微半导体的8位微控制器CMS79F1239已经被昂科的通用烧录平台AP8000所支持。 CMS79F1239为中微半导体自主8位RISC内核单片机&#xff0c;工作电压1.8V~5.5V&#xff…

JSONP解决前端跨域学习案例

JSONP 的工作原理 JSONP利用的是 前端代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><ti…

性能测试-性能测试工具wrk,Apache ab,ngrinder,locust,jmeter和loadrunner

性能测试工具&#xff1a; 企业中主流性能测试工具&#xff1a; jmeter jmeter&#xff1a; java开发的开源&#xff0c;线程、学习很低&#xff0c;接口、自动化、性能测试、第三方性能测试从jmeter扩展 loadrunner&#xff1a; 商业 loadrunner&#xff08;录播&#xff09;…

商业环境洞察:PEST分析法全解析

PEST 分析法是什么 PEST 分析作为一种企业战略规划中的关键工具&#xff0c;主要用于评估企业所处的宏观环境。"P"代表政治因素&#xff0c;涉及政府政策、法律法规及其对企业运营的潜在影响。"E"指的是经济环境&#xff0c;包括经济增长、汇率波动、通货…