<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="https://syndication.webwiz.net/rss_namespace/">
 <channel>
  <title>PCB Libraries Forum : Altium Special Strings</title>
  <link>https://www.PCBLibraries.com/forum/</link>
  <description><![CDATA[This is an XML content feed of; PCB Libraries Forum : Product Suggestions : Altium Special Strings]]></description>
  <pubDate>Sat, 04 Apr 2026 12:15:50 +0000</pubDate>
  <lastBuildDate>Tue, 07 Apr 2015 19:34:57 +0000</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 12.07</generator>
  <ttl>360</ttl>
  <WebWizForums:feedURL>https://www.PCBLibraries.com/forum/RSS_post_feed.asp?TID=1634</WebWizForums:feedURL>
  <image>
   <title><![CDATA[PCB Libraries Forum]]></title>
   <url>https://www.PCBLibraries.com/forum/forum_images/PCBLForumLogo.gif</url>
   <link>https://www.PCBLibraries.com/forum/</link>
  </image>
  <item>
   <title><![CDATA[Altium Special Strings : I&amp;#039;ll take a look at that...]]></title>
   <link>https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6686.html#6686</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="https://www.PCBLibraries.com/forum/member_profile.asp?PF=11101">sacherjj</a><br /><strong>Subject:</strong> 1634<br /><strong>Posted:</strong> 07 Apr 2015 at 7:34pm<br /><br />I'll take a look at that script in the morning.&nbsp; I'm the sole engineer and designer in our company, so I started with an integrated library.&nbsp; Duplicating schematic items to make a new resistor value.&nbsp; But, it was all in files so it seemed simpler.&nbsp; However, compiling started to take forever.<br><br>I wish I had switched to DBLib a while ago.&nbsp; However, now is a good time to get the new designs started in DBLib and migrate the old later.&nbsp; It is amazing how fast it is to make footprints in this software.&nbsp; Then adding new resistors is another db row.&nbsp; <br><br>I'm an Altium scripting newbie as well, but a very experienced programmer.&nbsp; The Pascal feel of Delphi script brings back memories from the mid-90s.&nbsp; I need to spend some time wrapping my head around the Altium APIs.&nbsp; <br>]]>
   </description>
   <pubDate>Tue, 07 Apr 2015 19:34:57 +0000</pubDate>
   <guid isPermaLink="true">https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6686.html#6686</guid>
  </item> 
  <item>
   <title><![CDATA[Altium Special Strings : I&amp;#039;m glad you like the idea...]]></title>
   <link>https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6685.html#6685</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="https://www.PCBLibraries.com/forum/member_profile.asp?PF=30">gcary</a><br /><strong>Subject:</strong> 1634<br /><strong>Posted:</strong> 07 Apr 2015 at 1:05pm<br /><br />I'm glad you like the idea of a user script.&nbsp; It would be a great addition because it gives the user the ability to do whatever they want automatically as each footprint is generated.&nbsp; And the good part from the PCBLibraries side is that it is very simple to implement.<br><br>I love DBLib's.&nbsp; I struggled for quite a while when I first got Altium Designer, trying to figure out which is the best format for libraries.&nbsp; I'm really glad I settled on DBLibs.&nbsp; All of my components are in that format.&nbsp; It makes it so much easier to manage the footprints and schematic symbols.<br><br>The night I posted that first message in this thread I also tried to modify an existing component.&nbsp; I could not get it to work.&nbsp; The functions work fine when you create a new component, but not when you try to modify and existing component.&nbsp; I have been planning on posting a question in the Altium forum, but I haven't had time to do it yet.&nbsp; Here is the file I plan to post for those guys to look at:<br><br><font face="Courier New, Courier, mono">Procedure AddTextToNewFootprint;<br>Var<br>&nbsp;&nbsp;&nbsp; CurrentLib&nbsp; : IPCB_Library;<br>&nbsp;&nbsp;&nbsp; View&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : IServerDocumentView;<br>&nbsp;&nbsp;&nbsp; Document&nbsp;&nbsp;&nbsp; : IServerDocument;<br>&nbsp;&nbsp;&nbsp; Footprint&nbsp;&nbsp; : IPCB_LibComponent;<br>&nbsp;&nbsp;&nbsp; TextObj&nbsp;&nbsp;&nbsp;&nbsp; : IPCB_Text;<br>Begin<br>&nbsp;&nbsp;&nbsp; If PCBServer = Nil Then Exit;<br><br>&nbsp;&nbsp;&nbsp; CurrentLib := PcbServer.GetCurrentPCBLibrary;<br>&nbsp;&nbsp;&nbsp; If CurrentLib = Nil Then Exit;<br><br>&nbsp;&nbsp;&nbsp; View := Client.GetCurrentView;<br>&nbsp;&nbsp;&nbsp; Document := View.OwnerDocument;<br>&nbsp;&nbsp;&nbsp; Document.Modified := True;<br><br>&nbsp;&nbsp;&nbsp; CurrentLib.Board.LayerIsDisplayed&#091;ILayer.MechanicalLayer(6)&#093; := true;<br><br>&nbsp;&nbsp;&nbsp; PCBServer.PreProcess;<br><br>&nbsp;&nbsp;&nbsp; Try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Footprint := PCBServer.CreatePCBLibComp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Footprint.Name := 'NewFootprint';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj := PCBServer.PCBObjectFactory(eTextObject,&nbsp; eNoDimension,&nbsp; eCreate_Default);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(TextObj.I_ObjectAddress, c_Broadcast, PCBM_BeginModify, c_NoEventData);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.UseTTFonts := True;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.Layer := ILayer.MechanicalLayer(6);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.Text&nbsp; := '.Designator';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.Size&nbsp; :=&nbsp; MilsToCoord(40);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Footprint.AddPCBObject(TextObj);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(TextObj.I_ObjectAddress, c_Broadcast, PCBM_EndModify, c_NoEventData);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(Footprint.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, TextObj.I_ObjectAddress);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CurrentLib.RegisterComponent(Footprint);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CurrentLib.CurrentComponent := Footprint;<br>&nbsp;&nbsp;&nbsp; Finally<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.PostProcess;<br>&nbsp;&nbsp;&nbsp; End;<br><br>&nbsp;&nbsp;&nbsp; CurrentLib.Board.ViewManager_FullUpdate;<br>&nbsp;&nbsp;&nbsp; Client.SendMessage('PCB:Zoom', 'Action=All' , 255, Client.CurrentView);<br>End;<br><br><br>Procedure AddTextToExistingFootprint;<br>Var<br>&nbsp;&nbsp;&nbsp; CurrentLib&nbsp; : IPCB_Library;<br>&nbsp;&nbsp;&nbsp; View&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : IServerDocumentView;<br>&nbsp;&nbsp;&nbsp; Document&nbsp;&nbsp;&nbsp; : IServerDocument;<br>&nbsp;&nbsp;&nbsp; Footprint&nbsp;&nbsp; : IPCB_LibComponent;<br>&nbsp;&nbsp;&nbsp; TextObj&nbsp;&nbsp;&nbsp;&nbsp; : IPCB_Text;<br>Begin<br>&nbsp;&nbsp;&nbsp; If PCBServer = Nil Then Exit;<br><br>&nbsp;&nbsp;&nbsp; CurrentLib := PcbServer.GetCurrentPCBLibrary;<br>&nbsp;&nbsp;&nbsp; If CurrentLib = Nil Then Exit;<br><br>&nbsp;&nbsp;&nbsp; View := Client.GetCurrentView;<br>&nbsp;&nbsp;&nbsp; Document := View.OwnerDocument;<br>&nbsp;&nbsp;&nbsp; Document.Modified := True;<br><br>&nbsp;&nbsp;&nbsp; CurrentLib.Board.LayerIsDisplayed&#091;ILayer.MechanicalLayer(6)&#093; := true;<br><br>&nbsp;&nbsp;&nbsp; PCBServer.PreProcess;<br><br>&nbsp;&nbsp;&nbsp; Try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Footprint := CurrentLib.CurrentComponent;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Footprint.BeginModify;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj := PCBServer.PCBObjectFactory(eTextObject,&nbsp; eNoDimension,&nbsp; eCreate_Default);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(TextObj.I_ObjectAddress, c_Broadcast, PCBM_BeginModify, c_NoEventData);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.UseTTFonts := True;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.Layer := ILayer.MechanicalLayer(6);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.Text&nbsp; := '.Designator';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.Size&nbsp; :=&nbsp; MilsToCoord(40);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Footprint.AddPCBObject(TextObj);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(TextObj.I_ObjectAddress, c_Broadcast, PCBM_EndModify, c_NoEventData);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(Footprint.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, TextObj.I_ObjectAddress);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Footprint.EndModify;<br>&nbsp;&nbsp;&nbsp; Finally<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.PostProcess;<br>&nbsp;&nbsp;&nbsp; End;<br><br>&nbsp;&nbsp;&nbsp; CurrentLib.Board.ViewManager_FullUpdate;<br>&nbsp;&nbsp;&nbsp; Client.SendMessage('PCB:Zoom', 'Action=All' , 255, Client.CurrentView);<br>End;<br><br><br>Procedure AddTextToBoard;<br>Var<br>&nbsp;&nbsp;&nbsp; View&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : IServerDocumentView;<br>&nbsp;&nbsp;&nbsp; Document&nbsp; : IServerDocument;<br>&nbsp;&nbsp;&nbsp; TextObj&nbsp;&nbsp; : IPCB_Text;<br>&nbsp;&nbsp;&nbsp; Board&nbsp;&nbsp;&nbsp;&nbsp; : IPCB_Board;<br>Begin<br>&nbsp;&nbsp;&nbsp; If PCBServer = Nil Then Exit;<br><br>&nbsp;&nbsp;&nbsp; Board := PcbServer.GetCurrentPCBBoard;<br>&nbsp;&nbsp;&nbsp; If Board = Nil Then Exit;<br><br>&nbsp;&nbsp;&nbsp; View := Client.GetCurrentView;<br>&nbsp;&nbsp;&nbsp; Document := View.OwnerDocument;<br>&nbsp;&nbsp;&nbsp; Document.Modified := True;<br><br>&nbsp;&nbsp;&nbsp; Board.LayerIsDisplayed&#091;ILayer.MechanicalLayer(6)&#093; := true;<br><br>&nbsp;&nbsp;&nbsp; PCBServer.PreProcess;<br><br>&nbsp;&nbsp;&nbsp; Try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj := PCBServer.PCBObjectFactory(eTextObject,&nbsp; eNoDimension,&nbsp; eCreate_Default);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(TextObj.I_ObjectAddress, c_Broadcast, PCBM_BeginModify, c_NoEventData);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.UseTTFonts := True;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.Layer := ILayer.MechanicalLayer(6);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.Text&nbsp; := 'BoardText';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.Size&nbsp; :=&nbsp; MilsToCoord(40);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.XLocation := MilsToCoord(1500);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextObj.YLocation := MilsToCoord(1500);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Board.AddPCBObject(TextObj);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(TextObj.I_ObjectAddress, c_Broadcast, PCBM_EndModify, c_NoEventData);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(Board.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, TextObj.I_ObjectAddress);<br>&nbsp;&nbsp;&nbsp; Finally<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCBServer.PostProcess;<br>&nbsp;&nbsp;&nbsp; End;<br><br>&nbsp;&nbsp;&nbsp; Board.ViewManager_FullUpdate;<br>&nbsp;&nbsp;&nbsp; Client.SendMessage('PCB:Zoom', 'Action=All' , 255, Client.CurrentView);<br>End;<br><br>End.<br><br><br></font>You will see the following line is how you access the current library component:<br>&nbsp;<font face="Courier New, Courier, mono">Footprint := CurrentLib.CurrentComponent;<br><br></font>I'm not an expert in Altium scripting, so I might be doing something wrong.&nbsp; I am hoping I am missing some magic that allows the object to be editable or something like that.<br><br>When you run these scripts, you will find the AddTextToBoard and AddTextToNewFootprint procedures work properly, but the AddTextToExistingFootprint does not.&nbsp; Notice that the number of primitives shown in the PCB Library window increments after you run the script.&nbsp; If you get a PCB List, the primitives don't show up.&nbsp; It isn't just a text issue either.&nbsp; I tried generating a pad as well without success (though the number of primitives increments as well).&nbsp; One last point is that I also tried capturing the name of the current footprint, and then using an iterator to march through the components until I found it, and then tried modifying it.&nbsp; Same results.&nbsp; At this point the only viable methods would be the user script that I proposed, or to manually add it to each footprint.&nbsp; The latter is not a terribly bad option since it doesn't take a lot of time to paste it.&nbsp; It needs a little sizing and position help anyway.&nbsp; But it sure would be nice to have to automatically generated.<br><br>I hope this helps you out.&nbsp; Maybe you will be able to figure out the magic needed to modify an existing component.<br><br>Greg<br>]]>
   </description>
   <pubDate>Tue, 07 Apr 2015 13:05:17 +0000</pubDate>
   <guid isPermaLink="true">https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6685.html#6685</guid>
  </item> 
  <item>
   <title><![CDATA[Altium Special Strings : I am in the process of starting...]]></title>
   <link>https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6682.html#6682</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="https://www.PCBLibraries.com/forum/member_profile.asp?PF=11101">sacherjj</a><br /><strong>Subject:</strong> 1634<br /><strong>Posted:</strong> 07 Apr 2015 at 11:38am<br /><br />I am in the process of starting a clean DBlib for Altium using PCBLibraries.&nbsp; I was just trying to figure out the easiest method adding the .Designator objects.&nbsp; This really helps with output documentation.&nbsp; <br><br>I have been trying to figure out if it is possible to get currently selected component in a PCBLib, but I'm not finding any way.&nbsp; I was trying to slightly modify your script so I could run it on the selected IPCB_LibComponent as a work around.<br><br>It looks like the only way would be iterating through all in a library and adding.&nbsp; But that only works cleanly once.&nbsp; It might be possible to iterate through the objects and make sure there is no TextObj with .Text of '.Designator'.&nbsp; Not very clean, but it might work.<br><br>Edit: Oh, and I should have said that I think an option to call a user script would be great.&nbsp; This would be a good testing ground of optional scripting that might make it back into the Library Export as an optional Altium functionality.&nbsp; (Like I would love to see .Designator exist.)<br>]]>
   </description>
   <pubDate>Tue, 07 Apr 2015 11:38:41 +0000</pubDate>
   <guid isPermaLink="true">https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6682.html#6682</guid>
  </item> 
  <item>
   <title><![CDATA[Altium Special Strings : I just thought of a much better...]]></title>
   <link>https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6673.html#6673</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="https://www.PCBLibraries.com/forum/member_profile.asp?PF=30">gcary</a><br /><strong>Subject:</strong> 1634<br /><strong>Posted:</strong> 04 Apr 2015 at 3:05am<br /><br />I just thought of a much better option, and much easier for you to implement.&nbsp; I forgot that adding text isn't as simple as adding a text string.&nbsp; You have to set the width, height, position, etc.&nbsp; So instead of you doing that, you could have an option to call a user-defined procedure.&nbsp; I just tested it and it works great.&nbsp; Adding this will allow the user to do practically anything they want to after the component has been built.<br><br>You would have a check box that would allow the user to enable the user-defined script or not.&nbsp; If the box is checked, you would add the following line at the end of your script that creates the component:<br><br>PCBLibrariesUserScript(NewPCBLibComp);<br><br>In Altium, the user will need to create a script project that has the script in it.&nbsp; The script project needs to be global.&nbsp; To do that, simply go to DXP » Preferences.&nbsp; Then choose Scripting System, and then Global Projects.&nbsp; Add the project and then your script will be able to call it.<br><br>The user-defined script would look something like this:<br><br><font face="Courier New, Courier, mono">Procedure PCBLibrariesUserScript(NewPCBLibComp : IPCB_LibComponent);<br>Var<br>&nbsp;&nbsp;&nbsp; TextObj : IPCB_Text;<br><br>Begin<br>&nbsp;&nbsp;&nbsp; // Create text object for .Designator<br>&nbsp;&nbsp;&nbsp; TextObj := PCBServer.PCBObjectFactory(eTextObject, eNoDimension, eCreate_Default);<br>&nbsp;&nbsp;&nbsp; TextObj.UseTTFonts := True;<br>&nbsp;&nbsp;&nbsp; TextObj.Layer := eMechanical5;<br>&nbsp;&nbsp;&nbsp; TextObj.Text := '.Designator';<br>&nbsp;&nbsp;&nbsp; TextObj.Size := MilsToCoord(40);<br><br>&nbsp;&nbsp;&nbsp; NewPCBLibComp.AddPCBObject(TextObj);<br>&nbsp;&nbsp;&nbsp; PCBServer.SendMessageToRobots(NewPCBLibComp.I_ObjectAddress,c_Broadcast,PCBM_BoardRegisteration,TextObj.I_ObjectAddress);<br>End;</font><br><br>I think this would be a great addition because of its simplicity and its power.<br><br>Thanks,<br><br>Greg<br>]]>
   </description>
   <pubDate>Sat, 04 Apr 2015 03:05:33 +0000</pubDate>
   <guid isPermaLink="true">https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6673.html#6673</guid>
  </item> 
  <item>
   <title><![CDATA[Altium Special Strings : In Altium there are special strings...]]></title>
   <link>https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6672.html#6672</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="https://www.PCBLibraries.com/forum/member_profile.asp?PF=30">gcary</a><br /><strong>Subject:</strong> 1634<br /><strong>Posted:</strong> 04 Apr 2015 at 12:54am<br /><br />In Altium there are special strings that can be added to a footprint.&nbsp; In particular there are two I would like to see added.&nbsp; They are ".Comment" and ".Designator".&nbsp; I would envision a check box for each one, and the state of the check would be included in the user preferences for Altium output.&nbsp; If checked, then the special text string would be included in the footprint, otherwise it would be omitted. Here is a video that describes it:<br><br>Altium design secret 11: How to add comments and designators to specific layers:<br><a href="http://www.newelectr&#111;nics.co.uk/electr&#111;nics-videos/altium-design-secret-11-how-to-add-comments-and-designators-to-specific-layers/47001/" target="_blank" rel="nofollow">http://www.newelectronics.co.uk/electronics-videos/altium-design-secret-11-how-to-add-comments-and-designators-to-specific-layers/47001/</a><br><br>Here is the Altium documentation for Special Strings on a PCB:<br><a href="http://techdocs.altium.com/display/ADRR/PCB_Obj-String%28%28String%29%29_AD" target="_blank" rel="nofollow">http://techdocs.altium.com/display/ADRR/PCB_Obj-String%28%28String%29%29_AD</a><br><br>Thanks,<br><br>Greg<br>]]>
   </description>
   <pubDate>Sat, 04 Apr 2015 00:54:44 +0000</pubDate>
   <guid isPermaLink="true">https://www.PCBLibraries.com/forum/altium-special-strings_topic1634_post6672.html#6672</guid>
  </item> 
 </channel>
</rss>