Inventor文件中保存自定义数据 - 2

Inventor SDK入门---API创建零文档类型的Ribbon命令按钮 Inventor SDK入门---API创建零文档类型的Ribbon命令按钮,本文制作一个ZeroDoc环境下的Ribbon命令按钮。 阅读详情

第二种方式是Attribute。我们叫做属性,和iPRoperties以示区别。很多Inventor对象都提供了添加属性的功能,包括文档。属性的操作也有大量文章,本文推荐两个材料:
第一是帮助文档。专门有个章节讲解:  

image 

另外就是Brian的博客文章。我还没来得及翻译。 

http://modthemachine.typepad.com/my_weblog/2009/07/introduction-to-attributes.html

简单讲:

创建属性集(AttributeSet)和 属性(Attributes)需要用的方法:

- 通过对象的AttributeSets集合添加属性集

Public Function Add( 
             ByVal AttributeSetName As String,     
             Optional ByVal CopyWithOwner As Boolean = False ) 
              As AttributeSet

- 通过属性集添加属性:

Public Function Add( 
              ByVal AttributeName As String, 
              ByVal ValueType As ValueTypeEnum, 
              ByVal Value As Variant ) As Attribute

目前属性可以添加以下类型:

ValueTypeEnum:  
    kIntegerType  整形
    kDoubleType  实数
    kStringType  字串
    kByteArrayType  字节
    kBooleanType 布尔值

查询属性 
每个文档都有一个属性管理对象AttributeManager。它支持多种灵活的方式查询。而且比起遍历快很多。可以基于属性集名,属性名或属性值查找。 

   FindAttributes 
   FindAttributeSets 
   FindObjects

 
Public Function FindObjects( 
    Optional ByVal AttributeSetName As String = "*",     
    Optional ByVal AttributeName As String = "*",     
     Optional ByVal AttributeValue As Variant ) As ObjectCollection

image

 

和上一篇文章类似,以下代码添加了自定义属性集和属性,并演示如何访问。

VBA

Sub AddCustomAttribute()

    ' open a document invisible 
    Dim oDoc As Document 
     Set oDoc = ThisApplication.Documents.Open("c:\testpart.ipt", False)

    ' name of new attribute set 
    Dim oNameOfNewPS As String 
    oNameOfNewPS = "myNewSet" 
    ' new attribute set 
    Dim oNewPS As AttributeSet 
    If oDoc.AttributeManager.FindAttributeSets(oNameOfNewPS).Count > 0 Then 
       ' if the set exists aleady 
       Set oNewPS = oDoc.AttributeSets(oNameOfNewPS) 
       ' you can clean up the existing attributes 
    Else 
        ' add a new one 
         Set oNewPS = oDoc.AttributeSets.Add(oNameOfNewPS) 
     End If

    'the values of the attributes 
    Dim oIntProV As Integer 
    oIntProV = 100 
    Dim oByteProV() As Byte 
    oByteProV = StrConv("ABCDEFG", vbFromUnicode) 
     Dim oDoubleProV As Double 
    oDoubleProV = 3.1415926 
    Dim oDateProV As String 
    oDateProV = "2013-3-1 15:25"

    ' add these attributes with the meaningful name 
    ' assume they do not exist in the attribute set 
    Call oNewPS.Add("ModelCount", kIntegerType, oIntProV) 
    Call oNewPS.Add("ModelByte", kByteArrayType, oByteProV) 
    Call oNewPS.Add("ModelBasicLength", kDoubleType, oDoubleProV) 
    Call oNewPS.Add("ModelUpdateDate", kStringType, oDateProV) 
    oDoc.Save 
    oDoc.Close 
End Sub

Sub ReadCustomAttribute()

      ' open a document invisible 
    Dim oDoc As Document 
    Set oDoc = ThisApplication.Documents.Open("c:\testpart.ipt", False) 
    ' name of new attribute set 
    Dim oNameOfNewPS As String 
    oNameOfNewPS = "myNewSet" 
    ' new attribute set 
    Dim oNewPS As AttributeSet 
    If oDoc.AttributeManager.FindAttributeSets(oNameOfNewPS).Count > 0 Then 
       ' if the set exists aleady 
       Set oNewPS = oDoc.AttributeSets(oNameOfNewPS) 
      ' you can clean up the existing attributes 
    Else 
        MsgBox "no attribute set named myNewSet" 
        Exit Sub 
    End If 
    Dim oShowStr As String 
    oShowStr = ""

    'iterate the attributes 
    Dim oEachAtt As Attribute 
    For Each oEachAtt In oNewPS 
       oShowStr = oShowStr & " [Attribute Name]  " & oEachAtt.Name 
       If oEachAtt.Name = "ModelByte" Then 
        oShowStr = oShowStr & " [Attribute Value]  " & StrConv(oEachAtt.Value, vbUnicode) & vbCr 
       Else 
        oShowStr = oShowStr & " [Attribute Value]  " & oEachAtt.Value & vbCr 
       End If 
    Next 
    MsgBox oShowStr 
    oDoc.Close 
End Sub

VB.NET

    Sub AddCustomAttribute()

 

        Dim m_inventorApp As Inventor.Application = Nothing

        m_inventorApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application")

 

 

        ' open a document invisible

        Dim oDoc As Document

        oDoc = m_inventorApp.Documents.Open("c:\testpart.ipt", False)

 

 

        ' name of new attribute set

        Dim oNameOfNewPS As String

        oNameOfNewPS = "myNewSet"

 

        ' new attribute set

        Dim oNewPS As AttributeSet

        If oDoc.AttributeManager.FindAttributeSets(oNameOfNewPS).Count > 0Then

            ' if the set exists aleady

            oNewPS = oDoc.AttributeSets(oNameOfNewPS)

            ' you can clean up the existing attributes

        Else

            ' add a new one

            oNewPS = oDoc.AttributeSets.Add(oNameOfNewPS)

        End If

 

 

        'the values of the attributes

        Dim oIntProV As Integer

        oIntProV = 100

        Dim oByteProV() As Byte

        oByteProV = System.Text.Encoding.Default.GetBytes("ABCDEFG")

        Dim oDoubleProV As Double

        oDoubleProV = 3.1415926

        Dim oDateProV As String

        oDateProV = "2013-3-1 15:25"

 

        ' add these attributes with the meaningful name

        ' assume they do not exist in the attribute set

        Call oNewPS.Add("ModelCount", ValueTypeEnum.kIntegerType, oIntProV)

        Call oNewPS.Add("ModelByte", ValueTypeEnum.kByteArrayType, oByteProV)

        Call oNewPS.Add("ModelBasicLength", ValueTypeEnum.kDoubleType, oDoubleProV)

        Call oNewPS.Add("ModelUpdateDate", ValueTypeEnum.kStringType, oDateProV)

        oDoc.Save()

        oDoc.Close()

    End Sub

 

    Sub ReadCustomAttribute()

 

        Dim m_inventorApp As Inventor.Application = Nothing

        m_inventorApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application")

 

 

        ' open a document invisible

        Dim oDoc As Document

        oDoc = m_inventorApp.Documents.Open("c:\testpart.ipt", False)

 

        ' name of new attribute set

        Dim oNameOfNewPS As String

        oNameOfNewPS = "myNewSet"

 

        ' new attribute set

        Dim oNewPS As AttributeSet

        If oDoc.AttributeManager.FindAttributeSets(oNameOfNewPS).Count > 0Then

            ' if the set exists aleady

            oNewPS = oDoc.AttributeSets(oNameOfNewPS)

            ' you can clean up the existing attributes

        Else

            MsgBox("no attribute set named myNewSet")

            Exit Sub

        End If

 

        Dim oShowStr As String

        oShowStr = ""

 

        'iterate the attributes

        Dim oEachAtt As Attribute

        For Each oEachAtt In oNewPS

            oShowStr = oShowStr & " [Attribute Name]  " & oEachAtt.Name

            If oEachAtt.Name = "ModelByte" Then

                oShowStr = oShowStr & " [Attribute Value]  " & System.Text.Encoding.Default.GetString(oEachAtt.Value) & vbCr

            Else

                oShowStr = oShowStr & " [Attribute Value]  " & oEachAtt.Value & vbCr

            End If

 

        Next

        MessageBox.Show(oShowStr)

        oDoc.Close()

    End Sub 

Apprentice  

    Sub AddCustomAttribute_Apprentice()

 

        Dim m_ApprenticeApp As Inventor.ApprenticeServerComponent =

             New Inventor.ApprenticeServerComponent()

 

        ' open a document invisble

        ' open a document

        Dim oDoc As ApprenticeServerDocument

        oDoc = m_ApprenticeApp.Open("c:\testpart.ipt")

 

 

        ' name of new attribute set

        Dim oNameOfNewPS As String

        oNameOfNewPS = "myNewSet"

 

        ' new attribute set

        Dim oNewPS As AttributeSet

        If oDoc.AttributeManager.FindAttributeSets(oNameOfNewPS).Count > 0Then

            ' if the set exists aleady

            oNewPS = oDoc.AttributeSets(oNameOfNewPS)

            ' you can clean up the existing attributes

        Else

            ' add a new one

            oNewPS = oDoc.AttributeSets.Add(oNameOfNewPS)

        End If

 

 

        'the values of the attributes

        Dim oIntProV As Integer

        oIntProV = 100

        Dim oByteProV() As Byte

        oByteProV = System.Text.Encoding.Default.GetBytes("ABCDEFG")

        Dim oDoubleProV As Double

        oDoubleProV = 3.1415926

        Dim oDateProV As String

        oDateProV = "2013-3-1 15:25"

 

        ' add these attributes with the meaningful name

        ' assume they do not exist in the attribute set

        Call oNewPS.Add("ModelCount", ValueTypeEnum.kIntegerType, oIntProV)

        Call oNewPS.Add("ModelByte", ValueTypeEnum.kByteArrayType, oByteProV)

        Call oNewPS.Add("ModelBasicLength", ValueTypeEnum.kDoubleType, oDoubleProV)

        Call oNewPS.Add("ModelUpdateDate", ValueTypeEnum.kStringType, oDateProV)

 

        m_ApprenticeApp.FileSaveAs.AddFileToSave(oDoc, oDoc.FullDocumentName)

        m_ApprenticeApp.FileSaveAs.ExecuteSave()

    End Sub

 

    Sub ReadCustomAttribute_Apprentice()

 

        Dim m_ApprenticeApp As Inventor.ApprenticeServerComponent =

              New Inventor.ApprenticeServerComponent()

 

        ' open a document invisble

        ' open a document

        Dim oDoc As ApprenticeServerDocument

        oDoc = m_ApprenticeApp.Open("c:\testpart.ipt")

 

        ' name of new attribute set

        Dim oNameOfNewPS As String

        oNameOfNewPS = "myNewSet"

 

        ' new attribute set

        Dim oNewPS As AttributeSet

        If oDoc.AttributeManager.FindAttributeSets(oNameOfNewPS).Count > 0Then

            ' if the set exists aleady

            oNewPS = oDoc.AttributeSets(oNameOfNewPS)

            ' you can clean up the existing attributes

        Else

            MsgBox("no attribute set named myNewSet")

            Exit Sub

        End If

 

        Dim oShowStr As String

        oShowStr = ""

 

        'iterate the attributes

        Dim oEachAtt As Attribute

        For Each oEachAtt In oNewPS

            oShowStr = oShowStr & " [Attribute Name]  " & oEachAtt.Name

            If oEachAtt.Name = "ModelByte" Then

                oShowStr = oShowStr & " [Attribute Value]  " & System.Text.Encoding.Default.GetString(oEachAtt.Value) & vbCr

            Else

                oShowStr = oShowStr & " [Attribute Value]  " & oEachAtt.Value & vbCr

            End If

 

        Next

        MessageBox.Show(oShowStr)

        oDoc.Close()

    End Sub

 
利用IStorage和IStream存储自定义数据到Inventor文件 (C++) 我去年在全球博客就写了此文章,还有一个姊妹篇(用.NETx竟然没有 阅读详情

相关推荐

基于APP Inventor2的蓝牙智能小车控制之APP操作系统篇(20191220更新篇)

1、整体思路 目前基于单片机的智能控制是实现建议操作功能的最直接、最有效的实现方案,这里首先是考虑再蓝牙模式下,实现控制功能,下阶段将进一步延申使用WIFI模式如何实现控制操作。整体以模块化方式实现各项逻辑结构,避免后续程序优化可能存在的修改复杂问题。 2、设计界面 3、使用工具 (1)用户侧操作使用APP(目前主要设计使用了Andrior版本),软件开发工具使...

浅行机器人工作室 8193

Inventor文件中保存自定义数据 - 1

在一些工作流中,需要对文件本身附加一些数据,对最终用户不可见,便于下游的使用。Inventor API提供了三种方式: 1. iProperties  2. Attribute  3. IStorage & IStream 首先最容易的就是iProperties 。这个基本内容有太多文章介绍。我就不赘述了。直接看几段代码,看看如何添加一些数据,并如何取出。为方便不同用户,例子用VB

Gear Up Cloud 2393

Inventor文件格式详解与应用

本文深入探讨了Inventor文件格式的写入和读取方法,包括如何将场景图保存为ASCII或二进制文件,以及如何将这些文件读入Inventor数据库。详细介绍了文件头部的结构,节点、路径和字段的编写语法,以及如何处理全局字段和引擎。此外,还提供了定义和使用节点共享实例的实例,以及如何编写和读取路径的方法。

weixin_36303807的博客 667

inventor宏写入属性

写入属性

weixin_57217890的博客 589

inventor批量添加iLogic规则

inventor批量添加iLogic规则,从http://beinginventive.typepad.com/being-inventive/2012/02/injecting-ilogic-code-and-ilogic-event-triggers-automatically.html复制,做了汉化和一些修改。

inventorVBA资料

VBA开发inventor的范例和基本了开发方法

Inventor中管理Attribute的工具

Brian在他的博客Mode the machine中又发布了一个Attribute Helper的免费小工具。我且把Attribute翻译成特性吧。推荐的目的是,这个小工具对一些需要使用到Inventor中的特性的人将会很有很大的帮助,因为你能通过它方便地读取/增加/编辑/删除特性。写这个小工具的起因是因为Inventor中的Attribute只能通过编程来能访问到,也就是说,如果你需要用到

CAD定制乐园 1366

Inventor API英文詞彙(Inventor VBA二次開發)

Inventor API英文詞彙(Inventor VBA二次開發)對照,Inventor二次開發實用英語詞彙。

创建表并插入视图数据_Inventor技巧丨将模型属性插入到修订表中

Inventor支持将模型属性插入到修订表中,前提是:该工程图是基于此模型创建的。举个例子,如果你需要将自定义属性插入到修订表中该如何操作呢?请按照以下步骤进行操作。1. 打开此工程图,工具菜单,文档设置,找到工程图标签2. 在工程图中的特性,选择自定义模型源数据3.选择复制模型iProperty设置4. 选择所需要复制的属性参数此时,参数均已复制完毕。接下来,请在修订表中进行设置。...

weixin_39978444的博客 1181

CAM软件:AutodeskInventor二次开发概述+典型CAM应用的二次开发+安装配置Inventor等全套教程

CAM软件:Autodesk Inventor二次开发_1.绪论:CAM软件与AutodeskInventor二次开发概述.docx CAM软件:Autodesk Inventor二次开发_10.案例研究:典型CAM应用的二次开发.docx CAM软件:Autodesk Inventor二次开发_11.调试与测试:开发过程中常见问题及解决方法.docx CAM软件:Autodesk Inventor二次开发_12.项目实践:综合应用与项目开发.docx CAM软件:Autodesk Inventor二次开发_13.未来展望:Inventor二次开发的前沿技术与趋势.docx CAM软件:Autodesk Inventor二次开发_2.基础知识:AutoCAD与InventorAPI.docx CAM软件:Autodesk Inventor二次开发_3.环境配置:安装配置Inventor二次开发环境.docx CAM软件:Autodesk Inventor二次开发_4.数据交互:Inventor与外部数据源的连接.docx CAM软件:Autodesk Inventor二次开发_5.基本

科研指南:IEEE期刊LaTeX/Word模板下载与使用全解析

本文详细解析了IEEE期刊LaTeX/Word模板的下载与使用技巧,帮助科研人员高效完成论文排版。从官方模板获取入口到LaTeX文档结构配置,再到Word样式管理与常见问题解决方案,全面覆盖投稿准备的关键步骤。特别针对数学公式、参考文献和图片处理等难点提供实用建议,助力学术写作规范化。

weixin_28396629的博客 566

Inventor文件中保存自定义数据 - 3

前面我们了解了可以通过iProperties或Attribute为文档附加数据。由于Inventor 文件也是一种Windows文件,因此Windows提供的附加数据方法也适用。那就是 IStorage & IStream. 在全球博客上,我已经撰写了专门的文章介绍。不过是用C++写的。  How to use private storage and stream in C++ 后来我

Gear Up Cloud 1832

嵌入式GUI显示驱动配置实战:从emWin硬件接口到SPI屏驱动优化

在嵌入式系统开发中,显示驱动是连接GUI库与物理屏幕的核心底层模块,其本质是CPU与显示控制器之间的数据“翻译”与“传输”系统。其工作原理是通过实现特定的硬件抽象层接口,将GUI生成的图形数据转换为屏幕能识别的时序和协议。这项技术的核心价值在于,它允许开发者在资源受限的MCU上,通过适配不同的硬件接口,以最小的硬件开销实现稳定的图形输出。其典型应用场景包括智能家居面板、工业HMI、可穿戴设备等嵌入式图形界面开发。本文将深入解析emWin GUI库的驱动框架,重点探讨如何针对SPI、I2C等串行接口进行高效的

weixin_29159711的博客 342

App Inventor 2 图片云端保存及访问的App开发思路

一般来说,类似于购物App,你可以从手机App上传物品图片,然后他人也可以在手机App上查看你上传的物品的照片,这时图片就必须采用云端保存的方式。本文主要就是聊一聊 App Inventor 2 进行图片上传及云端图片访问这种场景的App开发思路,及关键步骤的一些指导。

AppInventor2中文网(https://www.fun123.cn)技术。 1151

2021-8-14 EDK II编译

2021-8-14 EDK II 编译为什么要写这篇文章新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 为什么要写这篇文章 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdo

qq_45775660的博客 2946

T100服务端接口实战:从注册到日志排查的全链路开发指南

本文提供了一份T100服务端接口开发的全链路实战指南。从程序注册与框架签出开始,详细讲解了接口的数据结构设计、核心业务逻辑编写,到最终的部署上线与调用验证。文章重点分享了如何利用日志文件高效定位和排查接口问题,帮助开发者快速掌握T100接口开发的关键步骤与实用技巧。

weixin_28831399的博客 300

inventor导出tekla_保存和导出文件参考 | Inventor 2019 | Autodesk Knowledge Network

.CATPart、.CATProductCATIA V5 零件和部件文件。(版本 R10 - R19).CATPartCATIA V5 零件。(版本 R10 - R19).x_b、.x_tParasolid 二进制和文本文件。(版本 9.0 - 23.0).g、.neuPro/ENGINEER Granite 和中性文件。(Granite 版本 1.0 - 6.0)BMP光栅图像。DWF二维矢量文...

weixin_29476755的博客 1700

数字IC后端PPA优化实战:Innovus中Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中PPA优化的核心挑战,重点解析了Innovus与PrimeTime之间Timing不一致的根本原因。通过实战案例,详细介绍了在Innovus中设置Timing Margin、Derate以及RC Scale Factor等关键策略,以校准时序视图。同时,文章分享了利用Module Region进行物理布局规划的技巧,将关键模块约束在最优区域,并结合Group Path等进阶方法,有效提升时序收敛效率与PPA结果的可预测性。

f9g0h的博客 2687

inventor导出tekla_保存和导出文件参考 | Inventor 2021 | Autodesk Knowledge Network

.CATPart、.CATProductCATIA V5 零件和部件文件。(版本 R10 - R19).CATPartCATIA V5 零件。(版本 R10 - R19).x_b、.x_tParasolid 二进制和文本文件。(版本 9.0 - 23.0).g、.neuPro/ENGINEER Granite 和中性文件。(Granite 版本 1.0 - 6.0)BMP光栅图像。DWF二维矢量文...

weixin_39608301的博客 1889

SAP-ABAP:SAP Open SQL 分页技术深度解析:语法、性能陷阱与最佳实践

SAP Open SQL 分页技术深度解析:语法、性能陷阱与最佳实践

baidu_35680696的博客 634

一篇文章带你搞定数学建模里的主成分分析(05年水质问题示例应用讲解含代码)

文章目录一、题目分析二、原理公式三、MATLAB实现某一地区的主成分分析四、MATLAB 实现所有地区28个月的综合分析五、注意 一、题目分析 对长江近两年多的水质情况做出定量的综合评价,并分析各地区水质的污染状况 考虑到各指标之间可能存在一定的相关性,选用主成分分析法对长江流域主要城市水质检测报告进行分析,选取主成分,并把主成分得分按照方差贡献率加权求和,得到每个地区的污染综合评价指数,进而可以计算每个月长江流域的污染综合评价指数,对平均综合评价指数进行排序 二、原理公式 根据主成分分析的方法,分析长江沿

南淮北安的博客 2624

inventor文件导出其他格式方法

- 写在前面 之前一直以为inventor是款封闭的软件,现在发现还是可以和solidworks、admas等软件相通的。 - 方法一 文件——>另存为——>保存副本为,可看到,在下拉框中可选“parasolid x_t”、“stp,step”,“stl”等多种格式。 - 方法2 文件——>导出——>CAD格式,也可在下拉框中看到多种格式内容。 ...

biter0088的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

App inventor 2开发集锦-九格拼图

本文详细介绍了九格拼图游戏的设计与实现过程,包括游戏规则说明、界面设计、程序逻辑分析和代码编写。游戏通过记录玩家完成拼图的耗时和移动次数计算得分,支持重新开始和保存历史最高纪录功能。文章重点分析了三个技术难点:碎片的随机排列、移动逻辑实现和拼图成功判断,并提供了完整的解决方案。程序采用模块化设计,包含12个自定义过程和15个事件处理程序,通过全局变量管理游戏状态,利用网络数据库保存游戏成绩。最后作者提出了游戏难度公平性方面的思考,指出随机初始状态可能影响游戏体验的问题。

王同学的博客 907

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

inventor扫掠不成功_Inventor资源中心

概述温馨提示:文章非常长,请耐心阅读,肯定能让软件使用者受益匪浅! 非标设计中涉及到的资源中心内容,包括型材、紧固件、轴用标准件等等。所以有必要熟悉资源中心的使用与应用。在安装inventor软件的过程中,默认把所有资源中心数据库都安装,也可以自定义安装符合自己标准的一些数据库,且安装路径也可以设置,比如笔者就改了路径,如下图所示。默认资源中心的库位置为这里只讲桌面资源中心,暂不说vault se...

weixin_36087674的博客 2542

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: Inventor文件中保存自定义数据 - 1
下一篇: 图纸复制草图符号,并插入
autodeskinventorapi
博客等级 码龄14年 313粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值