#加载脚本#
source [file normalize {D:\Pro22\cdssetup\OrCAD_Capture\tclscripts\capAutoLoad\getNetNames.tcl}]
也可以新建一个load_tcl.tcl文件内容如下,以后每次只要在命令行敲命令ra就可以重新加载脚本。
proc ra {} {
source "D:/Pro22/cdssetup/OrCAD_Capture/tclscripts/capAutoLoad/getNetNames.tcl"
}
#获取原理图中的网络名#
由于一点基础都没有,最近才开始看官方文档OrCAD_Capture_TclTk_Extensions.pdf
先让AI帮忙写了一段代码,虽然还不是很懂,但代码看起来很规范,也带有比较详细的注释。试着运行了以下,有报错,目前定位在while循环这部分。
#报错信息#
Invalid method. Must be one of: configure cget -acquire -disown -delete GetRefCount GetCMData GetDCFPath IsDesignCMDisabled IsDesignCMEnabled IsDesignPartiallyCMEnabled GetDesignLoadStateInCM setDesignLoadStateInCM SetCMData ClearCMData IncRefCount DecrefCount GetName GetOwner GetContainingLib IsModified IsPersistent IsEquivalent GetModifyTime GetCreateTime GetSourceLibName IsCachedCopy IsOutOfDate GetObjectType GetSemanticString GetParentObj MarkModified SetName SetObjectType SetSourceLibName
#源代码#
如下:
# 从设计中获取网络名
proc get_net_names_from_current_design {} {
# 设置会话
set session $::DboSession_s_pDboSession
DboSession -this $session
set lStatus [DboState]
#set lPartInstIter [$pPage NewPartInstsIter $lStatus]
#set lPartInst [$lPartInstIter NextPartInst $lStatus]
#set lNullObj NULL
# 获取活动设计
set lMessage "---------------------------------------------------------------------------------"
set lMessageStr [DboTclHelper_sMakeCString $lMessage]
DboState_WriteToSessionLog $lMessageStr
puts [DboTclHelper_sGetConstCharPtr $lMessageStr]
set lSession $::DboSession_s_pDboSession
DboSession -this $lSession
set lNullObj NULL
set lDesign [$lSession GetActiveDesign]
if { $lDesign == $lNullObj} {
set lError [DboTclHelper_sMakeCString "Active design not found"]
DboState_WriteToSessionLog $lError
puts [DboTclHelper_sGetConstCharPtr $lError]
return
}
# 初始化网络名列表
set all_net_names {}
set status [DboState]
# 获取原理图迭代器
set schematic_iter [$lDesign NewViewsIter $status $::IterDefs_SCHEMATICS]
set schematic [$schematic_iter NextView $status]
set lNullObj NULL
# 遍历原理图
while {$schematic!= $lNullObj} {
# 获取页面迭代器
set pages_iter [$schematic NewPagesIter $status]
set page [$pages_iter NextPage $status]
# 遍历页面
while {$page!= $lNullObj} {
# 获取扁平网络迭代器
set flat_nets_iter [$page NewFlatNetsIter $status]
set flat_net [$flat_nets_iter NextFlatNet $status]
# 遍历扁平网络
while {$flat_net!= $lNullObj} {
set net_name [DboTclHelper_sMakeCString]
$flat_net GetName $net_name
lappend all_net_names $net_name
set flat_net [$flat_nets_iter NextFlatNet $status]
}
# 释放页面扁平网络迭代器
delete_DboPageFlatNetsIter $flat_nets_iter
set page [$pages_iter NextPage $status]
}
# 释放原理图页面迭代器
delete_DboSchematicPagesIter $pages_iter
set schematic [$schematic_iter NextView $status]
}
# 释放原理图迭代器
delete_DboLibViewsIter $schematic_iter
# 释放会话
delete_DboSession $session
return $all_net_names
}
# 注册运行命令
RegisterAction "getNCD" "get_net_names_from_current_design" "" "" ""