目 录

  • Blog Links
  • 一、前言
  • 二、单行文本
    • 2.1. 创建新文本
    • 2.2. 对齐方式
    • 2.3. 文本缩放
  • 三、多行文本
  • 四、文本样式
    • 4.1. 创建文字样式
    • 4.2. 将特定文字样式设为当前
    • 4.3. 设置字体
      • 4.3.1. 为当前文本样式设置字体
      • 4.3.2. 为特定文本样式设置字体
    • 4.4. 设置字体倾斜角度
  • 五、尺寸标注
    • 5.1. 线性及旋转线性标注
    • 5.2. 对齐标注
    • 5.3. 角度标注
    • 5.4. 弧长标注
    • 5.5. 直径及半径标注
  • 六、标注样式
    • 6.1. 创建新标注样式
    • 6.2. 将特定标注样式设为当前
    • 6.3. 设置尺寸线及尺寸界限
      • 6.3.1. 超出标记
      • 6.3.2. 基线间距
      • 6.3.3. 超出尺寸线
      • 6.3.4. 起点偏移量
    • 6.4. 设置箭头
      • 6.4.1. 设定尺寸线箭头类型
      • 6.4.2. 设定引线箭头
      • 6.4.3. 尺寸线箭头大小
    • 6.5. 设置标注文字
      • 6.5.1. 标注文字样式
      • 6.5.2. 标注文字高度
      • 6.5.3. 标注文字位置
      • 6.5.4. 标注文字对齐
      • 6.5.5. 标注文字替代
    • 6.6. 设置主单位
      • 6.6.1. 线性标注精度
      • 6.6.2. 小数分隔符
    • 6.7. 设置永久标注样式
  • 七、多重引线
    • 7.1. 创建多重引线
    • 7.2. 设置箭头大小
    • 7.3. 设置基线长度
    • 7.4. 设置基线间隙
    • 7.5. 指定文字样式
    • 7.6. 指定文字内容
  • 八、尾声

Blog Links

  • DalNur | 博客总目录

  • Python 二次开发 AutoCAD 简介

  • Python 二次开发 AutoCAD 设置

  • Python 二次开发 AutoCAD 图层

  • Python 二次开发 AutoCAD 绘图

  • Python 二次开发 AutoCAD 修改

  • Python 二次开发 AutoCAD 块组

  • Python 二次开发 AutoCAD 注释

  • Python 二次开发 AutoCAD 文件

  • Python 二次开发 AutoCAD 选择集

一、前言

  标注是向图形中添加测量注释的过程,我们可以为各种对象沿各个方向创建标注。要简化图形组织和标注缩放,建议在图纸空间上创建标注,而不是在模型空间中创建标注。

#!/usr/bin/env python
# -*- coding: utf-8 -*-'''
=============================
Author: DalNur
Email: liyang@alu.hit.edu.cn
=============================
'''from pyautocad import Autocad
from pyautocad import APoint
import mathacad = Autocad(create_if_not_exists = True)
acad.prompt("Hello! AutoCAD from pyautocad.")
print(acad.doc.Name)

二、单行文本

2.1. 创建新文本

textString = "Harb Insti of Tec"
insertPnt = APoint(0, 0)
height = 2.5
textObj = acad.model.AddText(textString, insertPnt, height)# textString:文本内容;height:字高;# 系统默认对齐夹点位于文字基线左侧;# 采用系统默认对齐方式时,insertPnt为对齐夹点的位置坐标;# 当用户自定义对齐方式时,insertPnt以对齐方式中的为准。

2.2. 对齐方式

AlignNum = 7
textObj.Alignment = AlignNum# AlignNum为对齐夹点位置标识号,其取值范围为[0,14];# 0 基线左对齐、1 基线居中对齐、2 基线右对齐;# 7 表示对齐夹点位于 top cennter;
insertPnt = APoint(0, 10)
textObj.TextAlignmentPoint = insertPnt# 设置对齐夹点在图纸空间中的绝对位置,可为任意一已知点;# 若用户自定义对齐方式,则需设置此项。
Item enum Item enum Item enum Item enum
acAlignmentLeft 0 acAlignmentMiddle 4 acAlignmentTopRight 8 acAlignmentBottomLeft 12
acAlignmentCenter 1 acAlignmentFit 5 acAlignmentMiddleLeft 9 acAlignmentBottomCenter 13
acAlignmentRight 2 acAlignmentTopLeft 6 acAlignmentMiddleCenter 10 acAlignmentBottomRight 14
acAlignmentAligned 3 acAlignmentTopCenter 7 acAlignmentMiddleRight 11

对齐夹点

2.3. 文本缩放

BasePoint = insertPnt
ScaleFactor = 5
textObj.ScaleFactor = 5# 水平方向文本缩放,即只缩放字宽(x方向),不缩放字高(y方向);# ScaleFactor为比例系数,非负,>1为放大,<1为缩小。宽度因子
textObj.ScaleEntity(BasePoint, ScaleFactor)# 两个方向同步缩放;# 基点与insertPnt重合,文字放大后对齐夹点位置保持不变。

三、多行文本

四、文本样式

4.1. 创建文字样式

txtStyleObj = acad.ActiveDocument.TextStyles.Add("HIT_TxtStyle")

4.2. 将特定文字样式设为当前

acad.ActiveDocument.ActiveTextStyle = acad.ActiveDocument.TextStyles.Item("Standard")

4.3. 设置字体

4.3.1. 为当前文本样式设置字体

acad.ActiveDocument.ActiveTextStyle.SetFont("楷体", False, False, 1, 0 or 0)# acad.ActiveDocument.ActiveTextStyle.SetFont(Typeface, Bold, Italic, charSet, PitchandFamily)# Typeface 字体名称;# Bold 加粗,布尔值,False为不加粗字体;# Italic 倾斜,布尔值,False为倾斜字体;# CharSet 字体字符集,1为默认字符集;# PitchAndFamily 字节及笔画形式。

4.3.2. 为特定文本样式设置字体

acad.ActiveDocument.TextStyles.Item("HIT_TxtStyle").SetFont("宋体", False, False, 1, 0 or 0)

4.4. 设置字体倾斜角度

txtStyleObj.ObliqueAngle = math.radians(30)# 倾斜角度变化范围为[-85,85],取正值时右偏。

五、尺寸标注

5.1. 线性及旋转线性标注

import math
XLine1Point = APoint(5, 25)
XLine2Point = APoint(25, 35)
DimLineLocation = APoint(10, 20)
RotationAngle = math.radians(0)
dimRotObj = acad.model.AddDimRotated(XLine1Point, XLine2Point, DimLineLocation, RotationAngle)# XLine1Point 第一尺寸界线的起点;# XLine2Point 第二尺寸界线的起点;# DimLineLocation 尺寸线定位点,尺寸线或其延长线过该点;# RotationAngle 尺寸线与水平方向的夹角,去弧度制;# RotationAngle=0 水平标注,RotationAngle=90 竖直标注。

5.2. 对齐标注

ExtLine1Point = APoint(5, 25)
ExtLine2Point = APoint(25, 35)
TextPosition = APoint(-5, 25)
dimAliObj = acad.model.AddDimAligned(ExtLine1Point, ExtLine2Point, TextPosition)# ExtLine1Point 第一尺寸界线的起点;# ExtLine2Point 第二尺寸界线的起点;# TextPosition 尺寸线定位点,尺寸线或其延长线过该点。# dimObj.Update

5.3. 角度标注

AngleVertex = APoint(0, 0)
FirstEndPoint = APoint(6, 8)
SecondEndPoint = APoint(6, -8)
TextPoint = APoint(10, 10)
dimAngObj = acad.model.AddDimAngular(AngleVertex, FirstEndPoint, SecondEndPoint, TextPoint)# AngleVertex 角度顶点;# FirstEndPoint 第一尺寸界线端点;# SecondEndPoint 第二尺寸界线端点;# TextPoint 尺寸圆弧线定位点,即尺寸圆弧线过该点。

5.4. 弧长标注

ArcCenter = APoint(0, 0)
FirstEndPoint = APoint(6, 8)
SecondEndPoint = APoint(6, -8)
ArcPoint = APoint(20, 0)
dimArcObj = acad.model.AddDimArc(ArcCenter, FirstEndPoint, SecondEndPoint, ArcPoint)# ArcCenter 圆弧中心;# FirstEndPoint 第一尺寸界线端点;# SecondEndPoint 第二尺寸界线端点;# ArcPoint 尺寸圆弧线定位点,即尺寸圆弧线过该点。

5.5. 直径及半径标注

ChordPoint = APoint(0, 10)
FarChordPoint = APoint(0, -10)
LeaderLength = 40
dimDiaObj = acad.model.AddDimDiametric(ChordPoint, FarChordPoint, LeaderLength)# ChordPoint 圆任意一直径的端点;# FarChordPoint 直径的另一端点;# LeaderLength 引线长度,为点ChordPoint到标准文字定位夹点的距离;# 标注类型可在相应的系统变量如DIMUPT等中更改。
Center = APoint(0, 0)
ChordPoint = APoint(10, 0)
LeaderLength = 10
dimRadObj = acad.model.AddDimRadial(Center, ChordPoint, LeaderLength)# Center 被标注圆或圆弧的圆心

六、标注样式

标注类术语

6.1. 创建新标注样式

DimStyleObj = acad.ActiveDocument.DimStyles.Add("HIT_DimStyle")
print(dimAliObj.StyleName) # 打印标注对象的标准样式名称# 系统自带标注样式 ISO-25

6.2. 将特定标注样式设为当前

acad.ActiveDocument.ActiveDimStyle = acad.ActiveDocument.DimStyles.Item("HIT_DimStyle")

6.3. 设置尺寸线及尺寸界限

  说明: 以下即 (3) ~ (6) 的设置将生效为<样式替代>,程序自动画图时<样式替代>不起作用,新添加的标注仍采用系统默认。手动画图时<样式替代>起作用,新添加的标注<样式替代>。

  设置永久标注样式见 (7),后续添加详细代码。

  标注样式替代是对当前标注样式中的指定设置所做的更改,它与在不更改当前标注样式的情况下更改尺寸标注系统变量等效。使用标注样式替代,无需更改当前标注样式便可临时更改标注系统变量。

6.3.1. 超出标记

acad.ActiveDocument.SetVariable("DIMDLE", 0)# 当箭头使用倾斜、建筑标记、积分和无标记时尺寸线超过尺寸界线的距离。

6.3.2. 基线间距

acad.ActiveDocument.SetVariable("DIMDLI", 3.75)# 设定尺寸线之间的距离;# 如有必要,每条尺寸线都将按此值偏离其前一尺寸线,以避免覆盖它。

6.3.3. 超出尺寸线

acad.ActiveDocument.SetVariable("DIMEXE", 1.25)  # 指定尺寸界线超出尺寸线的距离。

6.3.4. 起点偏移量

acad.ActiveDocument.SetVariable("DIMEXO", 0.625)  # 设定自图形中定义标注的点到尺寸界线的偏移距离。

6.4. 设置箭头

6.4.1. 设定尺寸线箭头类型

acad.ActiveDocument.SetVariable("DIMBLK", "_ARCHTICK")  # "_ARCHTICK"表示建筑标记

6.4.2. 设定引线箭头

acad.ActiveDocument.SetVariable("DIMLDRBLK", "")  # ""表示实心闭合

6.4.3. 尺寸线箭头大小

acad.ActiveDocument.SetVariable("DIMASZ", 2.5)

6.5. 设置标注文字

6.5.1. 标注文字样式

acad.ActiveDocument.SetVariable("DIMTXSTY", "HIT_TxtStyle")

6.5.2. 标注文字高度

acad.ActiveDocument.SetVariable("DIMTXT", 2.5)# 设定当前标注文字样式的高度;# 如果在此选项卡上指定的字样式具有固定的文字高度,则该高度将替代在此处设置的文字高度;# 如果要在此处设置标注文字的高度,请确保将文字样式的高度设置为 0。

6.5.3. 标注文字位置

acad.ActiveDocument.SetVariable("DIMTAD", 1)# 控制标注文字相对尺寸线的垂直位置;# 0 表示标注文字在尺寸界线之间居中放置;# 1 表示将标注文字放置在尺寸线上方,从尺寸线到文字最低基线的距离为当前 DIMGAP 的值。
acad.ActiveDocument.SetVariable("DIMJUST", 0)# 水平控制标注文字在尺寸线上相对于尺寸界线的水平位置;# 0 表示将文字置于尺寸线之上,并在尺寸界线之间置中对正。
acad.ActiveDocument.SetVariable("DIMGAP", 0.625)# 设定文字相对尺寸线的位置。

6.5.4. 标注文字对齐

acad.ActiveDocument.SetVariable("DIMTIH", 0)# 控制所有标注类型(坐标标注除外)的标注文字在尺寸界线内的位置;# 0 表示将文字与尺寸线对齐;# 1 表示水平绘制文字。
acad.ActiveDocument.SetVariable("DIMTOH", 0)# 控制标注文字在尺寸界线外的位置。

6.5.5. 标注文字替代

  修改实际尺寸数值为用户自定义数值。例如:标注的实际长度为20,用户自定义的数值为171,具体代码如下:

XLine1Point = APoint(5, 25)
XLine2Point = APoint(25, 35)
DimLineLocation = APoint(10, 20)
RotationAngle = math.radians(0)
dimRotObj = acad.model.AddDimRotated(XLine1Point, XLine2Point, DimLineLocation, RotationAngle)dimRotObj.TextOverride = 171 # 指定文字替代为171,即171替代20。dimRotObj.TextOverride = ""  # 恢复标注为实际尺寸数值20dimRotObj.TextOverride = "<> mm" # 恢复标注为实际尺寸数值并加个单位dimRotObj.Update()

6.6. 设置主单位

6.6.1. 线性标注精度

acad.ActiveDocument.SetVariable("DIMDEC", 2)  # 设定标注文字中的小数位数;2 表示显示小数点后三位;

6.6.2. 小数分隔符

acad.ActiveDocument.SetVariable("DIMDSEP", ".")  # "."表示小数分隔符,也可设置为","。
acad.ActiveDocument.SetVariable("DIMADEC", -1)  # 设置角度标注精度与线性标注精度相同

6.7. 设置永久标注样式

## (7)、设置永久标注样式### ①、添加三个标注样式
dimstyleobj_1 = DimStyleObj = acad.ActiveDocument.DimStyles.Add("newStyle1")
dimstyleobj_2 = DimStyleObj = acad.ActiveDocument.DimStyles.Add("newStyle2")
dimstyleobj_3 = DimStyleObj = acad.ActiveDocument.DimStyles.Add("newStyle3")### ②、为三个标注样式分别设置具体样式
dimstyleobj_1.CopyFrom(acad.ActiveDocument.ModelSpace(0))# (方法一)# 与图形空间中已存在的标注图元样式一致;# 0为模型空间中的第一个图元,此为示例;# 具体操作时0应替换为已知标注图元在图纸空间中的索引号。dimstyleobj_2.CopyFrom(acad.ActiveDocument.DimStyles.Item("newStyle1"))# (方法二)# 与标注样式newStyle1一致acad.ActiveDocument.SetVariable("DIMCLRD", 3)                # 设置尺寸线的颜色为绿色
acad.ActiveDocument.SetVariable("DIMBLK", "_ARCHTICK")      # "_ARCHTICK"表示建筑标记
acad.ActiveDocument.SetVariable("DIMASZ", 2)                 # 尺寸线箭头大小
dimstyleobj_3.CopyFrom(acad.ActiveDocument)# (方法三)# 与当前文件的设置保持一致acad.ActiveDocument.ActiveDimStyle = acad.ActiveDocument.DimStyles.Item("newStyle3")# 以下画出的标注即采用标注样式newStyle3
ExtLine1Point = APoint(5, 25)
ExtLine2Point = APoint(25, 35)
TextPosition = APoint(-5, 25)
dimAliObj = acad.model.AddDimAligned(ExtLine1Point, ExtLine2Point, TextPosition)
print(dimAliObj.styleName)# 设置永久标注样式的思路:
# 若采用方法一,则需要提前绘制好相应的标注图元,
# 如:尺寸线、尺寸界线、箭头尺寸等,以方便引用,而后删除。
# 若采用方法三,则需要利用SetVariable方法设置好相应的系统变量,而后引用。
# 方法二为直接复制已有标注样式。# 方法四(采用command方式)
# DimStyle1 = acad.ActiveDocument.DimStyles.Add("DimStyle1")      # 创建标注式样
# acad.ActiveDocument.ActiveDimStyle = DimStyle1
# acad.ActiveDocument.SetVariable("DIMCLRD", 1)
# acad.ActiveDocument.SetVariable("DIMCLRE", 1)
# acad.ActiveDocument.SetVariable("DIMEXE", 3)
# acad.ActiveDocument.SetVariable("DIMEXO", 1.75)
# acad.ActiveDocument.SetVariable("DIMFXLON", 1)
# acad.ActiveDocument.SetVariable("DIMFXL", 3)
# acad.ActiveDocument.SetVariable("DIMBLK", "_OBLIQUE")
# acad.ActiveDocument.SetVariable("DIMBLK1", "_OBLIQUE")
# acad.ActiveDocument.SetVariable("DIMBLK2", "_OBLIQUE")
# acad.ActiveDocument.SetVariable("DIMLDRBLK", "_OBLIQUE")
# acad.ActiveDocument.SetVariable("DIMASZ", 5)
# acad.ActiveDocument.SetVariable("DIMCEN", 3)
# acad.ActiveDocument.SetVariable("DIMARCSYM", 1)
# acad.ActiveDocument.SetVariable("DIMCLRT", 1)
# acad.ActiveDocument.SetVariable("DIMTXT", 4)
# acad.ActiveDocument.SetVariable("DIMTAD", 1)
# acad.ActiveDocument.SetVariable("DIMTOH", 0)
# acad.ActiveDocument.SetVariable("DIMTMOVE", 2)
# acad.ActiveDocument.SetVariable("DIMDEC", 1)
# print(chr(13))
# acad.ActiveDocument.SendCommand("-dimstyle" + chr(13) + "S" + chr(13) + "DimStyle1" + chr(13) + "Y" + chr(13))
# print("-dimstyle" + chr(13) + "S" + chr(13) + "DimStyle1" + chr(13) + "Y" + chr(13))## 其他# dimAliObj.StyleName = "ISO-25"
# dimAliObj.Update()

七、多重引线

7.1. 创建多重引线

ArrowPnt = APoint(0, 0)
BaselinePnt = APoint(10, 10)
PntsArray = np.array([ArrowPnt, BaselinePnt])
PntsArray = PntsArray.reshape(1, PntsArray.shape[0] * PntsArray.shape[1])[0]
MLeaderObj = acad.model.AddMLeader(PntsArray, 0)# ArrowPnt 箭头位置;# BaselinePnt 基线位置 ;# 1 表示多重引线的索引号,为正整数。

7.2. 设置箭头大小

MLeaderObj.ArrowheadSize = 2  # 指箭头高度;此项将覆盖系统变量DIMASZ的值。

7.3. 设置基线长度

MLeaderObj.DoglegLength = 8

7.4. 设置基线间隙

MLeaderObj.LandingGap = 3  # 基线端点到文字起点的距离

7.5. 指定文字样式

MLeaderObj.TextStyleName = "HIT_TxtStyle"

7.6. 指定文字内容

MLeaderObj.TextString = "HIT"

八、尾声

  以上,便是一些关于 AutoCAD 注释 的基本代码,因篇幅有限,某些非关键功能未做详细介绍,如有疑问,欢迎邮件来询。

  本文部分功能的实现离不开广大博友的大力帮助,有些功能看似简单,但第一次实现出来却是相当不容易的。

  鉴于,相关示例代码相对较少,特写本文,一方面是为自己的阶段性学习做一个总结,另一方面更是为有需要的人提供多一点参考。

  如果您已实现一些本文未提及的功能,还请在评论区呈现,以便为后续学习者提供更多的帮助。

  胸藏文墨怀若谷,腹有诗书气自华,希望各位都能在知识的pāo子里快乐徜徉。

  因个人水平有限,文中难免有所疏漏,还请各位大神不吝批评指正。

  最后,祝各位攻城狮们,珍爱生命,保护发际线!

  本文最早发表于 2018-12-13 18:20:21,作为博客 Python 二次开发 AutoCAD 简介 的一部分。

  为了清晰直观,于 2019-07-26 16:21:52 单独创建本文。

  本文部分内容,源于网络!

  欢迎大家点赞、评论及转载,转载请注明出处!

  为我打call,不如为我打款!

  打赏可备注邮箱,本人将赠送本系列博客的全部 Python 源代码。

Python AutoCAD 注释相关推荐

  1. Python AutoCAD 块组

    目 录 Blog Links 一.连接及库导入 二.块 2.1. 创建新块 2.2. 添加图元到块 2.3. 插入块 2.3.1. 从当前文件中插入块 2.3.2. 外部文件作为块插入 2.4. 添加 ...

  2. Python AutoCAD 设置

    目 录 Blog Links 一.前言 二.颜色设置 2.1 设置模型空间背景色 2.1 设置十字光标颜色 三.显示设置 3.1 显示线宽 3.2 显示自动捕捉靶框 3.3 显示自动捕捉标记 3.4 ...

  3. Python之print语句Python的注释

    话不多说直接切入正题 print语句可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print 'hello, world' 注意: 1. ...

  4. Python 中文注释报错解决方法

    Python 中文注释报错解决方法 参考文章: (1)Python 中文注释报错解决方法 (2)https://www.cnblogs.com/cjiong/p/5881983.html 备忘一下.

  5. Python的注释及乱码 || 变量及类型

    Python的注释及乱码 1.单行注释:以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用 2.多行注释:'''多行注释'''可以写多行的功能说明 3.Python乱码问题 由 ...

  6. Python探索记(01)——HelloWorld及Python的注释

    # @Time : 2017/7/2 11:16 # @Author : 原创作者:谷哥的小弟 # @Site : 博客地址:http://blog.csdn.net/lfdfhl # @DESC : ...

  7. python函数注释,参数后面加冒号:,函数后面的箭头→是什么?

    python的函数注释: def f(text:str,max_len:'int>0'=80) ->str:"""这个是函数的帮助说明文档,help时会显示& ...

  8. python变量标识符_简谈-Python的注释、变量类型、标识符及关键字

    在Python程序中,要想支持中文输出,则要在代码前面添加 标识符:开发人员在程序中自定义的一些符号和名称 标示符是自己定义的,如变量名 .函数名等 标识符的规则: 标示符由字目.下划线和数字组成,且 ...

  9. Python代码注释 - Python零基础入门教程

    目录 一.什么是代码注释 二.为什么写代码要注释 三.代码注释的方式 1.单行注释,使用英文符号 # 2.多行注释 方法一:英文状态下使用单引号 """ 方法二:英文状态 ...

最新文章

  1. MySQL数据库提升篇-----触发器
  2. Java8学习之旅2---基于Lambda的JDBC编程
  3. 【Verilog HDL 训练】第 14 天(glitch-free的两个时钟切换电路)
  4. JavaScript Date 对象
  5. 【转】Socket状态变迁图
  6. 解剖 Nginx ·自动脚本篇(1)解析配置选项脚本 auto/options
  7. 科大讯飞ai研究院_科大讯飞1024开发者大会:让AI赋能行业数字化升级
  8. php jpg转换为pdf文件,php使用ImageMagick将PDF文件转换为JPG文件的方法_PHP
  9. jzoj4015-数列【循环节,数论】
  10. 苹果忘记开机密码_苹果电脑忘记开机密码快速恢复的方法!
  11. 今天的绿得像碧玉的 飞鸽
  12. 解决gensim报错AttributeError: type object ‘Word2Vec‘ has no attribute ‘load_word2vec_format‘
  13. 盘点 12 款让开发效率“飞起”的 VS Code 插件
  14. 跟ArthurXF学从雅虎抓取股票数据的方法
  15. BP神经网络:feedforwardnet版回归预测
  16. mysql 数据库隔离级别_彻底搞懂mysql数据库四种隔离级别,实验实战
  17. [洛谷P1501][国家集训队]Tree II(LCT)
  18. cakephp helper ajax,在JS Helper CakePHP中手动触发事件
  19. linux开发arm音量加减代码,arm-linux学习:最简驱动模块(示例代码)
  20. GBK字库集测试求助

热门文章

  1. 15、Access数据库偏移注入
  2. 网易云音乐实时计算平台设计及实践
  3. oracle怎么退出,[转载]Oracle 11g SQL*Plus的几种启动、退出方法
  4. Typora页内跳转 ,亲测有效
  5. 博客中可用的Emoji表情符号集,拿走不谢❤️❣️
  6. win10、win11高级共享设置修改后无法保存怎么办,无法发现网络设备、无法发现共享设备怎么办?win10、win11发现网络共享设备的方法
  7. 使用完整拼音查找汉字(完整拼音,不是网上散布的首字符拼音那种方法)
  8. png转pdf, pdf转png
  9. 前端页面----昵图网(简单版)
  10. 【老九学堂】【C语言进阶】递归调用