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

news/2024/12/27 18:39:52/

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;
}

http://www.ppmy.cn/news/362752.html

相关文章

springboot+vue+java仓库管理系统_0r36w

部门管理员&#xff1a; 申购入库&#xff1a;发起申购&#xff0c;进行入库申请。 调拨申请&#xff1a;发起资产调拨的申请以及查看申请的详情信息。 出库管理&#xff1a;查看调拨的详情信息&#xff0c;可以进行资产的申请报废以及申请维修。 资产报废查询&#xff1a;查看…

数据底座设计

1.数据湖功能架构 2.数据流转架构 由统一的租户&#xff08;企业集团层面&#xff09;进行数据的归集&#xff0c;并加工成标准统一的数据集或指标。基于租户权限自动将数据分发给相应的租户。各租户无需重复进行数据集成和加工&#xff0c;一般是1N模式的企业组织架构&#x…

数字底座建设思路

① “聚数” 实现各数据湖数据汇聚 ② “联接” 对数据湖进行主题联接 ③ “赋能” 高可用的数据消费出口

任天堂底座方案

任天堂的 Switch 游戏机自从 2017 年发布至今&#xff0c;销量直奔一亿台&#xff0c;没什么意外的话&#xff0c;将超过 PS4 的销售记录。这让一些在 switch 刚发布时不看好其前景的指标党大跌眼镜。确实&#xff0c;在早已进入 4k 游戏的时代&#xff0c;任天堂凭借一台720p …

solid works风扇摇头底座建模

通过电机&#xff0c;曲臂摇杆&#xff0c;按钮等完成制作。 1.机械结构组成 通过电机带动曲臂摇杆做往复运动&#xff0c;从而实现摇头。 具体实物&#xff1a; 2 .制作关键点 构造线的使用基准面的建立曲臂摇杆的长度设置与螺母的配套使用 3.遇到的困难 1.过定义报错 2.草…

Steam Deck 游戏机底座方案(LT8711UXD 2Lane支持4K/60HZ高刷新率)

当 Nintendo Switch 推出之后&#xff0c;过去两年人们一直在期待任天堂能够推出高性能的升级版 Switch&#xff0c;并带来更强大的游戏阵容&#xff0c;然而今年 Switch OLED 版本的推出浇灭了这种热切的期待&#xff08;只是升级屏幕而已&#xff09;。而我们要介绍的是Steam…

升级企业数智化底座,用友iuap助力企业高质量发展

近年来&#xff0c;数字技术和智能技术的蓬勃发展&#xff0c;带来了新技术和商业创造性思维的再组合&#xff0c;推动企业数智化转型。数字经济时代&#xff0c;数智化已经不只是企业发展的机遇&#xff0c;更成为了企业生存与发展的必经之路。然而&#xff0c;在数智化转型的…

计算机主板后的底座,更换损坏的CPU底座的方法

更换损坏的CPU底座的方法 电脑主机里面的主要配件只要出现损坏&#xff0c;要更换一个完好的电脑配件并不是一件什么困难的事情&#xff0c;但如果需要更换的是电脑配件上的小配件的话就显得有些难度了&#xff0c;所谓的难度不是说更换步骤麻烦和复杂&#xff0c;而是这些电脑…