1.从sch_symbol中获取field并传递给lib_symbol

    std::unique_ptr<LIB_SYMBOL> symbol = aSymbol->GetLibSymbolRef()->Flatten();wxCHECK( symbol, /* void */ );std::vector<LIB_FIELD> fullSetOfFields;for( int i = 0; i < (int) aSymbol->GetFields().size(); ++i ){const SCH_FIELD& field = aSymbol->GetFields()[i];VECTOR2I         pos = field.GetPosition() - aSymbol->GetPosition();LIB_FIELD        libField( symbol.get(), field.GetId() );if( i >= MANDATORY_FIELDS && !field.GetName( false ).IsEmpty() )libField.SetName( field.GetName( false ) );libField.SetText( field.GetText() );libField.SetAttributes( field );libField.SetPosition( VECTOR2I( pos.x, -pos.y ) );fullSetOfFields.emplace_back( std::move( libField ) );}symbol->SetFields( fullSetOfFields );

2.获取或修改sch_symbol中的field

sch_symbol.h文件中定义了一个关于SCH_Field的变量:

 std::vector<SCH_FIELD>                 m_fields;    ///< Variable length list of fields.

设置field的值:

设置某个field的值,比如reference的值

static constexpr auto REFERENCE_FIELD = "Reference";
wxString aRef="U";m_fields[ REFERENCE_FIELD ].SetText( aRef );

设置valuefield的值:

void SCH_SYMBOL::SetValueFieldText( const wxString& aValue )
{m_fields[ VALUE_FIELD ].SetText( aValue );
}

valuefield、referencefield都是模板属性,那么普通属性值如何设置呢?

  • 首先我们要获取sch_fied,通过名字来获取
SCH_FIELD* FindField( const wxString& aFieldName, bool aIncludeDefaultFields );
SCH_FIELD* SCH_SYMBOL::FindField( const wxString& aFieldName, bool aIncludeDefaultFields )
{unsigned start = aIncludeDefaultFields ? 0 : MANDATORY_FIELDS;for( unsigned i = start; i < m_fields.size(); ++i ){if( aFieldName == m_fields[i].GetName( false ) )return &m_fields[i];}return nullptr;
}
  • 然后调用sch_field中的SetText方法

获取field的值:

获取datasheetfield的值:

wxString SCH_SYMBOL::GetDataSheetFiledText(  bool aResolve ) const
{if( aResolve )return GetField( DATASHEET_FIELD )->GetShownText();return GetField( DATASHEET_FIELD )->GetText();
}

datasheetfield是symbol中的模板属性,每个symbol都会有改属性。也有很多属性不是模板属性,这些普通属性的值也可以通过GetFieldText()获得

wxString SCH_SYMBOL::GetFieldText( const wxString& aFieldName ) const
{for( const SCH_FIELD& field : m_fields ){if( aFieldName == field.GetName() || aFieldName == field.GetCanonicalName() )return field.GetText();}return wxEmptyString;
}

是否可见

field.IsVisible()

设置是否可见

field.SetVisible( BoolFromString( value ) );
template <class T>
bool FIELDS_GRID_TABLE<T>::BoolFromString( wxString aValue ) const
{if( aValue == wxS( "1" ) ){return true;}else if( aValue == wxS( "0" ) ){return false;}else{wxFAIL_MSG( wxString::Format( "string '%s' can't be converted to boolean correctly and ""will be perceived as FALSE", aValue ) );return false;}
}

kicad学习笔记7:获取和设置sch_symbol或lib_symbol的field值相关推荐

  1. Oracle 加密配置,【学习笔记】Oracle sqlnet设置网络传输加密案例

    天萃荷净 Database Advanced Security,Oracle研究中心学习笔记:分享一篇关于Oracle数据库网络传输加密笔记,通过配置SQLNET.ora文件使网络传输加密即将客户端也 ...

  2. MATLAB学习笔记#001 获取矩阵大小

    MATLAB学习笔记#001 获取矩阵大小 size 函数 语法 说明 示例 参考链接 size 函数 语法 [sz1,...,szN] = size(___) 说明 返回矩阵各个维度的长度 示例 [ ...

  3. Xilinx-ZYNQ7000系列-学习笔记(1):用XADC测外部温度值

    Xilinx-ZYNQ7000系列-学习笔记(1):用XADC测外部温度值 一.XADC简介 Zynq器件XADC模块包括2个12比特1 MIPS的模数转换器和相关的片上传感器,内置温度传感器和功耗传 ...

  4. python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)

    本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...

  5. 二、LaTeX学习笔记——基本结构、设置表格、文字变形及符号、插入图片

    LaTeX学习笔记 写在最前面:LaTeX的注释符 界面字体放大 一.环境搭建与RUN 二.基本结构 三.设置表格 四.文字变形及符号 五.插入图片 附录.一些小tip LaTeX是一个可以用于文字编 ...

  6. 学习笔记:获取疫情数据,并绘制可视化地图

    入门小菜鸟的学习笔记,希望大佬们帮忙纠错啦~侵权立删. 一.加载库 import re import time import json import requests import pandas as ...

  7. 【STM32学习笔记】#002 GPIO设置练习

    系列文章目录 -[STM32学习笔记]#001 前期准备 文章目录 系列文章目录 前言 一.目标功能 二.CubeMX设置 1 端口设置1(Port Setting) 2 端口设置2(Port Set ...

  8. python接口自动化学习笔记(封装获取测试数据方法)

    本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...

  9. FullCalendar 学习笔记——简单的节假日设置

    FullCalendar作为一款功能强大的日历插件,用途十分广泛.今天我们用它来实现一个简单的节假日设置功能,代码非常简洁,有助于理解插件的调用方式.本文代码需用到SpringMVC和Mysql. 1 ...

最新文章

  1. android 中 系统日期时间的获取
  2. git新建项目并push进去
  3. NIPS 2017 | 线上分享第一期:似自然梯度的优化算法KFAC与强化学习算法ACKTR
  4. 监控聚币网行情 并实时发送到微信
  5. GraphQL —— 接口类型
  6. 计算机操作系统课程有什么关系,计算机操作系统课程教学大纲(洪联系).doc
  7. NoSQL 数据库分类
  8. JS Jquery 中 的遍历
  9. 国科大 - 模式识别与机器学习(黄庆明等)- 期末复习 - 试卷
  10. 数学游戏“数三角形”的可编程图论模型
  11. 移动客户端谈百度分享经验
  12. 分布式动态路由的实现
  13. 推动企业上云实施经验总结
  14. thinkpad重装系统不引导_联想Y400电脑装WIN7无法重装系统的解决方法
  15. 滤波算法 | 无迹卡尔曼滤波(UKF)算法及其MATLAB实现
  16. 【测试开发】web 自动化测试 --- selenium4
  17. 实现Vue移动端的PDF预览
  18. http劫持软件、怎么应对这样的 HTTP 劫持
  19. 动态IP与静态ip的区别是什么
  20. 旅游新纪元篇章,雾灵山紫山期待大家品鉴

热门文章

  1. Photoshop常用技能
  2. python常见内置模块
  3. 需要正确安装 Microsoft.Windows.ShellExperienceHost 和 Microsoft.Windows.Cortana 应用程序。...
  4. 掷色子、骰子--链接、随机数
  5. 10061 mysql_MySQL问题记录--Can't connect to MySQL server on localhost (10061)解决方法
  6. win10开机蓝屏代码0xc000001怎么办 错误代码0xc000001的解决教程
  7. 第52课:蘑菇云Spark大数据项目数据建模
  8. java将cst时间格式_CST 时间格式转换成普通的时间格式yyyy-MM-dd HH:mm:ss
  9. FPGA研发之道(21)-鸡肋?
  10. spss分析方法-中介效应(转载)