kicad学习笔记7:获取和设置sch_symbol或lib_symbol的field值
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值相关推荐
- Oracle 加密配置,【学习笔记】Oracle sqlnet设置网络传输加密案例
天萃荷净 Database Advanced Security,Oracle研究中心学习笔记:分享一篇关于Oracle数据库网络传输加密笔记,通过配置SQLNET.ora文件使网络传输加密即将客户端也 ...
- MATLAB学习笔记#001 获取矩阵大小
MATLAB学习笔记#001 获取矩阵大小 size 函数 语法 说明 示例 参考链接 size 函数 语法 [sz1,...,szN] = size(___) 说明 返回矩阵各个维度的长度 示例 [ ...
- Xilinx-ZYNQ7000系列-学习笔记(1):用XADC测外部温度值
Xilinx-ZYNQ7000系列-学习笔记(1):用XADC测外部温度值 一.XADC简介 Zynq器件XADC模块包括2个12比特1 MIPS的模数转换器和相关的片上传感器,内置温度传感器和功耗传 ...
- python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)
本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...
- 二、LaTeX学习笔记——基本结构、设置表格、文字变形及符号、插入图片
LaTeX学习笔记 写在最前面:LaTeX的注释符 界面字体放大 一.环境搭建与RUN 二.基本结构 三.设置表格 四.文字变形及符号 五.插入图片 附录.一些小tip LaTeX是一个可以用于文字编 ...
- 学习笔记:获取疫情数据,并绘制可视化地图
入门小菜鸟的学习笔记,希望大佬们帮忙纠错啦~侵权立删. 一.加载库 import re import time import json import requests import pandas as ...
- 【STM32学习笔记】#002 GPIO设置练习
系列文章目录 -[STM32学习笔记]#001 前期准备 文章目录 系列文章目录 前言 一.目标功能 二.CubeMX设置 1 端口设置1(Port Setting) 2 端口设置2(Port Set ...
- python接口自动化学习笔记(封装获取测试数据方法)
本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...
- FullCalendar 学习笔记——简单的节假日设置
FullCalendar作为一款功能强大的日历插件,用途十分广泛.今天我们用它来实现一个简单的节假日设置功能,代码非常简洁,有助于理解插件的调用方式.本文代码需用到SpringMVC和Mysql. 1 ...
最新文章
- android 中 系统日期时间的获取
- git新建项目并push进去
- NIPS 2017 | 线上分享第一期:似自然梯度的优化算法KFAC与强化学习算法ACKTR
- 监控聚币网行情 并实时发送到微信
- GraphQL —— 接口类型
- 计算机操作系统课程有什么关系,计算机操作系统课程教学大纲(洪联系).doc
- NoSQL 数据库分类
- JS Jquery 中 的遍历
- 国科大 - 模式识别与机器学习(黄庆明等)- 期末复习 - 试卷
- 数学游戏“数三角形”的可编程图论模型
- 移动客户端谈百度分享经验
- 分布式动态路由的实现
- 推动企业上云实施经验总结
- thinkpad重装系统不引导_联想Y400电脑装WIN7无法重装系统的解决方法
- 滤波算法 | 无迹卡尔曼滤波(UKF)算法及其MATLAB实现
- 【测试开发】web 自动化测试 --- selenium4
- 实现Vue移动端的PDF预览
- http劫持软件、怎么应对这样的 HTTP 劫持
- 动态IP与静态ip的区别是什么
- 旅游新纪元篇章,雾灵山紫山期待大家品鉴
热门文章
- Photoshop常用技能
- python常见内置模块
- 需要正确安装 Microsoft.Windows.ShellExperienceHost 和 Microsoft.Windows.Cortana 应用程序。...
- 掷色子、骰子--链接、随机数
- 10061 mysql_MySQL问题记录--Can't connect to MySQL server on localhost (10061)解决方法
- win10开机蓝屏代码0xc000001怎么办 错误代码0xc000001的解决教程
- 第52课:蘑菇云Spark大数据项目数据建模
- java将cst时间格式_CST 时间格式转换成普通的时间格式yyyy-MM-dd HH:mm:ss
- FPGA研发之道(21)-鸡肋?
- spss分析方法-中介效应(转载)