<?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>Thu, 30 Jul 2026 12:51:47 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>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>2</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;&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>2</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;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Constraint setup via TCL in ASC?</title><link>https://community.cadence.com/thread/66192?ContentTypeID=0</link><pubDate>Thu, 23 Jul 2026 05:36:55 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:77ff1d91-1259-4a5e-9288-9f20f8d53071</guid><dc:creator>Gelzone</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/66192?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66192/constraint-setup-via-tcl-in-asc/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I need to do a manual process for each schematic:&amp;nbsp;Electrical Analysis -&amp;gt; Constraint Manager -&amp;gt; Edit -&amp;gt; a window popup (the screenshot) -&amp;gt; Tools -&amp;gt; Options and check the items below:&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:480px;max-width:640px;" alt=" " src="https://community.cadence.com/resized-image/__size/1280x960/__key/communityserver-discussions-components-files/138/pastedimage1784784598693v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;I found it is not a global setting so I need to set this one by one.&lt;/p&gt;
&lt;p&gt;I&amp;#39;d like to know is there any command/script can handle this? I just find &lt;code&gt;cnsmgr&lt;/code&gt; to open the window but can not manipulate the choice.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Or another way, if ASC has a config file just like OrCAD&amp;#39;s &lt;strong&gt;Capture.ini&lt;/strong&gt;? Maybe I can set them in this kind of file.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&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>3</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;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to successfully place a custom TitleBlock in the TCL instructions for creating an OPJ</title><link>https://community.cadence.com/thread/66051?ContentTypeID=0</link><pubDate>Tue, 09 Jun 2026 03:00:04 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:017c8c09-f61e-473c-8f23-0208db410e81</guid><dc:creator>FK202606088435</dc:creator><slash:comments>4</slash:comments><comments>https://community.cadence.com/thread/66051?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/66051/how-to-successfully-place-a-custom-titleblock-in-the-tcl-instructions-for-creating-an-opj/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi, Sir:&lt;/p&gt;
&lt;p&gt;In the OrCAD Capture CIS 23.1,&lt;/p&gt;
&lt;p&gt;In the DSN page of the manually created project, I can successfully place my custom TitleBlock using the same TCL commands.&lt;/p&gt;
&lt;p&gt;However, it does not work in the OPJ I currently create using the following TCL commands,&lt;/p&gt;
&lt;p&gt;and there are no error messages. After the entire circuit diagram is drawn, the lower right corner is still blank.&lt;/p&gt;
&lt;p&gt;Thank you for your careful and patient guidance.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Add a tcl command I created and registered to the toolbar and also assign an icon to it programmatically for capture 17.2 version</title><link>https://community.cadence.com/thread/65997?ContentTypeID=0</link><pubDate>Sun, 10 May 2026 13:27:23 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:322ae390-a37e-47b5-9142-f85db609f40b</guid><dc:creator>RS202512234819</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/65997?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65997/add-a-tcl-command-i-created-and-registered-to-the-toolbar-and-also-assign-an-icon-to-it-programmatically-for-capture-17-2-version/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,Sir:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; I had create a tcl command, and I want to register to the toolbar&amp;nbsp; and assign an icon to it for capture 17.2,&lt;/p&gt;
&lt;p&gt;I had try the &amp;quot;new&amp;quot; button from menu &amp;quot;Tool&amp;quot;---&amp;gt;&amp;quot;Customize&amp;quot;----&amp;gt;&amp;quot;Toolbars&amp;quot;,but it can&amp;#39;t bind the tcl command,&lt;/p&gt;
&lt;p&gt;please kindly help to give a method to&amp;nbsp;achieve it?&lt;/p&gt;
&lt;p&gt;thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TCL to set active page in the treeview using SelectPMItem</title><link>https://community.cadence.com/thread/65984?ContentTypeID=0</link><pubDate>Mon, 04 May 2026 08:51:01 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:101ef490-6a09-49b9-812b-61d3400b5ec6</guid><dc:creator>fSeyer</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/65984?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65984/tcl-to-set-active-page-in-the-treeview-using-selectpmitem/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Could anyone suggest an alternative to &lt;code data-start="371" data-end="385"&gt;SelectPMItem&lt;/code&gt;?&lt;br data-start="386" data-end="389" /&gt; I&amp;rsquo;m using it to set the active page in a tree view, but it ignores page names that contain &amp;quot;0&amp;quot;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Use TCL to get all "page name" when no title block</title><link>https://community.cadence.com/thread/65958?ContentTypeID=0</link><pubDate>Tue, 28 Apr 2026 01:13:28 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:30239092-09bf-4720-927a-12d83c66d343</guid><dc:creator>RS202512234819</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/65958?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65958/use-tcl-to-get-all-page-name-when-no-title-block/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi, Sir:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;at now, my design had no titleblock on the all pages,&lt;/p&gt;
&lt;p&gt;and I want to use TCL to put titleblock an the all pages,&lt;/p&gt;
&lt;p&gt;but I can&amp;#39;t get the &amp;quot;page name&amp;quot;&amp;nbsp; value at the time.&lt;/p&gt;
&lt;p&gt;How can I do to get the all &amp;quot;page name&amp;quot;?&lt;/p&gt;
&lt;p&gt;use want method to do it?&lt;/p&gt;
&lt;p&gt;thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Difference between SKILL and RAVEL</title><link>https://community.cadence.com/thread/65858?ContentTypeID=0</link><pubDate>Fri, 20 Mar 2026 20:49:52 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:67f4f6b4-568c-408c-b190-d758652e0412</guid><dc:creator>JuanCR</dc:creator><slash:comments>0</slash:comments><comments>https://community.cadence.com/thread/65858?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65858/difference-between-skill-and-ravel/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;SKILL provides a safe, high-level programming environment that automatically handles many traditional system programming operations, such as memory management. SKILL programs can be immediately executed in the Cadence environment.&amp;nbsp;&lt;span&gt;The SKILL programming language lets you customize and extend your design environment.&amp;nbsp;&lt;/span&gt;SKILL is ideal for rapid prototyping.&lt;/p&gt;
&lt;p&gt;RAVEL&lt;span&gt;&amp;nbsp;is a language to implement design rules for PCB and Packaging&amp;nbsp;tools. It builds on a relational view of the design data.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The below table highlights the difference between SKILL and RAVEL:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:328px;max-width:506px;" height="328" src="https://community.cadence.com/resized-image/__size/1012x656/__key/communityserver-discussions-components-files/138/pastedimage1774039625812v9.png" width="506" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Following image shows the&amp;nbsp;code of SKILL and RAVEL.&lt;/p&gt;
&lt;p&gt;The article,&amp;nbsp;&lt;a href="https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O0V000006AhKSUA0&amp;amp;pageName=ArticleContent" rel="noopener noreferrer" target="_blank"&gt;Syntax highlighting for SKILL and RAVEL in Notepad++ text editor&lt;/a&gt;, explains in more detail.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:237px;max-width:607px;" height="237" src="https://community.cadence.com/resized-image/__size/1214x474/__key/communityserver-discussions-components-files/138/pastedimage1774039728543v10.png" width="607" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DFM&amp;nbsp;Ravel Rules GUI&lt;/strong&gt;&lt;span&gt;&amp;nbsp;for PCB is shown below.&amp;nbsp;&lt;/span&gt;&lt;a href="https://community.cadence.com/cadence_blogs_8/b/pcb/posts/how-to-run-a-ravel-rule-from-the-gui" rel="noopener noreferrer" target="_blank"&gt;&lt;strong&gt;BoardSurfers: Training Insights: How to Run a RAVEL Rule from the GUI&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;span&gt;explains in detail how to run rules from&amp;nbsp;&lt;/span&gt;&lt;span&gt;the GUI&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:340px;max-width:530px;" height="340" src="https://community.cadence.com/resized-image/__size/1060x680/__key/communityserver-discussions-components-files/138/pastedimage1774039758969v11.png" width="530" alt=" " /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Audit OLB's in directory</title><link>https://community.cadence.com/thread/65812?ContentTypeID=0</link><pubDate>Fri, 06 Mar 2026 12:47:56 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:65fabc88-4015-4664-be45-7625d9b4a1f6</guid><dc:creator>Mhawley1</dc:creator><slash:comments>5</slash:comments><comments>https://community.cadence.com/thread/65812?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65812/audit-olb-s-in-directory/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello Can anybody give me a boiler plate on batch opening OLB&amp;#39;s .&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I want to be able to open an OLB , read the names of all the symbols within and then close .&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How do I parse all the graphical entities of a schematic symbol from an OLB</title><link>https://community.cadence.com/thread/65760?ContentTypeID=0</link><pubDate>Fri, 20 Feb 2026 08:29:27 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:2c565b38-b75a-4496-87ba-f62ad4d1ec7b</guid><dc:creator>andakConsultingLtd</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/65760?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65760/how-do-i-parse-all-the-graphical-entities-of-a-schematic-symbol-from-an-olb/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi everyone,&lt;/p&gt;
&lt;p&gt;I want to parse an OLB file and all its content and export the graphical details for each entity. I would be happy to get the code for the simplest scenario (e.g. olb is open in Capture, schematic symbol with a single gate) as I can extend from there but I don&amp;#39;t know how to initiate the iteration inside the OLB.&lt;/p&gt;
&lt;p&gt;It would be great if you can provide a code example.&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>New Part from XML</title><link>https://community.cadence.com/thread/65758?ContentTypeID=0</link><pubDate>Fri, 20 Feb 2026 07:09:43 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:f2ff5186-413e-4229-8a54-48241d2d6022</guid><dc:creator>YL202501275314</dc:creator><slash:comments>5</slash:comments><comments>https://community.cadence.com/thread/65758?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65758/new-part-from-xml/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This is Reference Code from Cadence Example.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And I would like to add PCB Footprint Information&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;How can I Find The information about xml ID ?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;puts $lXmlFile {&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot; ?&amp;gt;&lt;br /&gt;&amp;lt;DialogControls&amp;gt;&lt;br /&gt;&amp;lt;Control Type=&amp;quot;EDIT&amp;quot; Enable=&amp;quot;TRUE&amp;quot; Visible=&amp;quot;TRUE&amp;quot; Id=&amp;quot;16009&amp;quot;&amp;gt;}&lt;br /&gt;puts $lXmlFile &amp;quot;&amp;lt;Value&amp;gt;&amp;lt;!\[CDATA\[$lPartName\]\]&amp;gt;&amp;lt;/Value&amp;gt;&amp;quot;&lt;br /&gt;puts $lXmlFile {&amp;lt;/Control&amp;gt;&lt;br /&gt;&amp;lt;Control Type=&amp;quot;EDIT&amp;quot; Enable=&amp;quot;TRUE&amp;quot; Visible=&amp;quot;TRUE&amp;quot; Id=&amp;quot;16006&amp;quot;&amp;gt;}&lt;br /&gt;puts $lXmlFile &amp;quot;&amp;lt;Value&amp;gt;&amp;lt;!\[CDATA\[$lSecLength\]\]&amp;gt;&amp;lt;/Value&amp;gt;&amp;quot;&lt;br /&gt;puts $lXmlFile {&amp;lt;/Control&amp;gt;&lt;br /&gt;&amp;lt;Control Type=&amp;quot;EDIT&amp;quot; Enable=&amp;quot;TRUE&amp;quot; Visible=&amp;quot;TRUE&amp;quot; Id=&amp;quot;16012&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Value&amp;gt;&amp;lt;![CDATA[U]]&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;&amp;lt;/Control&amp;gt;&lt;br /&gt;&amp;lt;Control Type=&amp;quot;GROUPBOX&amp;quot; Enable=&amp;quot;TRUE&amp;quot; Visible=&amp;quot;TRUE&amp;quot; Id=&amp;quot;-1&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Value&amp;gt;&amp;lt;![CDATA[Part Numbering]]&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;&amp;lt;/Control&amp;gt;&lt;br /&gt;&amp;lt;Control Type=&amp;quot;AUTORADIO_BUTTON&amp;quot; Enable=&amp;quot;TRUE&amp;quot; Visible=&amp;quot;TRUE&amp;quot; Id=&amp;quot;16002&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Value&amp;gt;&amp;lt;![CDATA[0]]&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;&amp;lt;Text&amp;gt;&amp;lt;![CDATA[N&amp;amp;umeric]]&amp;gt;&amp;lt;/Text&amp;gt;&lt;br /&gt;&amp;lt;/Control&amp;gt;&lt;br /&gt;&amp;lt;Control Type=&amp;quot;AUTORADIO_BUTTON&amp;quot; Enable=&amp;quot;TRUE&amp;quot; Visible=&amp;quot;TRUE&amp;quot; Id=&amp;quot;16003&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Value&amp;gt;&amp;lt;![CDATA[1]]&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;&amp;lt;Text&amp;gt;&amp;lt;![CDATA[A&amp;amp;lphabetic]]&amp;gt;&amp;lt;/Text&amp;gt;&lt;br /&gt;&amp;lt;/Control&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;and I would like to add some Line in symbol&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TCL script for creating library, drawing rectangle and placing pins, and saving .OLB</title><link>https://community.cadence.com/thread/65749?ContentTypeID=0</link><pubDate>Mon, 16 Feb 2026 21:57:50 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:0e3df56f-eaa3-4c2f-85ae-41afbbe0711c</guid><dc:creator>AT202409242847</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/65749?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65749/tcl-script-for-creating-library-drawing-rectangle-and-placing-pins-and-saving-olb/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Currently I want an autoLoad TCL script that does the following&lt;/p&gt;
&lt;p&gt;1. creates a new library and part&lt;/p&gt;
&lt;p&gt;2. draws rectangle and some pins&lt;/p&gt;
&lt;p&gt;3. exports to .OLB&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I tried copying command journaling to get this:&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set libDir &amp;quot;C:/Users/.../AppData/Roaming/SPB_Data/cdssetup/workspace/libraries/symbols&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set libPath &amp;quot;$libDir/LIBRARY1.OLB&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set outputPath &amp;quot;C:/syscap/output/test.olb&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set partName &amp;quot;TEST&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;Menu &amp;quot;File::New::Library&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;SelectPMItem &amp;quot;$libPath&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;capLaunchNewSymbolEditor &amp;quot;$libPath&amp;quot; &amp;quot;$partName&amp;quot; 1 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;OrSymbolEditor::execute placeRectangle -0.4 0.7 0.4 -0.7&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;OrSymbolEditor::execute placeSymbolPin {OUT} {1} 2 Line {} -0.4 0.3 -0.5 0.3 true Scalar {{&amp;quot;UserPropAr&amp;quot;:[]}}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;OrSymbolEditor::execute placeSymbolPin {IN+} {3} 0 Line {} -0.4 0 -0.5 0 true Scalar {{&amp;quot;UserPropAr&amp;quot;:[]}}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;# Save library to output path&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;MenuCommand &amp;quot;29596&amp;quot; | FileDialog &amp;quot;OK&amp;quot; &amp;quot;$outputPath&amp;quot; 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;OrSymbolEditor::execute save 0&lt;/span&gt;&lt;br /&gt;```&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;However, it fails on startup autoLoad with the &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;Menu&lt;/span&gt; command giving &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;MenuID not found&lt;/span&gt;. Which I assume is due to the script being run before the ui is initialized? Pasting the command into the command window manually works no issue...&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I tried looking up how to do this using the Dbo commands, but only got as far as something like this:&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set lSession $::DboSession_s_pDboSession&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set lStatus [DboState]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;DboSession -this $lSession&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set newLib [$lSession CreateLib [DboTclHelper_sMakeCString "C:/syscap/output/test.OLB"] $lStatus]&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set lLibraryPath [DboTclHelper_sMakeCString C:/syscap/output/test.OLB]&lt;br /&gt;set lLib [DboSession_GetLibAndSchematics $lSession $lLibraryPath $lStatus]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;If anybody could let me know how to run the script on startup without the menu issue or draft a TCL script for what I want to do, that would be greatly appreciated!&lt;/p&gt;
&lt;p&gt;Many thanks in advance!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TCL script to set a property value in all titleblocks in a hierarchical design</title><link>https://community.cadence.com/thread/65710?ContentTypeID=0</link><pubDate>Wed, 04 Feb 2026 13:49:48 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:4dbd1284-3233-4482-bb3b-b1f8be634bde</guid><dc:creator>Willy</dc:creator><slash:comments>3</slash:comments><comments>https://community.cadence.com/thread/65710?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65710/tcl-script-to-set-a-property-value-in-all-titleblocks-in-a-hierarchical-design/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I am attempting to write a TCL script that will set/update Title Block values in all Title Blocks in a schematic design.&lt;/p&gt;
&lt;p&gt;I have been working through the&amp;nbsp;OrCAD_Capture_TclTk_Extensions.pdf doc and googling. I can get the TCL script to find and run through all pages, but when I try to set or get property values I keep getting various errors depending on which examples/methods I am using.&lt;/p&gt;
&lt;p&gt;I removed the prompting for values and just hard coded in a propName of YEAR (which definitely exists in all sheets/pages) to propValue of 2020 to make the script shorter/simpler for getting help. I have left in commented out different things I have tried.&lt;/p&gt;
&lt;p&gt;Any help much appreciated, script below:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;# Define the property name and new value&lt;br /&gt;set propName &amp;quot;YEAR&amp;quot;&lt;br /&gt;set propValue &amp;quot;2020&amp;quot;&lt;/p&gt;
&lt;p&gt;set lDesign [GetActivePMDesign]&lt;br /&gt;set lStatus [DboState]&lt;br /&gt;set lNullObj NULL&lt;/p&gt;
&lt;p&gt;# 2. Iterate through Schematic Folders&lt;/p&gt;
&lt;p&gt;set lSchi_Name [DboTclHelper_sMakeCString]&lt;/p&gt;
&lt;p&gt;if {$lDesign != $lNullObj} {&lt;/p&gt;
&lt;p&gt;set lSchematicIter [$lDesign NewViewsIter $lStatus $::IterDefs_SCHEMATICS]&lt;br /&gt; #get the first schematic view&lt;br /&gt; set lView [$lSchematicIter NextView $lStatus]&lt;br /&gt; puts $lSchematicIter&lt;br /&gt; set lPage_Name [DboTclHelper_sMakeCString]&lt;br /&gt; puts $lPage_Name&lt;/p&gt;
&lt;p&gt;while { $lView != $lNullObj} {&lt;br /&gt; #dynamic cast from DboView to DboSchematic&lt;br /&gt; set lSchematic [DboViewToDboSchematic $lView]&lt;br /&gt; $lSchematic GetName $lSchi_Name&lt;br /&gt; set lPagesIter [$lSchematic NewPagesIter $lStatus]&lt;br /&gt; #get the first page&lt;br /&gt; set lPage [$lPagesIter NextPage $lStatus]&lt;/p&gt;
&lt;p&gt;puts [DboTclHelper_sGetConstCharPtr $lSchi_Name]&lt;/p&gt;
&lt;p&gt;while {$lPage!=$lNullObj} {&lt;br /&gt; #placeholder: do your processing on $lPage&lt;/p&gt;
&lt;p&gt;$lPage GetName $lPage_Name&lt;br /&gt; puts [DboTclHelper_sGetConstCharPtr $lPage_Name]&lt;/p&gt;
&lt;p&gt;# set lTitleBlocksIter [$lPage NewTitleBlocksIter $lStatus]&lt;br /&gt; # set lTitle [$lTitleBlocksIter NextTitleBlock $lStatus]&lt;br /&gt; #while {$lTitle!=$lNullObj} {&lt;br /&gt; #placeholder: do your processing on $lTitle&lt;br /&gt; #puts $lTitle&lt;br /&gt; &lt;br /&gt; # set lStatus [$lTitle SetEffectivePropStringValue "YEAR" "1999"]&lt;br /&gt; #set lStatus [$lTitle GetEffectivePropStringValue "YEAR" $propValue]&lt;br /&gt; # $lTitle GetEffectivePropStringValue $propName propValue&lt;br /&gt; &lt;br /&gt; #puts &amp;quot;Property Value: $propValue&amp;quot;&lt;br /&gt; &lt;br /&gt; #get the next title block&lt;br /&gt; #set lTitle [$lTitleBlocksIter NextTitleBlock $lStatus]&lt;br /&gt; #}&lt;br /&gt; #delete_DboPageTitleBlocksIter $lTitleBlocksIter&lt;br /&gt; set pValue &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;# 3. Get the value of a specific property (e.g., &amp;quot;Title&amp;quot;)&lt;br /&gt; # GetEffectivePropStringValue takes (PropertyName, VariableToStoreValue)&lt;br /&gt; set lStatus [$lPage GetEffectivePropStringValue "Title" pValue]&lt;/p&gt;
&lt;p&gt;# 4. Check status and print result&lt;br /&gt; if {$lStatus == 1} {&lt;br /&gt; puts &amp;quot;Title Block Value: $pValue&amp;quot;&lt;br /&gt; } else {&lt;br /&gt; puts &amp;quot;Property &amp;#39;Title&amp;#39; not found.&amp;quot;&lt;br /&gt; }&lt;br /&gt; set lPage [$lPagesIter NextPage $lStatus]&lt;br /&gt; }&lt;br /&gt; #placeholder: do your processing on $lSchematic&lt;br /&gt; #puts $lSchematic&lt;br /&gt; #get the next schematic view&lt;br /&gt; set lView [$lSchematicIter NextView $lStatus]&lt;br /&gt; }&lt;br /&gt; delete_DboLibViewsIter $lSchematicIter&lt;br /&gt; delete_DboSchematicPagesIter $lPagesIter&lt;br /&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Fail to open DSN with TCL due to both "dot" and "space" in the file name</title><link>https://community.cadence.com/thread/65661?ContentTypeID=0</link><pubDate>Wed, 21 Jan 2026 06:33:12 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:dca678ac-8278-438d-85f1-004c8b627151</guid><dc:creator>Gelzone</dc:creator><slash:comments>4</slash:comments><comments>https://community.cadence.com/thread/65661?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65661/fail-to-open-dsn-with-tcl-due-to-both-dot-and-space-in-the-file-name/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I try both&amp;nbsp;&lt;code&gt;Menu &amp;quot;File::Open::Design&amp;quot;&lt;/code&gt; and&amp;nbsp;&lt;code&gt;MenuCommand &amp;quot;57601&amp;quot;&lt;/code&gt; to open my file with tcl but fail.&lt;/p&gt;
&lt;p&gt;The file name is &amp;quot;&amp;lt;project folder&amp;gt;/test_M.2 test1.DSN&amp;quot; and the error message shows something like &amp;quot;&amp;lt;project folder&amp;gt;/test_M.2 not found&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And I try to remove the &amp;quot;dot&amp;quot; (keep the &amp;quot;space&amp;quot;), the command can open the DSN file successfully.&lt;br /&gt;Another experiment that keeping &amp;quot;dot&amp;quot; but remove &amp;quot;space&amp;quot; also works well.&lt;/p&gt;
&lt;p&gt;So I think this &lt;em&gt;file not found&lt;/em&gt; issue will occur when both &amp;quot;&lt;strong&gt;dot&lt;/strong&gt;&amp;quot; and &amp;quot;&lt;strong&gt;space&lt;/strong&gt;&amp;quot; exist in the file name.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Can I catch any information while "Create Netlist" fail with tcl?</title><link>https://community.cadence.com/thread/65623?ContentTypeID=0</link><pubDate>Fri, 09 Jan 2026 02:06:25 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:634693c0-ef7f-491f-94a4-3d556f66c0b0</guid><dc:creator>Gelzone</dc:creator><slash:comments>3</slash:comments><comments>https://community.cadence.com/thread/65623?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65623/can-i-catch-any-information-while-create-netlist-fail-with-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I have used user-action tcl code (Menu &amp;quot;Tools::Create Netlist&amp;quot;) to create netlist from DSN file in OrCAD.&lt;br /&gt;Sometimes the process will fail due to the DSN content or config setting, and there will be a &lt;strong&gt;error message pop up&lt;/strong&gt;&amp;nbsp;and lock the procedure.&lt;/p&gt;
&lt;p&gt;I wonder if there is any way to catch the error/exception while creating netlist and that can make me handle it well.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to convert DSN to PDF with tcl?</title><link>https://community.cadence.com/thread/65619?ContentTypeID=0</link><pubDate>Tue, 06 Jan 2026 02:07:58 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:3e357897-f949-470e-bdc5-fdbbc29289bc</guid><dc:creator>Gelzone</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/65619?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65619/how-to-convert-dsn-to-pdf-with-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;In the OrCAD Capture CIS 23.1, I found there are 2 features that can make the DSN file to PDF format:&lt;/p&gt;
&lt;p&gt;1. File &amp;gt; Print&lt;/p&gt;
&lt;p&gt;2. File &amp;gt; Export &amp;gt; PDF&lt;/p&gt;
&lt;p&gt;Both 2 meet my requirement, and I want to know if I can &lt;strong&gt;use tcl&lt;/strong&gt; to make the process automatic, including setup the config like printer, orientation, printing mode, output path...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How can parts be placed programmatically and then modified afterwards?</title><link>https://community.cadence.com/thread/65616?ContentTypeID=0</link><pubDate>Mon, 05 Jan 2026 11:36:35 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:21a4c53d-5f70-4329-8b76-c12f6b9f14fb</guid><dc:creator>RT202503126350</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/65616?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65616/how-can-parts-be-placed-programmatically-and-then-modified-afterwards/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Is it possible to place a part at an x,y coordinate and then get a reference to that part so it can be subsequently modified (set refdes, etc, for example using SetEffectivePropStringValue)?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;There is the&lt;span&gt;&amp;nbsp;&lt;/span&gt;Capture Command &amp;quot;PlacePart&amp;quot;&lt;/p&gt;
&lt;p&gt;PlacePart(x, y, libName, pkgName, device, boolvalue6)&lt;/p&gt;
&lt;p&gt;But it doesn&amp;#39;t return a reference to the part, so I cant further operate on the part programmatically. Is there a database command alternative that returns a reference (I thought maybe in DboSchematic or DboPlacedInst, but I couldnt find anything that seemed right.)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I have seen a solution generated by AI, which places a part using &amp;quot;Place Part&amp;quot;, and then iterates through all parts in the design, and compares their x,y coordinates with the values used in the &amp;quot;PlacePart&amp;quot; call, and returns the best match, but that seems like a ridiculous effort, especially if I want to place hundreds of parts, and the existing schematic also has many hundreds of existing parts that all have to be looped through each time I place a new part.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Specifically, I have an existing design with ~100 test point symbols.&amp;nbsp; I want to find each of these test point symbols, and place a pogo pin symbol nearby whose refdes is based on the existing test point&amp;#39;s refdes (i.e. pogo P101 for the test point TP101).&amp;nbsp; I cant figure out a good way to do this without the above functionality.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Place database part in OrCAD with TCL?</title><link>https://community.cadence.com/thread/65496?ContentTypeID=0</link><pubDate>Tue, 25 Nov 2025 06:57:15 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:57284e4d-b015-4a6b-8ce5-c08acbbae5cd</guid><dc:creator>Gelzone</dc:creator><slash:comments>3</slash:comments><comments>https://community.cadence.com/thread/65496?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65496/place-database-part-in-orcad-with-tcl/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I need to place a CIS part in a page automatically, and here is the steps:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The manual process:&lt;/p&gt;
&lt;p&gt;Open a page -&amp;gt;&lt;/p&gt;
&lt;p&gt;Right click &amp;quot;Place Database Part&amp;quot; -&amp;gt;&lt;/p&gt;
&lt;p&gt;At the CIS Explorer -&amp;gt;&lt;/p&gt;
&lt;p&gt;Use Query to find the target part (e.g. Property = Part Number &amp;amp; Compare = &amp;#39;=&amp;#39; &amp;amp; Value = PN)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And I have tried &amp;quot;&lt;code&gt;PlacePart&lt;/code&gt;&amp;quot; command but failed (e.g. PlacePart 1.5 1.5 &amp;lt;olb_full_path&amp;gt; &amp;quot;&amp;quot; &amp;quot;&amp;quot; FALSE), it showed&amp;nbsp;&lt;em&gt;Failed. Reason: Invalid Path or Invalid Argument(s).&lt;/em&gt; .&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Any way to "Global Modify" a property of a component with tcl in ASC?</title><link>https://community.cadence.com/thread/65386?ContentTypeID=0</link><pubDate>Tue, 28 Oct 2025 03:37:34 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:6a6b6a97-a973-45d4-b2d8-fda4bc5d4d88</guid><dc:creator>Gelzone</dc:creator><slash:comments>4</slash:comments><comments>https://community.cadence.com/thread/65386?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65386/any-way-to-global-modify-a-property-of-a-component-with-tcl-in-asc/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I wrote a procedure to modify a property (e.g. PART_NUMBER) of a component (type: INST) &lt;strong&gt;page by page&lt;/strong&gt;.&lt;br /&gt;I met a issue that if a component is associated with different pages, then it will raise violation error.&lt;/p&gt;
&lt;p&gt;Error message:&lt;/p&gt;
&lt;p&gt;PKG1104 Physical part &lt;em&gt;&amp;lt;PART_NAME&amp;gt;_&amp;lt;PACK_TYPE&amp;gt;-&amp;lt;VALUE&amp;gt;,&amp;lt;PART_NUMBER&amp;gt;&lt;/em&gt; cannot be assigned to package &lt;em&gt;&amp;lt;modified_component_refdes&amp;gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The package &lt;em&gt;&amp;lt;modified_component_refdes&amp;gt;&lt;/em&gt; is associated with part name&amp;nbsp;&lt;span&gt;&lt;em&gt;&amp;lt;PART_NAME&amp;gt;_&amp;lt;PACK_TYPE&amp;gt;-&amp;lt;VALUE&amp;gt;,&amp;lt;PART_NUMBER&amp;gt;-&amp;lt;JEDEC_TYPE&amp;gt;&lt;/em&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I guess the error occurs that I didn&amp;#39;t modify all components (w/ same refdes) simultaneously.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And here is my code snippet, maybe there is something I can improve:&lt;/p&gt;
&lt;p&gt;proc testMod {} {&lt;br /&gt; # Read refdes &amp;amp; cpn mapping&lt;br /&gt; puts &amp;quot;Processing mapping list...&amp;quot;&lt;br /&gt;set refPropsFile &amp;quot;C:/temp/refdes_props.csv&amp;quot;&lt;br /&gt; ReadFiles create readRefProps $refPropsFile &amp;quot;csv&amp;quot;&amp;nbsp; # This is just a class I created to read csv file&lt;br /&gt; set refPropsList [readRefProps readFile "\t"]&amp;nbsp; &amp;nbsp;# Return type is a list&lt;br /&gt; set mapping {}&lt;br /&gt; foreach eachMapping $refPropsList {&lt;br /&gt; # Extract the key and value from the sublist&lt;br /&gt; dict set mapping [lindex $eachMapping 0] [lrange $eachMapping 1 end]&lt;br /&gt; }&lt;br /&gt; readRefProps destroy&lt;br /&gt; &lt;br /&gt; puts &amp;quot;Updating Properties...&amp;quot;&lt;br /&gt; # Loading the schPageUtils pacakge.&lt;br /&gt; package require schPageUtils&lt;br /&gt; # Getting All Page Information.&lt;br /&gt; set pageListDict [schPageUtils::getDesignPagesAllInfo]&lt;br /&gt; # Reading Total Number of Pages&lt;br /&gt; set size [schPageUtils::getPagesInfoSize $pageListDict]&lt;br /&gt; &lt;br /&gt; set pageIter 1&lt;br /&gt; while {$pageIter &amp;lt;= $size} {&lt;br /&gt;&lt;br /&gt; set currTabSPath [cps::getSPathByTabIndex 1]&lt;br /&gt; puts $pageIter&lt;br /&gt; puts $currTabSPath&lt;br /&gt; set pageId [sch::dbGetActivePage]&lt;br /&gt; selectObject all&lt;br /&gt; set selItem [sch::dbGetSelectedItems $pageId]&lt;br /&gt; selectObject none&lt;br /&gt; #set hasModified 0&lt;br /&gt; foreach item $selItem {&lt;br /&gt; set itemType [sch::dbGetType $item]&lt;br /&gt; if {$itemType == $::sch::DBTInst} {&lt;br /&gt; set ItemSpath [sch::dbGetSPath $item]&lt;br /&gt; array set RefOrg [join [sch::dbxGetRefDesAndOriginFromInstSpath $ItemSpath]]&lt;br /&gt; set location $RefOrg(refdes)&lt;br /&gt; if {[dict exists $mapping $location]} {&lt;br /&gt; #set hasModified 1&lt;br /&gt; set props [dict get $mapping $location]&lt;br /&gt; set pn [lindex $props 0]&lt;br /&gt; set footprint [lindex $props 1]&lt;br /&gt; puts $location&lt;br /&gt; puts $pn&lt;br /&gt; puts $footprint&lt;br /&gt;&lt;br /&gt; sch::dbSelectObjectById $item $::sch::DBTrue&lt;br /&gt; modifyProp -name PART_NUMBER -value $pn&lt;br /&gt; modifyProp -name JEDEC_TYPE -value $footprint&lt;br /&gt; puts &amp;quot;Properties modified.&amp;quot;&lt;br /&gt; saveAll&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; sch::nextPage&lt;br /&gt; closeItem $currTabSPath&lt;br /&gt; incr pageIter&lt;br /&gt; }&lt;br /&gt; puts &amp;quot;Done&amp;quot;&lt;br /&gt; #saveAll&lt;br /&gt; #sch::closeProject&lt;br /&gt; #exit&lt;br /&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to modify a table after create it with tcl in ASC?</title><link>https://community.cadence.com/thread/65363?ContentTypeID=0</link><pubDate>Tue, 21 Oct 2025 09:15:55 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:d64a12bc-3a6d-40c3-8d9c-b139dd7173c9</guid><dc:creator>Gelzone</dc:creator><slash:comments>3</slash:comments><comments>https://community.cadence.com/thread/65363?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65363/how-to-modify-a-table-after-create-it-with-tcl-in-asc/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I need to use &lt;code&gt;addTable&lt;/code&gt; to create a table and write some information in my project but I had a hard time while writing data.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Here is my code snippet:&lt;/p&gt;
&lt;p&gt;set currNotePage [cps::getSPathByTabIndex 1]&lt;br /&gt; # Rename page.&lt;br /&gt; activateEdit $currNotePage SCH PAGE&lt;br /&gt; renameItem $currNotePage SCH PAGE &amp;quot;Design Notes&amp;quot;&lt;br /&gt; &lt;br /&gt; addTable -pg $currNotePage -row 15 -column 2 -pos [list 187 149]&lt;br /&gt; selectObject -occPath $currNotePage -type TABLE 187 149&lt;br /&gt;#cps::showMessageDialog &amp;quot;Interrupt&amp;quot; &amp;quot;Table selected&amp;quot; 0 &amp;quot;&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt; #editTable true&lt;br /&gt; #tableColumnResize 1 2200&lt;br /&gt; tablePlainTextEdit 1 1 &amp;quot;Pages&amp;quot;&lt;br /&gt; tablePlainTextEdit 1 2 &amp;quot;Notes&amp;quot;&lt;/p&gt;
&lt;p&gt;The &amp;quot;Pages&amp;quot; and &amp;quot;Notes&amp;quot; didn&amp;#39;t write in the table, is there any other way to modify a table?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to always open the first schematic page when using "openProject" to open a .cpm file?</title><link>https://community.cadence.com/thread/65337?ContentTypeID=0</link><pubDate>Wed, 15 Oct 2025 05:47:46 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:7fae7cd4-4862-442e-bcf8-302e8c685b89</guid><dc:creator>Gelzone</dc:creator><slash:comments>2</slash:comments><comments>https://community.cadence.com/thread/65337?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65337/how-to-always-open-the-first-schematic-page-when-using-openproject-to-open-a-cpm-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;As title, I found sometimes I opened a project with command &lt;code&gt;openProject&lt;/code&gt;, it would open the page I had modified last time.&lt;/p&gt;
&lt;p&gt;Most of the time it will open the first page (and that&amp;#39;s what I want), so I&amp;#39;d like to ask that is there any way to &amp;quot;reset&amp;quot; the status of the project or just force the&amp;nbsp;&lt;code&gt;openProject&lt;/code&gt; to open the first page only?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TCL Script System Capture get ALL Custom Var from Project and all from all Variants</title><link>https://community.cadence.com/thread/65315?ContentTypeID=0</link><pubDate>Wed, 08 Oct 2025 12:41:33 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:6262ab53-487e-4d7e-a140-06ce45bdca3a</guid><dc:creator>PIPE</dc:creator><slash:comments>10</slash:comments><comments>https://community.cadence.com/thread/65315?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65315/tcl-script-system-capture-get-all-custom-var-from-project-and-all-from-all-variants/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Sorry, i have search a lot but found nothing.&lt;/p&gt;
&lt;p&gt;I must make some folders and my idea is to export via tcl all this information and with a exernal tool i read out this info and generate for every variant and master a sperate folder to but the bom etc inside.&lt;/p&gt;
&lt;p&gt;Thanks for your help.&lt;/p&gt;
&lt;p&gt;Peter&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>lock net alias</title><link>https://community.cadence.com/thread/65252?ContentTypeID=0</link><pubDate>Thu, 25 Sep 2025 13:14:18 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:515c48e6-99ce-45a8-90e9-422897ee25f8</guid><dc:creator>tennywhy</dc:creator><slash:comments>3</slash:comments><comments>https://community.cadence.com/thread/65252?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65252/lock-net-alias/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;could anybody knows how to lock net alias on pages,&amp;nbsp;&lt;span&gt;Currently,&amp;nbsp;&lt;/span&gt;the orcad capture built-in lock command has no effect on net alias.&amp;nbsp; could i lock net alias through Tcl code?&amp;nbsp; help me please.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Replace a component using its CDS_LIBRARY_ID in system Capture</title><link>https://community.cadence.com/thread/65249?ContentTypeID=0</link><pubDate>Tue, 23 Sep 2025 18:08:59 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:5702cd22-a179-4a70-b69d-1ef8a34aa673</guid><dc:creator>YC202504163531</dc:creator><slash:comments>1</slash:comments><comments>https://community.cadence.com/thread/65249?ContentTypeID=0</comments><wfw:commentRss>https://community.cadence.com/cadence_technology_forums/pcb-design/f/allegro-x-scripting-tcl/65249/replace-a-component-using-its-cds_library_id-in-system-capture/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;[In System Capture 24.1]&lt;br /&gt;&lt;br /&gt;I&amp;rsquo;m trying to write a script that replaces a component with its EMPTY counterpart and vice versa. The challenge is that, to successfully replace the component and keep it in sync with Pulse, I need the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;CDS_LIBRARY_ID&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;property of the new component. I don&amp;rsquo;t know where to extract this property from. I can get the value from an already placed component, but that&amp;rsquo;s not useful for replacements.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m using this command:&lt;/p&gt;
&lt;div&gt;
&lt;pre class="language-tcl"&gt;&lt;code class="language-tcl"&gt;replace -part -by $componentLibs -preserveUserProp -preserveRefDes -propVisChanged -key [list {MATERIAL=EMPTY=1} {CDS_LIBRARY_ID=$cdsLibId=0} ] -i [list  {}] -useexistingtr  -cpath [list  "$cpath" ]
sch::leaveBatchMode&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;I tried to get the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;CDS_LIBRARY_ID&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;property from the part table of the library, but it&amp;rsquo;s not there. I suspect this property is injected by the Part Information Manager. Does anyone know more about this, or how to automate the Part Information Manager window to retrieve or set this property?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>