<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.cadence.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Allegro X Scripting - TCL - Recent Threads</title><link>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl</link><description>Allegro X Scripting - TCL</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 16 Oct 2026 09:01:43 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl" /><item><title>RE: TCl script to replace selected parts with a component from library</title><link>https://community.cadence.com/thread/1434952?ContentTypeID=1</link><pubDate>Fri, 16 Oct 2026 09:01:43 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f40af384-46b5-48ba-a3b6-660c6133c226</guid><dc:creator>PatEscher</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1434952?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/59683/tcl-script-to-replace-selected-parts-with-a-component-from-library/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;a href="https://community.cadence.com/members/cadap"&gt;CadAP&lt;/a&gt;&amp;nbsp;&lt;br /&gt;can you provide information what the following variables are doing?&lt;br /&gt;bUpdate: int&lt;br /&gt;bNewVersion: int&lt;br /&gt;updateDPfromLib: int&lt;br /&gt;&lt;br /&gt;when we use RepalceInst ..... 1 1 1 1 1, then we ecounter an OrCAD crash when afterwards trying to do an LinkDatabasePart. so it seems that it is related to these booleans (I suspect it is bUdate or bNewVersion)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TCl script to replace selected parts with a component from library</title><link>https://community.cadence.com/thread/59683?ContentTypeID=0</link><pubDate>Fri, 05 Jul 2024 04:20:45 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:4c5bf6db-d35a-4df3-9a65-68b1acb4d3c5</guid><dc:creator>soliman1991</dc:creator><slash:comments>18</slash:comments><comments>https://community.cadence.com/thread/59683?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/59683/tcl-script-to-replace-selected-parts-with-a-component-from-library/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I need to replace components in a schematic page with parts from the library, I tried DboPage_ReplaceInst, but the documentation is very vague.&lt;/p&gt;
&lt;p&gt;Here is my attempt for reference:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;set selected [&lt;/span&gt;&lt;span&gt;GetSelectedObjects&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;puts &lt;/span&gt;&lt;span&gt;$selected&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;set newPackageStr {CAP CER &lt;/span&gt;&lt;span&gt;0.&lt;/span&gt;&lt;span&gt;1UF 10V X8M &lt;/span&gt;&lt;span&gt;0201&lt;/span&gt;&lt;span&gt;} #that is the package name in the library&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;set lStatus [&lt;/span&gt;&lt;span&gt;DboState&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;set lSession $::DboSession_s_pDboSession&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;DboSession &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;this &lt;/span&gt;&lt;span&gt;$lSession&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;set pLibName [&lt;/span&gt;&lt;span&gt;file&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;normalize&lt;/span&gt;&lt;span&gt; {d:\random\Library.olb}]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;set lLibName [&lt;/span&gt;&lt;span&gt;DboTclHelper&lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt;sMakeCString&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$pLibName&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;set lLib [&lt;/span&gt;&lt;span&gt;$lSession&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;GetLib&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$lLibName&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$lStatus&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;set LibraryName [&lt;/span&gt;&lt;span&gt;DboTclHelper&lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt;sMakeCString&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;$lLib&lt;/span&gt;&lt;span&gt; GetName &lt;/span&gt;&lt;span&gt;$LibraryName&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;set newPackageName [&lt;/span&gt;&lt;span&gt;DboTclHelper&lt;/span&gt;&lt;span&gt;_&lt;/span&gt;&lt;span&gt;sMakeCString&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;newPackageStr&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;set newPackage [&lt;/span&gt;&lt;span&gt;$lLib&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;GetPackage&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$newPackageName&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$lStatus&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;foreach&lt;/span&gt;&lt;span&gt; obj &lt;/span&gt;&lt;span&gt;$selected&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; set device [&lt;/span&gt;&lt;span&gt;$obj&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;GetDevice&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$lStatus&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; DboPage_ReplaceInst &lt;/span&gt;&lt;span&gt;$obj&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$newPackageName&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$newPackage&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$device&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$lStatus&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>trying to load a .olb librray file</title><link>https://community.cadence.com/thread/74699?ContentTypeID=0</link><pubDate>Tue, 13 Oct 2026 12:35:12 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:5d296184-22e9-4d77-a3ac-cd72fa7f03d5</guid><dc:creator>digital1</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/74699?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/74699/trying-to-load-a-olb-librray-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi All&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I have created this script to create a .olb library and save the library.unfortunately it doesnt load it into Project Manager under libraries&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;# Get the active Capture Dbo session&lt;br /&gt;set lSession $::DboSession_s_pDboSession&lt;br /&gt;DboSession -this $lSession&lt;/p&gt;
&lt;p&gt;# Create a status object&lt;br /&gt;set lStatus [DboState]&lt;/p&gt;
&lt;p&gt;# Set the library name&lt;br /&gt;set lNewLibName [DboTclHelper_sMakeCString]&lt;br /&gt;DboTclHelper_sSetCString $lNewLibName &amp;quot;test_library.olb&amp;quot;&lt;/p&gt;
&lt;p&gt;# Create the library object&lt;br /&gt;set lNewLib [$lSession CreateLib $lNewLibName $lStatus]&lt;br /&gt;set lSaveStatus [$lSession SaveLib $lNewLib]&lt;/p&gt;
&lt;p&gt;#this now removed the library from the design and removed the lock on the library&lt;br /&gt;$lSession RemoveLib $lNewLib&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;What i want is the code that will load this .olb library into project manager window in orcad capture&lt;/p&gt;</description></item><item><title>RE: trying to load a .olb librray file</title><link>https://community.cadence.com/thread/1434951?ContentTypeID=1</link><pubDate>Thu, 15 Oct 2026 14:08:38 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:84ddc1e3-ef7e-4a47-9397-c49b174d09a5</guid><dc:creator>digital1</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1434951?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/74699/trying-to-load-a-olb-librray-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi &lt;a href="https://community.cadence.com/members/technobobby"&gt;TechnoBobby&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Sorry I didn&amp;#39;t make myself clear i have already created a dsn project and i want to load the .opj file into the design under the project window unfortunately your answer loaded the .olb file into a differnt session than my original design.&lt;/p&gt;
&lt;p&gt;What I am doing is converting a kicad schematic into orcad this is so i can import Altium Binary mentor graphics binary cad star and a few others Im starting with the schematic and then i will be doing the pcb thsi will be useful as kicad can convert a gerber into a pcb file you then have to load the components.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;But i do appreciate the help thank you&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: trying to load a .olb librray file</title><link>https://community.cadence.com/thread/1434949?ContentTypeID=1</link><pubDate>Thu, 15 Oct 2026 05:14:36 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:184c6794-5843-4e41-8915-ef41e7e35b1c</guid><dc:creator>TechnoBobby</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1434949?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/74699/trying-to-load-a-olb-librray-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi &lt;a href="https://community.cadence.com/members/digital1"&gt;digital1&lt;/a&gt;&amp;nbsp;,&lt;br /&gt;&lt;br /&gt;After creating and saving the .olb, you can try loading it into the Project Manager using the same GUI&amp;nbsp;Open method used for loading a DSN:&lt;br /&gt;&lt;br /&gt;Open {C:/path/to/test_library.olb}&lt;br /&gt;&lt;br /&gt;This should allow the library to be opened through the Capture GUI and shown in the Project Manager.&lt;br /&gt;&lt;br /&gt;Hope this helps.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: how to create a design file in capture using tcl</title><link>https://community.cadence.com/thread/1434885?ContentTypeID=1</link><pubDate>Sun, 04 Oct 2026 11:24:06 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:08437004-3e64-49da-9478-9926c24cb825</guid><dc:creator>digital1</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1434885?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/70350/how-to-create-a-design-file-in-capture-using-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Thank you &lt;a href="https://community.cadence.com/members/patescher"&gt;PatEscher&lt;/a&gt;&amp;nbsp; This allowed me to open and see the project structure without any further dialog boxes Although I liked &lt;a href="https://community.cadence.com/members/technobobby"&gt;TechnoBobby&lt;/a&gt;&amp;nbsp; version but it gave me a dialog box that needed some user activity. Both versions are valid though.&lt;br /&gt;&lt;br /&gt;I started this project about a year ago because i couldnt get it past the project view stage so thank you guys I can revisit this project and hopefully have a kicad file imporrter for Orcad&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>how to create a design file in capture using tcl</title><link>https://community.cadence.com/thread/70350?ContentTypeID=0</link><pubDate>Tue, 29 Sep 2026 20:48:27 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:82879552-07ed-4f6b-a5c0-8107be8ac347</guid><dc:creator>digital1</dc:creator><slash:comments>4</slash:comments><comments>https://community.cadence.com/thread/70350?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/70350/how-to-create-a-design-file-in-capture-using-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Im trying to create a design in capture programatticaly using tcl here is my code so far&lt;br /&gt;&lt;br /&gt;# Get the existing DboSession&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;set lSession $::DboSession_s_pDboSession&lt;br /&gt; DboSession -this $lSession&lt;/p&gt;
&lt;p&gt;# Create a DboState&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;set lStatus [DboState]&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;# Build a test directory underneath the Capture workspace&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;set workspace [::orcad::startpage::getCapWorkspacePath]&lt;br /&gt; set projectsDir [file join $workspace "projects"]&lt;br /&gt; set testDir [file join $projectsDir "DboTest"]&lt;/p&gt;
&lt;p&gt;file mkdir $testDir&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;# Define the design name/path&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;set designPath [file join $testDir "DboTest.dsn"]&lt;br /&gt; set rootName &amp;quot;DboTest&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;# Create CString objects for the CreateDesign API&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;set designNameCString [DboTclHelper_sMakeCString]&lt;br /&gt; DboTclHelper_sSetCString $designNameCString $designPath&lt;/p&gt;
&lt;p&gt;set rootNameCString [DboTclHelper_sMakeCString]&lt;br /&gt; DboTclHelper_sSetCString $rootNameCString $rootName&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;# Create the DboDesign&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;set lDesign [$lSession CreateDesign&amp;nbsp; $lStatus&amp;nbsp; $designNameCString&amp;nbsp; &amp;nbsp;$rootNameCString]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;# Get the root DboSchematic&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;set lRootSchematic [DboDesign_GetRootSchematic&amp;nbsp; $lDesign&amp;nbsp; $lStatus]&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;# Create the first schematic page&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;set pageNameCString [DboTclHelper_sMakeCString]&lt;br /&gt; DboTclHelper_sSetCString $pageNameCString &amp;quot;Page 1&amp;quot;&lt;/p&gt;
&lt;p&gt;set lPage [$lRootSchematic NewPage&amp;nbsp; $lStatus&amp;nbsp; $pageNameCString]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;# Save the Dbo design&lt;/p&gt;
&lt;p&gt;&lt;!-- obsidian --&gt;&lt;/p&gt;
&lt;p&gt;DboSession_SaveDesign $lSession $lDesign&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;although this saves the design file it does not save it as an opj file as well also there is no file view or hierarchical view in the capture window.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;i have to exit out of capture and load the design file this creates the opj file and also creates the view window with the file and hierarchical view&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Is there anyone out there that may know what i am doing wrong&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Im doing the code in bits and pieces the end result is a kicad file importer for not only capture but later for pcb&lt;br /&gt;&lt;br /&gt;Im doing this because kicad imports Altium Binary and CadStar binary format files and also has a pretty good gerber to pcb reverse engineering tool so i can save legacy files that we have lost the design tools for&lt;/p&gt;</description></item><item><title>RE: how to create a design file in capture using tcl</title><link>https://community.cadence.com/thread/1434882?ContentTypeID=1</link><pubDate>Fri, 02 Oct 2026 05:50:25 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:716dcb29-1ab7-46ca-b5b7-a7dc3c4415cd</guid><dc:creator>PatEscher</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1434882?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/70350/how-to-create-a-design-file-in-capture-using-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;The easiest way is to create the opj file manually through tcl.&lt;br /&gt;&lt;br /&gt;proc InitializeOpj {libraryName} {&lt;br /&gt;&amp;nbsp; &amp;nbsp; # initialize opj if not exists yet&lt;br /&gt;&amp;nbsp; &amp;nbsp; set base [regsub "(.*)(\.olb)" $libraryName "\\1"]&lt;br /&gt;&amp;nbsp; &amp;nbsp; set opjPath &amp;quot;$base.opj&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; set fexist [file exist $opjPath]&lt;br /&gt;&amp;nbsp; &amp;nbsp; if {!$fexist} {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set filename [file tail $libraryName]&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set opjContent [open "$opjPath" "w"]&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; puts $opjContent {(ExpressProject &amp;quot;&amp;quot;}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; puts $opjContent {&amp;nbsp; (Folder &amp;quot;Design Resources&amp;quot;}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; puts $opjContent {&amp;nbsp; &amp;nbsp; (Folder &amp;quot;Library&amp;quot;)}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; puts $opjContent &amp;quot;&amp;nbsp; &amp;nbsp; (File \&amp;quot;.\\$filename\&amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; puts $opjContent {&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Type &amp;quot;Schematic Library&amp;quot;))}&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; puts $opjContent {&amp;nbsp; &amp;nbsp; (DOCKED &amp;quot;TRUE&amp;quot;)}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; puts $opjContent {&amp;nbsp; &amp;nbsp; )}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; puts $opjContent {)}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; close $opjContent&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: how to create a design file in capture using tcl</title><link>https://community.cadence.com/thread/1434880?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2026 21:25:44 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:b73827a9-49ff-4e5d-a64e-1c23d1e73754</guid><dc:creator>digital1</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1434880?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/70350/how-to-create-a-design-file-in-capture-using-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi &lt;a href="https://community.cadence.com/members/technobobby"&gt;TechnoBobby&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Thank you that worked however this bit i didnt like&lt;br /&gt;&lt;br /&gt;# Open the DSN in Capture&lt;br /&gt;Open {C:/path/to/DboTest.dsn}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;although it worked it gave me a dialog box to click ok on is there any way it can be done without this dialog box.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Other than that im happy with the result&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: how to create a design file in capture using tcl</title><link>https://community.cadence.com/thread/1434845?ContentTypeID=1</link><pubDate>Thu, 01 Oct 2026 07:57:31 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f2842d40-d998-49e0-949c-13511d5c1998</guid><dc:creator>TechnoBobby</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1434845?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/70350/how-to-create-a-design-file-in-capture-using-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi &lt;a href="https://community.cadence.com/members/digital1"&gt;digital1&lt;/a&gt;&amp;nbsp;,&lt;br /&gt;&lt;br /&gt;Since the design is being created through the Dbo API, and it is not being opened as a Capture project, so the OPJ and Project Manager views are not initialized until the design is reopened.&lt;br /&gt;&lt;br /&gt;You can either use the GUI commands to create the project, or continue with the Dbo approach and reopen the design&amp;nbsp;for doing further processing.&lt;br /&gt;&lt;br /&gt;To discover the GUI commands, enable journaling in the Capture Command Window:&lt;br /&gt;&lt;br /&gt;SetOptionBool Journaling TRUE&lt;br /&gt;&lt;br /&gt;Then manually create a project and review the recorded commands.&lt;br /&gt;&lt;br /&gt;If you would like to continue with your current approach, then after saving the design, remove the design from the session using below commands:&lt;br /&gt;&lt;br /&gt;$lSession RemoveDesign $lDesign&lt;br /&gt;&lt;br /&gt;# Delete the session&lt;br /&gt;DboTclHelper_sDeleteSession $lSession&lt;br /&gt;&lt;br /&gt;# Open the DSN in Capture&lt;br /&gt;Open {C:/path/to/DboTest.dsn}&lt;br /&gt;&lt;br /&gt;And then continue all further processing&amp;nbsp;on the design opened.&lt;br /&gt;&lt;br /&gt;Hope this helps!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Re-creating the ASCII .csa files of Project Manager, for System Capture</title><link>https://community.cadence.com/thread/1409364?ContentTypeID=1</link><pubDate>Tue, 22 Sep 2026 13:22:06 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f136de8b-53ca-4223-b55d-e69027e7bf7e</guid><dc:creator>KK202609187250</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1409364?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66343/re-creating-the-ascii-csa-files-of-project-manager-for-system-capture/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I parse the .csa files in order to auto-generate a Design Verification document. I use the coordinates called out in the .csa files, to trace the wires from IC pins, to their respective off-page ports, in order to determine the pin directions(input, output, bidir, etc). This tells me where to make DV measurements. Our schematics are very large - hundreds of pages, so it&amp;#39;s a bit impractical to generate the DV by hand. If I&amp;nbsp;can get a TCL script to generate the equivalent .csa files, I can continue auto-generating the DV documents.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re-creating the ASCII .csa files of Project Manager, for System Capture</title><link>https://community.cadence.com/thread/66343?ContentTypeID=0</link><pubDate>Mon, 21 Sep 2026 13:23:22 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:3585bece-4b55-4f33-b73c-9bce8a753b3a</guid><dc:creator>KK202609187250</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/66343?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66343/re-creating-the-ascii-csa-files-of-project-manager-for-system-capture/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;My company used to use Project Manager to create schematics. Now, they use System Capture(Allegro X Designer).&lt;/p&gt;
&lt;p&gt;When using Project Manager, the individual schematic sheets were available in ASCII format, as &amp;quot;.csa&amp;quot; files, in the &amp;quot;sch_1&amp;quot; directory.&lt;/p&gt;
&lt;p&gt;Under System Capture, this is no longer the case.&lt;/p&gt;
&lt;p&gt;I&amp;#39;d like to be able to re-create those &amp;quot;.csa&amp;quot; files, in System Capture(Allegro X Designer).&lt;/p&gt;
&lt;p&gt;Were the &amp;quot;.csa&amp;quot; files generated by a TCL scipt? If so, is it still available for me to use?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Karl&lt;/p&gt;</description></item><item><title>RE: Re-creating the ASCII .csa files of Project Manager, for System Capture</title><link>https://community.cadence.com/thread/1409363?ContentTypeID=1</link><pubDate>Tue, 22 Sep 2026 13:06:50 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f5d0eac5-e417-4873-969c-8b19d927bc77</guid><dc:creator>TechnoBobby</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1409363?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66343/re-creating-the-ascii-csa-files-of-project-manager-for-system-capture/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size:inherit;"&gt;Hi &lt;a href="https://community.cadence.com/members/kk202609187250"&gt;KK202609187250&lt;/a&gt;&amp;nbsp;,&lt;br /&gt;&lt;br /&gt;Please note that the legacy .csa files used by Project Manager are not exposed as user-accessible files in Allegro X Designer/System Capture.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:inherit;"&gt;Before I investigate whether there is a way to recreate or export data in a format similar to .csa, could you let me know what your end goal is for obtaining these files?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:inherit;"&gt; Understanding how the .csa files were being used will help determine whether there is an equivalent workflow available in System Capture or whether a custom export solution would be required.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: TCl script to replace selected parts with a component from library</title><link>https://community.cadence.com/thread/1409362?ContentTypeID=1</link><pubDate>Tue, 22 Sep 2026 10:04:31 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:df08ebc5-79ea-4e49-9927-2819585dac5c</guid><dc:creator>PatEscher</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1409362?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/59683/tcl-script-to-replace-selected-parts-with-a-component-from-library/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;a href="https://community.cadence.com/members/cadap"&gt;CadAP&lt;/a&gt;&amp;nbsp;can you provide information what&amp;nbsp;bNewVersion, and&amp;nbsp;updateDPfromLib does?&lt;/p&gt;
&lt;p&gt;ReplaceInst(pOldInst, packageName, part, device, status, bUpdate,&lt;br /&gt;Class : DboPage(DboBaseObject):&lt;br /&gt;bNewVersion, bPreserverefDes, bDeleteOldInst = 1,&lt;br /&gt;Class : DboPage(DboBaseObject):&lt;br /&gt;updateDPfromLib = 0) : returns DboPlacedInst&lt;br /&gt;Class : DboPage(DboBaseObject):&lt;br /&gt;Parameters:&lt;br /&gt;pOldInst: DboPlacedInst *&lt;br /&gt;packageName: CString &amp;amp;&lt;br /&gt;part: DboLibPart *&lt;br /&gt;device: DboDevice *&lt;br /&gt;status: DboState &amp;amp;&lt;br /&gt;bUpdate: int&lt;br /&gt;bNewVersion: int&lt;br /&gt;bPreserverefDes: int&lt;br /&gt;bDeleteOldInst: int&lt;br /&gt;updateDPfromLib: int&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: TCL Script to check the property of component in system capture.</title><link>https://community.cadence.com/thread/1409342?ContentTypeID=1</link><pubDate>Thu, 17 Sep 2026 14:12:57 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:5e85b34b-7cd1-4177-9c09-79df53f64e41</guid><dc:creator>MZ20250602835</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1409342?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66339/tcl-script-to-check-the-property-of-component-in-system-capture/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Dear all,&lt;/p&gt;
&lt;p&gt;i found the solution&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ask.cadence.com/ASK/article-viewer?id=a1OPP000001V7xV2AS&amp;amp;pageName=article-viewer"&gt;How to filter components based on a specific property, add those components to a variant, and mark them as DNI&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TCL Script to check the property of component in system capture.</title><link>https://community.cadence.com/thread/66339?ContentTypeID=0</link><pubDate>Thu, 17 Sep 2026 13:15:32 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:b08f7fbe-5ee4-4496-816b-c47372e8e780</guid><dc:creator>MZ20250602835</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/66339?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66339/tcl-script-to-check-the-property-of-component-in-system-capture/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Dear all,&lt;/p&gt;
&lt;p&gt;i try to make a tcl script to&amp;nbsp;looks up components on each page in system capture. If a component has the&amp;nbsp;property VAR_1,&amp;nbsp;it enters the VAR_1 variant view(i created a variant with name VAR_1),&amp;nbsp;marks that component as Do Not Install (DNI), and cleanly exits the variant view using variantOFF.&lt;/p&gt;
&lt;p&gt;the following is my codes: unfortunately it does`t work may i ask how could i correct these codes to make it work? many thanks Moyan.&lt;/p&gt;
&lt;p&gt;# #############################################################################&lt;br /&gt;# setSelfToDNI&lt;br /&gt;# This procedure looks up components on each page. If a component has the &lt;br /&gt;# property VAR_1, it enters the VAR_1 variant view context, marks that component&lt;br /&gt;# as Do Not Install (DNI), and cleanly exits the variant context using variantOFF.&lt;br /&gt;# #############################################################################&lt;/p&gt;
&lt;p&gt;proc setSelfToDNI {} {&lt;br /&gt; # 1. Initialize environment settings and Batch Mode matching your master structure&lt;br /&gt; sch::enterBatchMode&lt;/p&gt;
&lt;p&gt;# Optional structure hook: Configure project settings to keep variant structures active&lt;br /&gt; configureProjectExp -variant true&lt;br /&gt; configureProjectExp -blocks true&lt;br /&gt; configureProjectExp -library false&lt;/p&gt;
&lt;p&gt;# 2. Get all page information using the schPageUtils structural format&lt;br /&gt; set pageInfoAll [schPageUtils::getDesignPagesAllInfo]&lt;br /&gt; set pageSize [schPageUtils::getPagesInfoSize $pageInfoAll]&lt;/p&gt;
&lt;p&gt;puts &amp;quot;--- STARTING STRUCTURAL DNI COMPONENT SCAN ---&amp;quot;&lt;br /&gt; puts &amp;quot;Total project pages to process: $pageSize&amp;quot;&lt;/p&gt;
&lt;p&gt;# 3. Iterate over each sheet using the exact loop constraint from your master code&lt;br /&gt; for {set i 1} {$i &amp;lt;= $pageSize} {incr i} {&lt;/p&gt;
&lt;p&gt;set viewId [schPageUtils::getPageId $pageInfoAll $i]&lt;br /&gt; set pageName [schPageUtils::getPageName $pageInfoAll $i]&lt;/p&gt;
&lt;p&gt;puts &amp;quot;Opening page context: $pageName&amp;quot;&lt;br /&gt; openItem $viewId SCH PAGE&lt;/p&gt;
&lt;p&gt;set pageId [sch::dbGetActivePage]&lt;br /&gt; set itemId [sch::dbGetPageItems $pageId]&lt;/p&gt;
&lt;p&gt;# 4. Traverse canvas objects on the active page&lt;br /&gt; foreach item $itemId {&lt;/p&gt;
&lt;p&gt;# Extract the user-facing text label identifier (RefDes text block)&lt;br /&gt; set compRefDes &amp;quot;&amp;quot;&lt;br /&gt; catch {&lt;br /&gt; set compRefDes [sch::dbGetItemText $item]&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;# If the item doesn&amp;#39;t contain reference designator text context, pass it&lt;br /&gt; if {$compRefDes eq &amp;quot;&amp;quot;} {&lt;br /&gt; continue&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;# Map the graphical item pointer directly to its root logical block definition&lt;br /&gt; set compInst &amp;quot;&amp;quot;&lt;br /&gt; catch {&lt;br /&gt; set compInst [sch::dbGetCompInst $item]&lt;br /&gt; }&lt;br /&gt; if {$compInst eq &amp;quot;&amp;quot;} {&lt;br /&gt; continue&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;# 5. Look up the presence of the target VAR_1 property on the logical instance block&lt;br /&gt; set hasVar1 0&lt;br /&gt; set var1Value &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;if {![catch {&lt;br /&gt; set var1Value [sch::dbGetPropValue $compInst VAR_1]&lt;br /&gt; }]} {&lt;br /&gt; if {$var1Value ne &amp;quot;&amp;quot;} {&lt;br /&gt; set hasVar1 1&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;# 6. If match is verified, execute your variant isolation and toggle pipeline&lt;br /&gt; if {$hasVar1} {&lt;br /&gt; puts &amp;quot; -&amp;gt; Found Component $compRefDes on $pageName with VAR_1 property.&amp;quot;&lt;/p&gt;
&lt;p&gt;# Step A: Jump into the targeted &amp;quot;VAR_1&amp;quot; variant viewing perspective&lt;br /&gt; puts &amp;quot; Entering variant view context via &amp;#39;viewVariant -variant VAR_1&amp;#39;...&amp;quot;&lt;br /&gt; if {[catch {viewVariant -variant VAR_1} err]} {&lt;br /&gt; puts &amp;quot; [Warning] Failed to switch to variant view mode &amp;#39;VAR_1&amp;#39;: $err&amp;quot;&lt;br /&gt; continue&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;# Step B: Re-instantiate the canvas window pointer inside the variant configuration plane&lt;br /&gt; openItem $viewId SCH PAGE&lt;/p&gt;
&lt;p&gt;# Step C: Isolate and highlight the target element matching your selection framework&lt;br /&gt; unselectObject -all&lt;br /&gt; sch::dbSelectObjectById $item $sch::DBTrue&lt;/p&gt;
&lt;p&gt;# Step D: Apply the structural property change marking the part to Do Not Install&lt;br /&gt; if {[catch {setDNI -variant VAR_1 -comp $compRefDes -state true} err]} {&lt;br /&gt; puts &amp;quot; [Warning] Could not flag component $compRefDes as DNI: $err&amp;quot;&lt;br /&gt; } else {&lt;br /&gt; puts &amp;quot; [Success] Component $compRefDes successfully marked DNI inside VAR_1.&amp;quot;&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;# Step E: Safely step back into the base schematic workspace via variantOFF as requested&lt;br /&gt; puts &amp;quot; Exiting variant tracking context via &amp;#39;variantOFF&amp;#39;...&amp;quot;&lt;br /&gt; if {[catch {variantOFF} err]} {&lt;br /&gt; puts &amp;quot; [Warning] Failed to execute structural command variantOFF: $err&amp;quot;&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;# Step F: Reopen the base schematic context so downstream loops keep valid data pointers&lt;br /&gt; openItem $viewId SCH PAGE&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;# 7. Close and cycle the page context matching your structural pattern&lt;br /&gt; closeItem $viewId&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;# 8. Commit changes globally and finalize execution&lt;br /&gt; saveAll&lt;br /&gt; sch::leaveBatchMode&lt;br /&gt; puts &amp;quot;--- COMPLETED DNI TRACKING PIPELINE SUCCESSFUL ---&amp;quot;&lt;br /&gt;}&lt;/p&gt;</description></item><item><title>Disable CM updates or Audits during Component Replace through tcl</title><link>https://community.cadence.com/thread/66123?ContentTypeID=0</link><pubDate>Wed, 01 Jul 2026 10:08:22 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:a73d5503-cb9e-4206-a2b6-d50e3c3e2177</guid><dc:creator>PatEscher</dc:creator><slash:comments>4</slash:comments><comments>https://community.cadence.com/thread/66123?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66123/disable-cm-updates-or-audits-during-component-replace-through-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;we have written TCL code which programmatically replaces a component instance on the schematic with another one from the CIS library.&lt;/p&gt;
&lt;p&gt;For this we do a full replace, set all the properties and also consider any user properties and merge them. so a quite complex process, but everything is working fine.&lt;/p&gt;
&lt;p&gt;But we see some performance issues when doing this in OrCAD.&lt;/p&gt;
&lt;p&gt;Apparently OrCAD tries to update CM connectivity and XNets when we do this. we see in the status bar messages like &amp;quot;Pushing Connectivity changes in CM&amp;quot; , &amp;quot;ECSet Audit on Net Connectivity&amp;quot; Change, etc.&lt;/p&gt;
&lt;p&gt;is there any possibility to turn these updates off when we do the replace of the instance (it is not a single instance, but can be dozens or hundreds) and then later on turn it on again and do the &amp;#39;full update&amp;#39; ?&lt;br /&gt;Can this be done through a tcl command, maybe like&amp;nbsp;DboDesign_SetConnectivityUpdateTracking or maybe some Preference Settings?&lt;br /&gt;&lt;br /&gt;Thanks&lt;/p&gt;
&lt;p&gt;Patrick&lt;/p&gt;</description></item><item><title>RE: Disable CM updates or Audits during Component Replace through tcl</title><link>https://community.cadence.com/thread/1409179?ContentTypeID=1</link><pubDate>Wed, 19 Aug 2026 07:03:31 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:2397baef-e726-46f7-bb43-38ca6c8ac5a4</guid><dc:creator>PatEscher</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1409179?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66123/disable-cm-updates-or-audits-during-component-replace-through-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;a href="https://community.cadence.com/members/technobobby"&gt;TechnoBobby&lt;/a&gt;&amp;nbsp;&lt;br /&gt;did you find a way how to disable the Constrain Manager temporarily through tcl and then activate it again and execute an update run?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: OrCAD how to create a correct Variant report through TCL</title><link>https://community.cadence.com/thread/1409167?ContentTypeID=1</link><pubDate>Fri, 14 Aug 2026 12:37:42 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:177da50f-eff4-43c9-b140-033883bd45f0</guid><dc:creator>PatEscher</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1409167?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66222/orcad-how-to-create-a-correct-variant-report-through-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello TechnoBobby,&amp;nbsp;&lt;br /&gt;This code does only work for non-multi parts Components, but not necessarily for parts using multi-part symbols, where you manually add the individual part (so the designator) to the groups.&lt;br /&gt;PartManager handles this somehow internally, so we tried to replicate this functionality.&lt;br /&gt;At the end, we need to get all the part occurences from the valid group, and then try to find out what is the primary part used for the stuffing information by some more complex logic.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>OrCAD how to create a correct Variant report through TCL</title><link>https://community.cadence.com/thread/66222?ContentTypeID=0</link><pubDate>Thu, 30 Jul 2026 12:51:47 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:5a926c28-8775-413c-8bf7-fc3b35468ffe</guid><dc:creator>PatEscher</dc:creator><slash:comments>3</slash:comments><comments>https://community.cadence.com/thread/66222?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66222/orcad-how-to-create-a-correct-variant-report-through-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&amp;nbsp;&lt;br /&gt;we are trying to build a Variant BOM Report through tcl and have been inspired by the sample tcl file capCIS.tcl.&lt;/p&gt;
&lt;p&gt;Everything works fine, as long as you do the Group assignment through the Part Manager.&lt;/p&gt;
&lt;p&gt;However, if you do it through the Schematic Right Mouse button Action, you will most likely get into trouble as soon as you use Components with multiple parts (does not matter if homogenous or heterogenous).&lt;br /&gt;&lt;br /&gt;So what I do is the following:&lt;/p&gt;
&lt;p&gt;I place a multi part component, so let&amp;#39;s say K401A and K401B in my schematic&lt;br /&gt;&lt;img style="max-height:152px;max-width:249px;" height="152" src="https://community.cadence.com/resized-image/__size/498x304/__key/communityserver-discussions-components-files/138/pastedimage1785414411003v1.png" width="249" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Looking at the Part Manager I see that K401 (Designator A) is added to the common Group. --&amp;gt; so far so good --&amp;gt; the Component is Mounted&lt;br /&gt;then I add it to a Variant group and set it to &amp;quot;Not present&amp;quot; --&amp;gt; so far so good --&amp;gt; the Component is Unmounted&lt;br /&gt;&lt;br /&gt;Then I go ahead in the schematic, select the Part K401B and use the right Mouse button to add it to a Variant&amp;nbsp; Group --&amp;gt; WOW, why I am allowed to do this, the &amp;quot;Physical Part&amp;quot; should already been added before.&lt;/p&gt;
&lt;p&gt;Now,back in Part Manager, I still see that the Part K401 (Designator A) is&amp;nbsp; set to &amp;quot;Not present&amp;quot;... but... when we now run the tcl code to get the Variant BOM, I see both part entries, K401A and K401B, both in the same group, but one as &lt;strong&gt;present&lt;/strong&gt; and the other one as &lt;strong&gt;not present&lt;/strong&gt; --&amp;gt; why is it be possible to have such a situation. I have ONE physical Component which is a MultiPart package (or fractured Symbol). I should be be able to assign the individual parts to different groups. If I add one part to a group, then it must be valid for all the parts (once again, we are dealing with one physical Component).&lt;/p&gt;
&lt;p&gt;My debug output verifies this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;[DEBUG] 2026-07-30 11:22:34:557 SubGroup Ch4-Relay Duplicator &lt;strong&gt;unmounted&lt;/strong&gt; PartId:4293&amp;nbsp; and refDes &lt;strong&gt;K401A&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:inherit;"&gt;[DEBUG] 2026-07-30 11:22:34:557 SubGroup Ch4-Relay Duplicator &lt;strong&gt;MOUNTED&lt;/strong&gt; PartId:4296 and refDes &lt;strong&gt;K401B &lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;So what I am missing here? What is the usecase which makes this required/useful?&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;in addition, I have absolutely no possibility to visualize this issue nor to correct it. I would need to know what is going wrong somehow and then manually remove K401B through the Command action in the schematic.&lt;/p&gt;
&lt;p&gt;How can we identify and deal with this situation and make sure, that the BOM is created on the physical components and not the instantiated parts. Not clear to me which tcl functions to use for this.&lt;/p&gt;
&lt;p&gt;I though about considering the Reference Designator/Designator, but this would also not be really working, as I can manually assign a RefDes and therefore they could be the same but are indeed different physical components (--&amp;gt; yes, this is a design error, but we would need to deal with it somehow). So I would need to have a possibility to identify if a component is mounted or not across all available parts of this component (essentially it seems that if one part is set to &lt;strong&gt;not present&lt;/strong&gt;, then the component is &lt;strong&gt;not present&lt;/strong&gt;)&lt;br /&gt;&lt;br /&gt;When I create a BOM report through the Part Manager, then everything is fine, so it means to me that there must be somehow a possibility to work on the physical components.&lt;br /&gt;&lt;br /&gt;Any idea appreciated&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;+Patrick&lt;/p&gt;</description></item><item><title>How to use TCL commands to retrieve text content and formatting from a circuit diagram page</title><link>https://community.cadence.com/thread/66259?ContentTypeID=0</link><pubDate>Thu, 13 Aug 2026 01:47:44 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:ed7b42d9-39af-493e-a032-d6518af56ee0</guid><dc:creator>FK202606088435</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/66259?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66259/how-to-use-tcl-commands-to-retrieve-text-content-and-formatting-from-a-circuit-diagram-page/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;Regarding retrieving the text content and formatting from a circuit page using TCL commands,&lt;br /&gt;I need the text content, text size, font, and font style.&lt;/p&gt;
&lt;p&gt;I&amp;#39;d like to ask if there are TCL commands that can extract the same information as in File&amp;rarr;Export&amp;rarr;Design XML in the following UI interface?&lt;/p&gt;
&lt;p&gt;&amp;lt;GraphicCommentTextInst&amp;gt;&lt;br /&gt;&amp;lt;Defn color=&amp;quot;48&amp;quot; dbId=&amp;quot;1715717&amp;quot; locX=&amp;quot;21&amp;quot; locY=&amp;quot;19&amp;quot; name=&amp;quot;001 COVER PAGE&amp;quot; rotation=&amp;quot;0&amp;quot; textJustification=&amp;quot;0&amp;quot; x1=&amp;quot;21&amp;quot; x2=&amp;quot;261&amp;quot; y1=&amp;quot;19&amp;quot; y2=&amp;quot;47&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;TextFont&amp;gt;&lt;br /&gt;&amp;lt;Defn charset=&amp;quot;0&amp;quot; escapement=&amp;quot;0&amp;quot; height=&amp;quot;-27&amp;quot; italic=&amp;quot;0&amp;quot; name=&amp;quot;Arial&amp;quot; orientation=&amp;quot;0&amp;quot; weight=&amp;quot;700&amp;quot; width=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/TextFont&amp;gt;&lt;br /&gt;&amp;lt;/GraphicCommentTextInst&amp;gt;&lt;/p&gt;
&lt;p&gt;Below is an example of an error I encountered when trying to retrieve font format, text size, and text font:&lt;/p&gt;
&lt;p&gt;# Retrieving LOGFONT object index (but pure TCL cannot parse its internal fields)&lt;br /&gt;set lFont [DboGraphicCommentTextInst_sGetFont $lTextInst $lStatus]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Best Regards,&lt;/p&gt;</description></item><item><title>RE: How to use TCL commands to retrieve text content and formatting from a circuit diagram page</title><link>https://community.cadence.com/thread/1409164?ContentTypeID=1</link><pubDate>Fri, 14 Aug 2026 06:07:55 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f5a37d39-b16c-434e-a70d-2adfb2e9d223</guid><dc:creator>FK202606088435</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1409164?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66259/how-to-use-tcl-commands-to-retrieve-text-content-and-formatting-from-a-circuit-diagram-page/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Sorry, maybe my question wasn&amp;#39;t clear. &lt;br /&gt;I wanted to capture all the formatting specifications of the text already on the page. &lt;br /&gt;Although the built-in UI&amp;#39;s Export --&amp;gt; XML shows detailed text font specifications, that file is too huge, so I only want to capture the text content.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is my failed command:&lt;/p&gt;
&lt;p&gt;set lFont [DboGraphicCommentTextInst_sGetFont $lTextInst $lStatus]&lt;br /&gt; &lt;br /&gt; set lFontFaceName [$lFont cget -lfFaceName]&lt;br /&gt; set lFontHeight [$lFont cget -lfHeight]&lt;br /&gt; set lFontSize [expr {abs($lFontHeight)}]&lt;br /&gt; set lFontWeight [$lFont cget -lfWeight]&lt;br /&gt; set lFontItalic [$lFont cget -lfItalic]&lt;br /&gt; set lFontUnderline [$lFont cget -lfUnderline]&lt;/p&gt;
&lt;p&gt;puts $outFile &amp;quot; &amp;lt;TextFont&amp;gt;&amp;quot;&lt;br /&gt; puts $outFile &amp;quot; &amp;lt;Defn fontName=\&amp;quot;$lFontFaceName\&amp;quot; fontSize=\&amp;quot;$lFontSize\&amp;quot; fontWeight=\&amp;quot;$lFontWeight\&amp;quot; italic=\&amp;quot;$lFontItalic\&amp;quot; underline=\&amp;quot;$lFontUnderline\&amp;quot; /&amp;gt;&amp;quot;&lt;br /&gt; puts $outFile &amp;quot; &amp;lt;/TextFont&amp;gt;&amp;quot;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How do I use the TCL command to save an image and a Visio drawing file from a DSN file as a new file?</title><link>https://community.cadence.com/thread/1409163?ContentTypeID=1</link><pubDate>Thu, 13 Aug 2026 16:10:16 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:e634941e-76b9-40ed-907d-542be249ac2d</guid><dc:creator>TechnoBobby</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/1409163?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66208/how-do-i-use-the-tcl-command-to-save-an-image-and-a-visio-drawing-file-from-a-dsn-file-as-a-new-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi &lt;a href="https://community.cadence.com/members/fk202606088435"&gt;FK202606088435&lt;/a&gt;&amp;nbsp;,&lt;br /&gt;&lt;br /&gt;To retrieve the text content, you can try:&lt;br /&gt;&lt;br /&gt;set lObjs [GetSelectedObjects]&lt;br /&gt;set lComment [$lObj GetDboCommentText]&lt;br /&gt;set txt [DboTclHelper_sMakeCString]&lt;br /&gt;$lComment GetText $txt&lt;br /&gt;puts &amp;quot;Text: [DboTclHelper_sGetConstCharPtr $txt]&amp;quot;&lt;br /&gt;&lt;br /&gt;You can also iterate through the effective properties of the selected text object which will return text, bounding box, font name, etc:&lt;br /&gt;&lt;br /&gt;proc EffectivePropsAll {lObject} {&lt;br /&gt; set lStatus [DboState]&lt;br /&gt; set lPropsIter [$lObject NewEffectivePropsIter $lStatus]&lt;br /&gt; set lPrpName [DboTclHelper_sMakeCString]&lt;br /&gt; set lPrpValue [DboTclHelper_sMakeCString]&lt;br /&gt; set lPrpType [DboTclHelper_sMakeDboValueType]&lt;br /&gt; set lEditable [DboTclHelper_sMakeInt]&lt;br /&gt;&lt;br /&gt;set lStatus [$lPropsIter NextEffectiveProp $lPrpName $lPrpValue $lPrpType $lEditable]&lt;br /&gt; while {[$lStatus OK] == 1} {&lt;br /&gt; puts &amp;quot;[DboTclHelper_sGetConstCharPtr $lPrpName] = [DboTclHelper_sGetConstCharPtr $lPrpValue]&amp;quot;&lt;br /&gt; set lStatus [$lPropsIter NextEffectiveProp $lPrpName $lPrpValue $lPrpType $lEditable]&lt;br /&gt; }&lt;br /&gt; delete_DboEffectivePropsIter $lPropsIter&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;EffectivePropsAll [GetSelectedObjects]&lt;br /&gt;&lt;br /&gt;Hope this helps!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How do I use the TCL command to save an image and a Visio drawing file from a DSN file as a new file?</title><link>https://community.cadence.com/thread/66208?ContentTypeID=0</link><pubDate>Tue, 28 Jul 2026 06:48:23 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:0a6c069e-b008-449b-8f93-4e505539dac8</guid><dc:creator>FK202606088435</dc:creator><slash:comments>3</slash:comments><comments>https://community.cadence.com/thread/66208?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66208/how-do-i-use-the-tcl-command-to-save-an-image-and-a-visio-drawing-file-from-a-dsn-file-as-a-new-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;My current version is 23.1.&amp;nbsp;How do I use the TCL command to save an image and a Visio drawing file from a DSN file as a new file?&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve tried the Base64 decoding mentioned on pages 762 and 767 of the OrCAD_Capture_TclTk_Extensions.pdf file, but it&amp;#39;s not working. The code snippet provided is:&lt;/p&gt;
&lt;p&gt;Invalid command name &amp;quot;DboTclHelper_sGetBase64ImageData&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</description></item><item><title>RE: How to use TCL commands to retrieve text content and formatting from a circuit diagram page</title><link>https://community.cadence.com/thread/1409161?ContentTypeID=1</link><pubDate>Thu, 13 Aug 2026 15:29:30 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:cd9bc1ae-abea-41d8-9ba4-08d297ae7224</guid><dc:creator>CadAP</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/1409161?ContentTypeID=1</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66259/how-to-use-tcl-commands-to-retrieve-text-content-and-formatting-from-a-circuit-diagram-page/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Try below api for text fontsize and fontname.&lt;/p&gt;
&lt;p&gt;DboTclHelper_sMakeLOGFONT(lfFaceName, lfHeight, lfWidth, lfEscapement, lfOrientation,&lt;br /&gt;lfWeight, lfItalic, lfUnderline, lfStrikeOut,&lt;br /&gt;lfCharSet, lfOutPrecision, lfClipPrecision,&lt;br /&gt;lfQuality, lfPitchAndFamily) : returns LOGFONT&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;For example, setting text arial and text size 10&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; set fntpbj [ DboTclHelper_sMakeLOGFONT "Arial" 16 0 0 0 400 0 0 0 0 7 0 1 16]&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>