Orcad capture
#/
# TCL file: DanDanTools.tcl
#
#
#
#/
package provide DanDanTools 1.0
namespace eval ::DanDanTools {
}
proc ::DanDanTools::exportMES { pPageList } {
[::DanDanTools::exportMESEx 0 0 $pPageList]
}
#导出当前Design相关Page的Parts统计结果
proc ::DanDanTools::exportMESEx { iDesignIndex iSchematicIndex pPageList } {
#获取当前Session
set lSession $::DboSession_s_pDboSession
DboSession -this $lSession
set lStatus [DboState]
set lNullObj NULL
set index 0
set lName [DboTclHelper_sMakeCString]
#遍历Design
set lDesignsIter [$lSession NewDesignsIter $lStatus]
set lDesign [$lDesignsIter NextDesign $lStatus]
if { $lDesign == $lNullObj} {
puts {The Design in Current Session is NULL}
return
}
while { $lDesign != $lNullObj} {
#输出 Design 名字
$lDesign GetName $lName
DboState_WriteToSessionLog $lName
#目标 Design
if { $index == $iDesignIndex } {
set index 0
break
}
set lDesign [$lDesignsIter NextDesign $lStatus]
set index [expr $index+1]
}
delete_DboSessionDesignsIter $lDesignsIter
#没有找到目标Design
if { $index != 0 } {
puts {Not Found Design, Check the parameter, the first Design index is 0}
return
}
#遍历 Schematic
#set lSchematic [DboSchematic]
set lSchematicIter [$lDesign NewViewsIter $lStatus $::IterDefs_SCHEMATICS]
set lView [$lSchematicIter NextView $lStatus]
if { $lView == $lNullObj } {
puts {The Schematic in Current Design is NULL}
return
}
while { $lView != $lNullObj } {
#dynamic cast from DboView to DboSchematic
set lSchematic [DboViewToDboSchematic $lView]
#输出 Schematic 名字
$lSchematic GetName $lName
DboState_WriteToSessionLog $lName
#目标 Schematic
if { $index == $iSchematicIndex } {
set index 0
break
}
set lView [$lSchematicIter NextView $lStatus]
set index [expr $index+1]
}
delete_DboLibViewsIter $lSchematicIter
#没有找到目标Schematic
if { $index != 0 } {
puts {Not Found Schematic, Check the parameter, the first Schematic index is 0}
return
}
#遍历 Page
set pageInstList ""
set lPageNumber [DboTclHelper_sMakeInt]
set lPagesIter [$lSchematic NewPagesIter $lStatus]
set lPage [$lPagesIter NextPage $lStatus]
while {$lPage != $lNullObj} {
#输出 Page 名字
$lPage GetName $lName
#DboState_WriteToSessionLog $lName
#Page Number
set lPageNumber [$lPage GetPageNumber $lStatus]
#puts $lPageNumber
#目标 Page
for {set x 0} {$x < [llength $pPageList]} {incr x} {
set pageIndex [lindex $pPageList $x]
if { $lPageNumber == $pageIndex } {
set nameTclStr [DboTclHelper_sGetConstCharPtr $lName]
lappend pageInstList $lPage
}
}
set lPage [$lPagesIter NextPage $lStatus]
}
delete_DboSchematicPagesIter $lPagesIter
puts $pageInstList
#遍历 Pages
#创建空字典
dict set Results 1 1
dict unset Results 1
set lValue [DboTclHelper_sMakeCString]
set lReferenceName [DboTclHelper_sMakeCString]
set lPcbFootprint [DboTclHelper_sMakeCString]
for {set x 0} {$x < [llength $pageInstList]} {incr x} {
set pageInst [lindex $pageInstList $x]
#遍历 Parts
set lPartInstsIter [$pageInst NewPartInstsIter $lStatus]
set lInst [$lPartInstsIter NextPartInst $lStatus]
while { $lInst != $lNullObj } {
set lPlacedInst [DboPartInstToDboPlacedInst $lInst]
if {$lPlacedInst != $lNullObj} {
$lPlacedInst GetName $lName
#DboState_WriteToSessionLog $lName
$lPlacedInst GetReference $lReferenceName
#DboState_WriteToSessionLog $lReferenceName
$lPlacedInst GetPartValue $lValue
#DboState_WriteToSessionLog $lValue
$lPlacedInst GetPCBFootprint $lPcbFootprint
#DboState_WriteToSessionLog $lPcbFootprint
set valueStr_origin [DboTclHelper_sGetConstCharPtr $lValue]
#删除Value里面的空格
set valueStr ""
for {set i 0} {$i < [string length $valueStr_origin]} {incr i} {
set char [string index $valueStr_origin $i]
if { $char != " " } {
set valueStr $valueStr$char
}
}
#拼接Key
set PartKey ""
if {[string match "PL/*" $valueStr] || [string match "L/*" $valueStr]} {
set PartKey "L_Buck"
} elseif { [string match "R/0*" $valueStr] } {
set PartKey "L_Buck"
} elseif { [string match "SHORT*" $valueStr} {
set PartKey "R_0ohm"
} elseif { [string first "NC" $valueStr] != -1 } {
set PartKey "NC"
} elseif { [string match "*/*/*/*" $valueStr] } {
set PartKey [DboTclHelper_sGetConstCharPtr $lPcbFootprint]
append PartKey "_"
set valueItems [split $valueStr "//"]
append PartKey [lindex $valueItems 1]
append PartKey [lindex $valueItems 2]
} elseif { [string match "*/*/*" $valueStr] } {
set valueItems [split $valueStr "//"]
set PartKey [lindex $valueItems 0]
append PartKey "_"
append PartKey [lindex $valueItems 1]
append PartKey [lindex $valueItems 2]
} elseif { $valueStr == "DNI" } {
set PartKey "R_0om"
} elseif {[string match "*f" $valueStr] || [string match "*F" $valueStr]
|| [string match "*mf" $valueStr] || [string match "*mF" $valueStr]
|| [string match "*uf" $valueStr] || [string match "*uF" $valueStr]
|| [string match "*nf" $valueStr] || [string match "*nF" $valueStr]
|| [string match "*pf" $valueStr] || [string match "*pF" $valueStr]
|| [string match "*ph" $valueStr] || [string match "*pH" $valueStr]
|| [string match "*nh" $valueStr] || [string match "*nH" $valueStr]
|| [string match "*uh" $valueStr] || [string match "*uH" $valueStr]
|| [string match "*mh" $valueStr] || [string match "*mH" $valueStr]
|| [string match "*h" $valueStr] || [string match "*H" $valueStr]} {
set PartKey [DboTclHelper_sGetConstCharPtr $lPcbFootprint]
append PartKey "_"
append PartKey $valueStr
} else {
puts "Not Match Value: $valueStr"
}
if { $PartKey != "" } {
puts "Value:$valueStr Key: $PartKey"
}
#保存数据到Dict
set isExist [dict exists $Results $PartKey]
if { $isExist == 1 } {
set referenceList [dict get $Results $PartKey]
lappend referenceList [DboTclHelper_sGetConstCharPtr $lReferenceName]
dict set Results $PartKey $referenceList
} else {
set initRefList [DboTclHelper_sGetConstCharPtr $lReferenceName]
dict set Results $PartKey $initRefList
}
}
set lInst [$lPartInstsIter NextPartInst $lStatus]
}
delete_DboPagePartInstsIter $lPartInstsIter
}
#遍历Results
if 0 {
foreach key [dict keys $Results] {
puts $key
puts [dict get $Results $key]
}
}
#将临时数据写入桌面
set currentPath [pwd]
set tempDataPath [file join $currentPath "orcad_temp_data.txt"]
if {[file exists $tempDataPath] == 1} {
file delete $tempDataPath
}
set fp [open $tempDataPath w]
foreach key [dict keys $Results] {
set refs [dict get $Results $key]
puts $fp "$key---$refs"
}
flush $fp
close $fp
#启动标准的TCL解释器来执行写入Excel的操作
set tclshPath [GetEnv Sigrity_EDA_DIR]\\tcltk\\bin\\tclsh.exe
set exportExcelScript [GetEnv Sigrity_EDA_DIR]\\tcltk\\DanDanScripts\\exportToExcel.tcl
set ABC [exec $tclshPath $exportExcelScript $tempDataPath]
puts $ABC
}
Orcad capture相关推荐
- orCAD使用Orcad Capture CIS按Room摆放
http://www.sig007.com/EDAguide/176.html 37 使用Orcad Capture CIS按Room摆放 (1)打开原理图某一工程页 (2)按Ctrl键依次选中需要建 ...
- 如何去掉Orcad Capture中元件标号下划线
转载:https://blog.csdn.net/david_xtd/article/details/44117157 使用环境:Orcad Capture 16.6,放置了元器件后,修改了元件标号, ...
- OrCAD Capture CIS 16.6 修改原理图的页面大小
OrCAD Capture CIS 16.6 打开需要修改的原理图. 菜单:Options > Schematic Page Properties... 看图操作... 转载于:https:// ...
- 01、Cadence使用记录之新建工程与基础操作(原理图绘制:OrCAD Capture CIS)
01.Cadence使用记录之新建工程与基础操作(原理图绘制:OrCAD Capture CIS) 硕士学电磁场去了,写点博客记录下学习过程. 参考的教程是B站的视频:allegro软件入门视频教程全 ...
- OrCAD Capture CIS 16.6 - 为元器件添加属性
文章目录 直接编辑原理图中的元器件添加属性 通过编辑库中的元器件添加属性 直接编辑原理图中的元器件添加属性 下例演示为一个电感添加 Description 属性. 选择元器件,右击选择菜单中的 Edi ...
- Allegro Design Entry CIS 和 Orcad Capture CIS 区别
目录 前言 一.Cadence 公司简介 二.Allegro Design Entry CIS 三.OrCAD Capture CIS 前言 Cadence家的PCB设计软件还真容易让人混乱,软件安装 ...
- Cadence 的 Orcad Capture CIS 使用鼠标右键的Show Footprint无法查看元件封装图的问题的解决方法
Cadence 的 Orcad Capture CIS 使用鼠标右键的Show Footprint无法查看元件封装图的问题的解决方法: 由于看见很多网上相关的文章中叙述通过修改capture.ini的 ...
- Orcad Capture CIS
了解市面上常见的 CAD 设计软件 Protel Protel 99se.Altium Designer 比较低端,对电脑配置要求比较高 PADS 1.PADS Logic 2.PADS Layout ...
- ORcad Capture CIS元件库管理
当电子元器件数量多到一定程度的时候,所有器件都集中在一个library里杂乱无章,使用起来相当不方便,时间长了也很容易把相似的器件封装混淆,如何规范化整理,就成了一个让人头疼的问题.还有就是贴片时硬件 ...
- OrCAD Capture CIS 17.2导入Altium Designer原理图
1.打开OrCAD Capture CIS 2.如下图,导入工程图.见下图1. 图1:导入altium 文件 3.选择PrjPCB File ,可以是.PrjPCB的工程文件,也可以是.SchDoc的 ...
最新文章
- python 只循环目录_Python面试题目,掌握他们令你更上一层楼!附答案
- python基本语法语句-python基本语句有哪些
- webpack 入口文件 php,webpack,jsx_webpack jsx 找不到入口文件,webpack,jsx - phpStudy
- C#开发Android应用的必备——Mono for Android V1.0 发布
- swift hidesBottomBarWhenPushed 设置界面
- 小酌一下:Pycharm 2019.1.3 64位版本破解
- 创新元旦新年PSD分层海报,新气象开启!
- 在AIX 5.3+HACMP 5.4以上环境安装10gR2 10.2.0.1 RAC CRS Clusterware必须先运行Patch 6718715中的rootpre.sh...
- win11wifi总掉线怎么办 windows11wifi总掉线的解决方法
- 新款苹果电脑_“Mac历史性的一天”!别了,英特尔!苹果电脑将采用自研芯片,公司股价又创新高...
- java 与 php 区别或异同(整理、整合)
- QT实现年会抽奖小软件的实现
- linux读usb蓝牙数据,嵌入式Linux下USB蓝牙设备驱动.pdf
- Spark中的Driver
- Java获取不到tfp目录内容_AndroidRuntime引起:java.lang.unsatisfiedLinkError:无法加载tfp_jni:findLibrary返回null...
- 阿里天池金融数据分析赛题2:保险反欺诈预测baseline
- 互联网名称与数字地址分配机构ICANN简介
- 嵌入式端音频开发(实战篇)之 4.2 把很多音频合成一个bin文件并统计每个音频文件的大小的方法(内含转换脚本)
- 常常反思,让你变成更好的自己
- 网页聊天室的开发笔记