自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Halcon机器视觉

Halcon机器视觉

  • 博客(112)
  • 资源 (1)
  • 收藏
  • 关注

原创 第三章01#S7-1200对V90 PN进行位置控制

通过 ExecuteMode 的上升沿触发回零运动,在回零过程中应保持为高电平。⑵设置 IntermediateStop=0,使用当前设置的减速度值进行斜坡停车,当前运行任务保持,如果重新再设置IntermediateStop=1 后轴会继续运行,可理解为轴的暂停。通过 ExecuteMode 的上升沿触发定位运动,激活命令的当前状态或通过 EPosZSW1、EPosZSW2 进行监控,当目标位置到达后AxisPosok 置 1 ,当定位过程中出现错误,则输出参数 Error 置 1。

2023-11-23 11:45:20 6154

原创 EPLAN_013#端子图表、端子连接图_修改和问题

一、端子表格的修改可以网上下载或者淘宝闲鱼购买(绝大部分不完美或者有很多问题)刚开始可能需要先新建一个项目(可以是宏项目)菜单栏—工具—主数据—表格—复制(推荐复制)1、占位符文本菜单栏—插入——占位符文本——右键——属性2、动态区域3、常用属性注意:图标修改完毕之后必须将此图表的文件——重命名,然后在生成新的图表的时候,重新选择改名后的文件。否则不会显示图表修改后的内容。3.1、显示——端子的外观3.2、显示——鞍型跳线3.3、显示——端子在图纸中的位置。

2023-11-03 17:51:55 8763 5

原创 EPLAN_012#自定义导航器中的显示内容

关键字:设备导航器、端子排导航器、电缆导航器、设备列表导航器,树形结构(导航器)在配置显示中——新建一个(避免操作失误)——设备——...(点击后面的三个点)如何在导航器中显示更多内容或者进行规划。(比如下图中,可以显示其他内容)正常情况下,eplan中的设备导航器是这个模样。在设备导航器中——右键——配置显示。下一步点击下图中的——设备——再点击。此时,就会将这些内容显示在导航器中。然后再对应的设备——属性中进行填写。这里举例显示功能文本和备注。二、增加导航器中显示的内容。菜单栏——选项——设置。

2023-10-30 20:59:28 885

原创 T01西门子#DPRD_DAT

这里G120变频器报文的起始地址 256 ,将256转换为16进制等于100,即表示:LADDR:=W#16#100。西门子300PLC在博图V15.1中是没有系统常数,没有设备标识符。在博图V15.1中使用DPRD_DAT时,LADDR参数如何选择?关键字:无系统常数;目前没有可显示的系统常数;例子:与G120进行PN通讯,这里16#100的由何处得来。例如,起始地址 100 表示:LADDR:=W#16#64。

2023-10-24 23:19:45 2155

原创 西门子T002#编译失败。请联系SIEMENS客户支持部门

看下图,表面上虽然都是V15.1,但是V15.1 UP7的项目放入V15.1时候就会出现——出现这种问题原因1:项目实际版本高于安装版本。请联系SIEMENS客户支持部门的错误。

2023-10-23 12:30:00 616

原创 EPLAN_010#STEP格式_箱柜模型的定义、拼柜

一、导入首先创建一个宏项目——在布局空间中导航器新建一个布局空间菜单栏——布局空间——导入(3D图形)——导入下载下来的STEP如果导入进来的箱柜是这种模样的,表示可以使用。如果左侧只显示一个逻辑组件,则无法使用。(如果是单独的安装板也可以使用)。二、自动解析菜单栏——编辑——设备逻辑——自动解析可以直接参考一个相似的柜子全部自动解析。(但是对于陌生的柜子,就有可能出现很多错误)四、定义箱柜的放置区域有些箱柜默认视角是别的方向,这个时候需要先定义放置区域。

2023-10-21 20:33:07 1300

原创 EPLAN_009#3D箱柜生成模型视图(2D)

一、页导航器——新建页——页描述:安装板布局二、插入模型视图(隐藏线)菜单栏——插入——图形——模型视图——在图纸中画一个框这里如果选择视角:前但是如果生成的模样不正确,则需要进入布局空间导航器——箱柜——右键——全部显示——菜单栏——编辑——设备逻辑——放置区域——定义——将这个区域定义到整个箱柜的底部那个面上。三、插入模型视图(阴影)

2023-10-21 18:12:55 1886

原创 EPLAN_008#3D布局图

菜单栏——项目数据——连接——布线(布局空间)——然后框选整个箱柜。菜单栏——项目数据——设备/部件——3D安装布局导航器。菜单栏——插入——线槽——选择合适的线槽——确定。按A键可以切换线槽方向,如果位置不对,可以。打开布局空间导航器——右键——新建。首先:打开3D安装安装布局导航器。画一根从门到底板线槽的布线路径。菜单栏——插入——布线路径。菜单栏——插入——安装导轨。在显示门板的同时,再显示。菜单栏——插入——箱柜。八、布线路径(门板)多线原理图纸画好以后。七、门板元器件的安装。

2023-10-21 13:01:59 3476

原创 EPLAN_007#3D图形的导入、编辑和定义

打开——布局空间导航器——新建一个宏项目——新建——插入——窗口宏/符号宏。点合并,然后左侧的导航栏中——逻辑组件就全部合并为一个。这里定义其他相关的附件安装的位置基准点。先打开显示——连接点代号和连接点方向。先框选目标——菜单栏——编辑——创建窗口宏/符号宏。八、再次编辑ema格式的3D宏文件。一、导入3D模型,合并模型。3、合并图形(不建议合并)双击3D模型中的红色连接点。最后生成的格式为ema格式。可以对目标进行旋转查看。定义设备插入的参考点。七、生成保存3D宏文件。2、导入(3D图形)

2023-10-21 09:59:20 2730

原创 EPLAN_006#部件库快速导入、树结构、部件导航器、材料表导航器

技巧:可以单独用一块硬盘将Data文件夹中的宏、图片、文档等资料复制进去。而后更改eplan的目录文件夹到此硬盘中,这样就可以直接使用自己做好的mdb文件。2、将部件的宏文件、图片、文档等相关资料存入进EPLAN的Data文件夹中。EDZ文件:完整的数据格式,可以添加2D,3D宏,是相对比较完整的格式。在选项——设置——用户——管理——目录中进行相关设置。mdb文件,等同于是一个对部件索引的目录文件,需要Data数据支撑。1、将相关目录写入当前的mdb文件中去。三、EDZ的快速导入。五、部件主数据导航器。

2023-10-20 19:51:17 2646

原创 EPLAN_005#宏边框、页宏、窗口宏/符号宏

—弹出红边框创建属性对话框——输入名称——更改变量ABC等。自动生成宏(如果是老版本则在菜单栏——工具——生成宏)要在项目属性中更改位宏项目——才能使用宏边框功能。注意:创建宏边框时候要打开——显示隐藏元素。红边框不能用,变成了灰色。框选目标后,双击红边框的。

2023-10-20 16:51:10 2689

原创 EPLAN_011#图框编辑

二、插入特殊文本(行号、列号)一、画几个方框、直线——属性。五、退出——选择关闭即可。

2023-10-20 15:40:48 1285

原创 EPLAN_004#常用功能(四)

如果是批量选型,可以在设备导航器中进行多个相同元器件进行选型。(筛选器可以选择未选型)然后在导航器中选中直接拖放到安装板中。(回车键可以快速逐个放置)离线编号:元器件已经出现在图纸中,后续要进行修改的。通过部件主数据导航器,进行更快速的添加。在线编号:元器件还没有放置到图纸中的。二、直接通过部件设备进行绘图(按。插入安装板—方法二:插入—设备。线槽和导轨可以用基础功能。也可以通过下面的(设备选择)进行选择。键 切换开关的部位)

2023-10-20 14:58:15 2005

原创 EPLAN_003#常用功能(三)

可以将网上下载下来的mdb文件导入其中,有些大文件导入时间很长,要注意。此处是将外部的mdb文件导入到默认的ESS_PART001.mdb中。如果想自己新建一个mdb库,则新建一个,使用时可以进行切换。设计模式类似于CAD中 基于基准点 复制等功能。三、比例缩放、拉伸、修剪、修改长度、圆角、倒角。右键实际项目中的宏边框—显示下图,选择—更新宏。五、窗口宏、符号宏(在编辑菜单中,或者右键)二、对象捕捉、设计模式。快捷键:CTRL+F5。按TAB键进行切换选择。九、部件管理—自定义排序。

2023-10-11 20:38:10 2220

原创 EPLAN_002#常用功能(二)

一、快速添加端子端子编号端子定义二、多层端子的快速建立三、手动鞍型跳线四、购物车图标在导航器中,有购物车是陷进去的表示 在图纸中已经使用,未陷进去的表示未使用。

2023-09-25 20:06:07 1992

原创 EPLAN_001#常用功能(一)

一、栅格设置、背景颜色设置二、插入设备图标(快捷键 Insert)按TAB旋转方向三、¶ 通过左CTRLENTER输入。

2023-09-22 13:02:26 3389

原创 西门子T001#将博图触摸屏中使用的外部图片全部导出

缺点:用自带的画图软件打开保存后无法保留透明。将图形从 WinCC (TIA Portal) 导出至本地目录。优点:快速批量全部导出,保留文件原格式。2:打开软件,选择项目文件和保存目录。操作方法:1:关闭所有博图软件。三、博图自带的图库目录地址。

2023-08-16 19:35:06 2928

原创 第101章#远程调试西门子PLC(明牛智能网关)入门

10、此处如果想要监视的话,需要将PLC,智能网关LAN口接入另一个新路由器中(此路由器网段必须和PLC、智能网关在同一网段中,需在路由器中设置),然后将PLC接入路由器,再将电脑接入路由器(注意电脑的IP要同网段)。9、此处如果想要监视的话,需要将PLC,智能网关LAN口接入另一个新路由器中(此路由器网段必须和PLC、智能网关在同一网段中,需在路由器中设置),然后将PLC接入路由器,再将电脑接入路由器(注意电脑的IP要同网段)。注意的是:此处自动获取的IP不可以和LAN口的IP在同一网段。

2023-07-30 16:57:02 1674

原创 003#西门子触摸屏—用户管理_登录、显示、注销

注意:进去此画面的权限要单独设置为高权限。添加一个画面,然后再此画面中拖入。空白的地方也可以添加新用户。

2023-07-27 20:24:13 6179

原创 002#西门子PLC+触摸屏—报警

1、创建一个数据块2、触发梯形图3、HMI报警4、弹窗的选择删除后,也可以通过右侧添加,并编辑其属性。

2023-07-27 18:44:11 4029

原创 『Halcon与C#混合编程』011_工业相机的SDK介绍

7、输出的图像就是 24bit RBG 的 彩色图像了, 1 个像素占用 3 个字节,依次是红色、 绿色、 蓝色 返样排列。返回结果:一个 32 位带符号整数,它包含自上次启动计算机以来所经过的时间(以毫秒为单位)。这里以淘宝上的显微精工店铺的相机为例(支持SDK)1、复制以下文件到C#新项目的debug目录中。2、在C#中引用相机的SDK动态链接库。三、示例运行步骤,结合相机开发文档。13、获取 RAW 数据,获得一帧图像原始数据。一、相机的SDK简单介绍。二、相机示例简单入门。

2022-10-24 18:40:51 2191

原创 『Halcon与C#混合编程』第二章02_迈德威视工业相机SDK图像变量转换

如果将SDK获取到的图像数据转换为halcon可以使用的变量,并在Halcon窗口中显示。备注:本笔记仅针对SDK里最简单的方式进行组合,所以不包含相关条件,所以不可用于实际项目。学习相机的型号为迈德威视MV-SUA502M-T(黑白相机,USB3.0)

2022-09-27 22:15:38 1644 1

原创 『Halcon与C#混合编程』第二章01_迈德威视工业相机SDK入门

打开MindVision工业相机开发手册,找到快速开发指南。第一步:引用MVCAMSDK.DLL第二步:枚举相机设备CameraEnumerateDevice()函数的格式如下:有2种重载MindVision工业相机SDK错误码第三步:初始化设备第四步:获取相机特性描述后,通过相机特性里的参数,申请内存CameraGetCapability()函数的格式如下:有2种重载第五步:(如果用C#自己显示,此步骤可以省略)第六步:让SDK进入图像采集模式。

2022-09-23 20:15:15 2388

原创 C# 第九章『图形、图像』◆第4节:彩色图像处理

图象分辨率和图象尺寸(高宽)的值一起决定文件的大小及输出的质量,该值越大图形文件所占用的磁盘空间也就越多。像素颜色值c1是一个长整型的数值,占4个字节,最上位字节的值为0,其他三个下位字节依次为B、G、R,值为0-255。马赛克的原理就是将原图像分成4×4(或其他)像素的子图像块,该4×4像素子图像块的所有像素的颜色按F(i,j)的颜色来进行设定,达到降低分辨率的目的。对图像像素的处理,可以达到灰度、对比度调节的效果。根据特定的输入输出灰度转换关系,可增强图像灰度,处理后图像的中等灰度值增大,图像变亮。

2022-09-22 16:28:26 1569

原创 C# 第九章『图形、图像』◆第3节:图像处理、Image类、Bitmap 类

Bitmap 类通过提供用于加载、保存和操作光栅图像的其他方法扩展图像类的功能。在使用窗体或控件的CreateGraphics方法创建的Graphics绘图对象,这导致绘制的图像都是暂时的,如果当前窗体被切换或被其他窗口覆盖,这些图像就会消失,为了使图像一直显示,可以通过在窗体或控件的Bitmap对象上绘制图像来实现。使用Bitmap对象绘制图像时,可以先创建一个Bitmap对象,并在其上绘制图像,再将其赋值给窗体或控件的Bitmap对象,这样绘制出的图像就可以自动刷新,不再使用程序来绘制图像。

2022-09-21 22:30:36 8418

原创 C# 第九章『图形、图像』◆第1节:GDI+概述、Graphics类

使用指定 Brush 的格式化特性,用指定的 Font 和 StringFormat 对象在指定的矩形中绘制指定的文本字符串。使用指定 Brush 的格式化特性,用指定的 Font 和 StringFormat 对象在指定的位置绘制指定的文本字符串。使用指定 Brush 的格式化特性,用指定的 Font 和 StringFormat 对象在指定的位置绘制指定的文本字符串。将此 Graphics 的剪辑区域设置为当前剪辑区域和指定的 Graphics 的 Clip 属性指定的组合操作的结果。

2022-09-20 21:47:39 1304

原创 『Halcon与C#混合编程』010_相机实时采集并显示(或循环显示)

Halcon error #5312问题的原因:用halcon是无法二次初始化相机的,就算是CloseFramegrabber了相机的句柄,这个时候相机还是被此程序的进程占用的,导致无法初始化。Halcon error #1401问题的原因:执行的顺序错误,相机还没有执行初始化,导致后续的算子参数错误。这里可以退出程序重新开始,或者拔一下相机与电脑的接口,也或者直接注销或重启Windows系统。Halcon error #2453问题的原因:因为相机的句柄已经被释放了。3、建立一个Form窗体。

2022-09-05 22:14:38 1559

原创 C# 第七章『I/O数据流』◆第5节:数据流—StreamWriter类、StreamReader类

如果该文件不存在,此构造函数将创建一个新文件。使用指定的编码和默认的缓冲区大小,为指定的文件初始化 StreamWriter 类的新实例。使用与 Format(String, Object, Object, Object) 方法相同的语义将格式化字符串写入文本流。使用与 Format(String, Object, Object) 方法相同的语义将格式化字符串和新行写入文本流。使用与 Format(String, Object, Object) 方法相同的语义将格式化字符串写入文本流。

2022-09-01 22:57:27 1164

原创 C# 第七章『I/O数据流』◆第4节:数据流—FileStream 类

使用指定的路径、创建模式、读/写和共享权限、其他 FileStreams 可以具有的对此文件的访问权限、缓冲区大小和附加文件选项初始化 FileStream 类的新实例。使用指定的读/写权限、FileStream 实例所属权、缓冲区大小和同步或异步状态为指定的文件句柄初始化 FileStream 类的新实例。使用指定的路径、创建模式、访问权限和共享权限、缓冲区大小、附加文件选项、访问控制和审核安全初始化 FileStream 类的新实例。关闭当前流并释放与之关联的所有资源(如套接字和文件句柄)。......

2022-09-01 20:33:21 1090

原创 C# 第六章『交互式图形界面』◆第5节:FolderBrowserDialog类、DialogResult枚举

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。返回一个对象,该对象表示由 Component 或它的 Container 提供的服务。(继承自 Component)(继承自 Component)(继承自 Component)(继承自 Component)(继承自 Component)获取附加到此 Component 的事件处理程序的列表。(继承自 Component)(继承自 Component)(继承自 Component)(继承自 Component)...

2022-09-01 15:51:05 1131

原创 C# 第六章『交互式图形界面』◆第6节:MessageBox类

这是一个模式窗口,可阻止应用程序中的其他操作,直到用户将其关闭。MessageBox 可包含通知并指示用户的文本、按钮和符号。此枚举的每个成员的说明都包含符号的典型表示形式。指定 MessageBox 上的选项。此枚举支持其成员值的按位组合。此枚举由 MessageBox 类使用。指定若干常数,用以定义 MessageBox 上的默认按钮。此枚举由 MessageBox 类使用。此枚举由 MessageBox 类使用。此枚举由 MessageBox 类使用。的MessageBox类,要注意区分。......

2022-09-01 11:11:19 1287

原创 C# 第二章『基础语法』◆第4节:foreach循环语句

foreach语句括号中的类型和标识符用来声明该语句的循环变量,标识符即循环变量的名称。在每一个循环时,都会从集合中取出一个新的元素值,放到只读变量中去,如果括号中的整个表达式返回值为true,foreach块中的语句就能够执行。foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成,in右边的项是集合名,in左边的项是变量名,又来存放该集合中的每个元素。备注:循环变量的类型必须与集合的类型相同。集合内元素的个数决定循环内程序段重复执行的次数。........

2022-08-31 22:54:31 8137

原创 C# 第六章『交互式图形界面』◆第4节:FileDialog类 、OpenFileDialog类、SaveFileDialog类、示例

通过指定 GUID,一个应用程序对于同一应用程序中不同版本的对话框(例如,导入的对话框和打开的对话框),可以具有不同的持久状态。(继承自 FileDialog)获取或设置一个值,该值指示对话框是否返回快捷方式引用的文件的位置,或者是否返回快捷方式 (.lnk) 的位置。获取或设置一个值,该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。获取或设置一个值,该值指示该对话框在关闭前是否将目录还原为之前选定的目录。获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。.......

2022-08-30 20:13:47 1984

原创 C# 第七章『I/O数据流』◆第2节:File类、FileInfo类(示例)

备注:如果在创建文件时,已有原文件,则不会覆盖原文件。在使用File类和FileInfo类创建文本文件时,其默认的字符编码为UTF-8;而在Windows环境中手动创建文本文件时,其字符编码为ANSI。将现有文件复制到新文件。不允许覆盖同名的文件。将指定文件移到新位置,提供要指定新文件名的选项。将指定文件移到新位置,提供要指定新文件名的选项。将现有文件复制到新文件。允许覆盖同名的文件。将现有文件复制到新文件,不允许覆盖现有文件。将现有文件复制到新文件,允许覆盖现有文件。一、判断文件是否存在。........

2022-08-29 19:56:53 772

原创 C# 第七章『I/O数据流』◆第3节:Directory类、DirectoryInfo类、遍历文件夹

例如,如果路径完全限定,但以空格 (“c:\temp”) 开头,则不会修整路径字符串,因此路径被视为格式不正确,并且引发异常。(例如,“C:\Temp”授予对 C:\Temp\\ 及其所有子目录的访问权限。如果要多次重用某个对象,请考虑使用的实例方法(而不是 DirectoryInfo 类的相应静态方法 Directory ),因为安全检查并不总是必需的。获取 DirectorySecurity 对象,该对象封装当前 DirectoryInfo 对象所描述的目录的指定类型的访问控制列表 (ACL) 项。..

2022-08-27 22:58:31 1566

原创 C# 第七章『I/O数据流』◆第1节:File类、FileInfo 类

由于File类中的所有方法都是静态的,所以如果只想执行一种操作,那么使用File类中的方法的效率要比使用相应的FileInfo类中的方法可能更高。File类支持对文件的基本操作,用于创建文件、复制文件、删除文件、移动文件和打开文件的静态方法,并协助创建FileStream对象。如果文件不存在,此方法将创建一个文件,将指定的字符串写入文件,然后关闭该文件。创建或覆盖指定路径中的文件,指定缓冲区大小、描述如何创建或覆盖该文件的选项,以及用于确定文件的访问控制和审核安全的值。向一个文件中追加行,然后关闭该文件。.

2022-08-27 22:35:35 1157

原创 C# 第六章『交互式图形界面』◆第2节:控件(2)ListView

如果要为ListView控件中的项添加图标,则需要使用ImageList控件设置ListView控件中项的图标。ListView控件可显示3个图像列表中的图标,其中List视图、Details视图和SmallIcon视图显示SmallImageList属性中指定的图像列表里的图像;列表中显示的项可以显示在五个不同的视图中之一。在移除ListView控件中的项时可以使用其Items属性的RemoveAt方法或Clear方法,其中,RemoveAt方法用于移除指定项,而Clear方法用于移除列表中的所有项。..

2022-08-27 21:11:50 3933

原创 C# 第八章『多线程』◆第2节:线程的属性

只要具有较高优先级的线程可以执行,具有较低优先级的线程就不会执行,直到在高优先级的程序不再有可执行的线程时,才会移动到下一个较低的优先级,并在该优先级上调度线程以执行。线程的优先级可以通过Thread类的Priority属性设置,获取或设置指示线程的调度优先级的值。线程的优先级指定一个线程相对于另一个线程的相对优先级,每个线程都有一个分配的优先级。在公共语言运行库内创建的线程最初被分配为Normal优先级,而在公共语言运行库快创建的线程,在进入公共语言运行库时将保留其先前的优先级。获取或设置线程的名称。

2022-08-23 22:12:17 751

原创 C# 第八章『多线程』◆第3节:线程的方法

参数的值为零,则该线程会将其时间片的剩余部分让给任何已经准备好运行的、具有同等优先级的线程。如果没有其他已经准备好运行的、具有同等优先级的线程,则不会挂起当前线程的执行。参数的值为零,则该线程会将其时间片的剩余部分让给任何已经准备好运行的、具有同等优先级的线程。如果没有其他已经准备好运行的、具有同等优先级的线程,则不会挂起当前线程的执行。线程的休眠是通过Thread类的Sleep方法实现的,而Thread类的实例的IsAlive属性可以判断线程是否执行完毕。挂起线程,或者如果线程已挂起,则不起作用。

2022-08-23 21:18:43 1687

原创 C# 第八章『多线程』◆第1节:进程与线程

暂停状态与就绪状态是不一样的:暂停状态下的线程是持有系统资源的,只是没有进行任何操作。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。线程是程序中一个执行流,每个线程都有自己的专有寄存器(栈、指针、程序计数器等),但代码区是共享的,即不同的进程可以执行同样的函数。注意:一个进程可以有多个线程,一个线程必须有一个父进程,一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。

2022-08-23 20:09:36 1026

『Halcon与C#混合编程』003

『Halcon与C#混合编程』003

2022-08-18

C# 第六章『交互式图形界面』◆第2节:Form窗体—简单例子(1)

C# 第六章『交互式图形界面』◆第2节:Form窗体—简单例子(1)

2022-08-12

Halcon入门 第6章-6节-1

Halcon入门 第6章-6节-1

2022-06-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除