<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-32467199</id><updated>2012-02-15T22:23:27.395-08:00</updated><category term='Schematic'/><category term='Height'/><category term='Via'/><category term='DRC'/><category term='Pins'/><category term='Keys'/><category term='Hit Test'/><category term='Rotation'/><category term='GetObject'/><category term='Net Labels'/><category term='Location'/><category term='Library'/><category term='PCB File Name'/><category term='Renumber'/><category term='String'/><category term='Counting'/><category term='Width'/><category term='Vias'/><category term='Rules'/><category term='Report'/><category term='PCB'/><category term='AutoPosition'/><category term='Clean Net'/><category term='Swap'/><category term='Shortcut'/><category term='Select'/><category term='SCH'/><category term='Text'/><category term='Clone'/><category term='File'/><category term='Read'/><category term='Net'/><category term='Layer'/><category term='Iterator'/><category term='ChooseLocationInteractively'/><category term='Toggle'/><category term='Pads'/><category term='Designators'/><category term='Track'/><category term='Components'/><category term='Cursor'/><category term='ChooseLocation'/><title type='text'>CA Idiot</title><subtitle type='html'>Altium Designer Script Information in VB for PCB Layout and Schematic Capture by Bill Smock from Tru Designs, San Diego, CA.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://caidiot.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-32467199.post-3658823122358796655</id><published>2011-09-21T07:00:00.000-07:00</published><updated>2011-09-21T07:00:07.561-07:00</updated><title type='text'>Move the designator where you click the mouse.</title><content type='html'>Click on the component and then click at the location where the designator is to be and it moves the designator to that location.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub ClickMoveDesPos&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim Comp&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;While Board.ChooseLocation(x,y, "Click Via To Change") = True&lt;br /&gt;&amp;nbsp; Set Comp = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_&lt;br /&gt;&amp;nbsp; eComponentObject),AllLayers,eEditAction_Focus)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; If Not(Comp is Nothing) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call Board.ChooseLocation(x,y, "Select Location")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.PreProcess&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Comp.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Comp.ChangeNameAutoposition = eAutoPos_Manual&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Comp.Name.XLocation = x&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Comp.Name.YLocation = y&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Comp.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_EndModify , c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.PostProcess&lt;br /&gt;&amp;nbsp; End If&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZLsiSlksemE/TnOaFy_WZtI/AAAAAAAAAEs/ADUy-fRTu-g/s1600/clickmove1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ZLsiSlksemE/TnOaFy_WZtI/AAAAAAAAAEs/ADUy-fRTu-g/s1600/clickmove1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-ZLsiSlksemE/TnOaFy_WZtI/AAAAAAAAAEs/ADUy-fRTu-g/s1600/clickmove1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-ZLsiSlksemE/TnOaFy_WZtI/AAAAAAAAAEs/ADUy-fRTu-g/s1600/clickmove1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-h91px8pVrTc/TnOaGh1o4ZI/AAAAAAAAAEw/whWHqje9jKE/s1600/clickmove2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-h91px8pVrTc/TnOaGh1o4ZI/AAAAAAAAAEw/whWHqje9jKE/s1600/clickmove2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-3658823122358796655?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/3658823122358796655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/3658823122358796655'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/09/move-designator-where-you-click-mouse.html' title='Move the designator where you click the mouse.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ZLsiSlksemE/TnOaFy_WZtI/AAAAAAAAAEs/ADUy-fRTu-g/s72-c/clickmove1.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-5975234076396658670</id><published>2011-09-16T10:44:00.000-07:00</published><updated>2011-09-16T10:56:21.979-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Designators'/><category scheme='http://www.blogger.com/atom/ns#' term='AutoPosition'/><title type='text'>Change the AutoPosition of the designator</title><content type='html'>Click on a component and the designator autoposition will cycle around the 8 positions each time you click on the component.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub CycleDesPos&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim Comp&lt;br /&gt;Dim I&lt;br /&gt;&lt;br /&gt;Dim eAutoArray&lt;br /&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;br /&gt;'eAutoPos_TopLeft,eAutoPos_CenterLeft,eAutoPos_BottomLeft,&lt;br /&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;'eAutoPos_BottomCenter,eAutoPos_BottomRight,eAutoPos_CenterRight,&lt;br /&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;br /&gt;'eAutoPos_TopRight,eAutoPos_TopCenter&lt;br /&gt;eAutoArray = Array(1,2,3,6,9,8,7,4)&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;Call PCBServer.PreProcess&lt;br /&gt;While Board.ChooseLocation(x,y, "Click Via To Change") = True&lt;br /&gt;&amp;nbsp; Set Comp = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_&lt;br /&gt;&amp;nbsp; eComponentObject),AllLayers,eEditAction_Focus)&lt;br /&gt;&amp;nbsp; I= -1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; If Not(Comp is Nothing) Then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Look for the current setting of the autoposition&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For J = 0 to 7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If&amp;nbsp; Comp.NameAutoposition = eAutoArray(J) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I = J + 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Set the array to begin again at eAutoPos_TopLeft&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If J = 7 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Autoposition is either manual or centercenter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If I = -1 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Comp.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Comp.ChangeNameAutoposition = eAutoArray(I)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Comp.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_EndModify , c_NoEventData)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Call PCBServer.PostProcess&lt;br /&gt;&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-RLoeZPanG2k/TnOKnEUM48I/AAAAAAAAAEY/lvVECc0I3gU/s1600/auto1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-RLoeZPanG2k/TnOKnEUM48I/AAAAAAAAAEY/lvVECc0I3gU/s320/auto1.png" width="239" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-2YEMtSnCNWc/TnOKn7V7eSI/AAAAAAAAAEc/EAuWYhVXZho/s1600/auto2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-2YEMtSnCNWc/TnOKn7V7eSI/AAAAAAAAAEc/EAuWYhVXZho/s320/auto2.png" width="257" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XNAINWb-qAM/TnOKonrWc1I/AAAAAAAAAEg/VJt9eco5v1Y/s1600/auto3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-XNAINWb-qAM/TnOKonrWc1I/AAAAAAAAAEg/VJt9eco5v1Y/s320/auto3.png" width="265" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-FYvPgZzg3WE/TnOKpeR1V1I/AAAAAAAAAEk/Q_Jpu7Fqkao/s1600/auto4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-FYvPgZzg3WE/TnOKpeR1V1I/AAAAAAAAAEk/Q_Jpu7Fqkao/s320/auto4.png" width="277" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-gGwdu6C9HaE/TnOKp32nGAI/AAAAAAAAAEo/6q0P3FqKDVs/s1600/auto5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-gGwdu6C9HaE/TnOKp32nGAI/AAAAAAAAAEo/6q0P3FqKDVs/s320/auto5.png" width="211" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-5975234076396658670?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5975234076396658670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5975234076396658670'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/09/change-autoposition-of-designator.html' title='Change the AutoPosition of the designator'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-RLoeZPanG2k/TnOKnEUM48I/AAAAAAAAAEY/lvVECc0I3gU/s72-c/auto1.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-4881459927992876712</id><published>2011-09-15T13:55:00.000-07:00</published><updated>2011-09-15T13:55:53.256-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Clone'/><category scheme='http://www.blogger.com/atom/ns#' term='Via'/><category scheme='http://www.blogger.com/atom/ns#' term='Clean Net'/><title type='text'>Clone a vias net to another via</title><content type='html'>This required a few months of help from Altium, they didn't solve the problem of not being able to add a net to an exsisting via with "not net". But Altium did put me on the right path, the via with "no net" has to be added to the net object, not adding the net to the via (which works if the via already has a net). So this fixes the previous scripts inability to add a net to a via with "no net".&lt;br /&gt;&lt;br /&gt;Sub CloneViaNetOBJ&lt;br /&gt;Dim Board&lt;br /&gt;Dim ObjVia&lt;br /&gt;Dim Borg&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;Set ObjVia = Board.GetObjectAtCursor(MkSet(eViaObject)_&lt;br /&gt;,AllLayers,"Select Via to Clone")&lt;br /&gt;&lt;br /&gt;NetIterator = Board.BoardIterator_Create&lt;br /&gt;NetIterator.AddFilter_ObjectSet(MkSet(eNetObject))&lt;br /&gt;NetIterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;NetIterator.AddFilter_Method(eProcessAll)&lt;br /&gt;Set NetFound = NetIterator.FirstPCBObject&lt;br /&gt;&lt;br /&gt;While FoundIt = 0 AND Not (NetFound Is Nothing)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If NetFound.Name = ObjVia.Net.Name Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FoundIt = 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set NetFound = NetIterator.NextPCBObject&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Call PCBServer.PreProcess&lt;br /&gt;While Board.ChooseLocation(x,y, "Click Via To Change") = True&lt;br /&gt;&amp;nbsp; Set Borg = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_&lt;br /&gt;&amp;nbsp; eViaObject),AllLayers,eEditAction_Focus)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; If Not(Borg is Nothing) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Borg.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Need to add the via to the net group, not the other way around!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetFound.AddPCBObject(borg)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Borg.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_EndModify , c_NoEventData)&lt;br /&gt;&amp;nbsp; End If&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Call Board.CleanNet(NetFound) 'How to clean all nets?&lt;br /&gt;Call PCBServer.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Board.BoardIterator_Destroy(NetIterator)&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-EIcYGMy0Lg0/TnJlnVYiOWI/AAAAAAAAAEQ/ZVjxMP95ltY/s1600/Clone1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-EIcYGMy0Lg0/TnJlnVYiOWI/AAAAAAAAAEQ/ZVjxMP95ltY/s1600/Clone1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Click the via with the net that you want&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-TjJiHAfqg70/TnJlpIDRrMI/AAAAAAAAAEU/3tDTET-3Cx8/s1600/Clone2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-TjJiHAfqg70/TnJlpIDRrMI/AAAAAAAAAEU/3tDTET-3Cx8/s1600/Clone2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Then click the ones you want to change.&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;﻿&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-4881459927992876712?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4881459927992876712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4881459927992876712'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/09/clone-vias-net-to-another-via.html' title='Clone a vias net to another via'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-EIcYGMy0Lg0/TnJlnVYiOWI/AAAAAAAAAEQ/ZVjxMP95ltY/s72-c/Clone1.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-3049443168888466639</id><published>2011-07-22T21:34:00.000-07:00</published><updated>2011-07-22T21:34:00.060-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Keys'/><category scheme='http://www.blogger.com/atom/ns#' term='Shortcut'/><title type='text'>List of Altium Shortcut keys</title><content type='html'>&lt;a href="http://wiki.altium.com/display/ADOH/Editor+Shortcuts"&gt;http://wiki.altium.com/display/ADOH/Editor+Shortcuts&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-3049443168888466639?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/3049443168888466639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/3049443168888466639'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/07/list-of-altium-shortcut-keys.html' title='List of Altium Shortcut keys'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-5584750950176014234</id><published>2011-07-14T21:01:00.000-07:00</published><updated>2011-07-15T10:52:18.831-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Schematic'/><category scheme='http://www.blogger.com/atom/ns#' term='Text'/><category scheme='http://www.blogger.com/atom/ns#' term='Net Labels'/><category scheme='http://www.blogger.com/atom/ns#' term='Hit Test'/><title type='text'>Covert net labels to text Labels and vice versa</title><content type='html'>Click on a text label and it will be converted to a net label, click on a text label on it will be converted to a net label.&lt;br /&gt;&lt;br /&gt;Sub Label2Text&lt;br /&gt;&lt;br /&gt;If SchServer Is Nothing Then Exit Sub&lt;br /&gt;Set CurrentSheet = SchServer.GetCurrentSchDocument&lt;br /&gt;If CurrentSheet is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;Call SchServer.ProcessControl.PreProcess(CurrentSheet, "")&lt;br /&gt;Set Alocation = CurrentSheet.Location&lt;br /&gt;&lt;br /&gt;While CurrentSheet.ChooseLocationInteractively(Alocation,"Select Label")&lt;br /&gt;&lt;br /&gt;Set HitTest = CurrentSheet.CreateHitTest(eHitTest_AllObjects, ALocation)&lt;br /&gt;&lt;br /&gt;If (HitTest.HitTestCount &amp;gt; 0) Then&lt;br /&gt;&amp;nbsp; For I = 0 to (HitTest.HitTestCount-1)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If HitTest.HitObject(I).ObjectId = eLabel Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set SchLabel = SchServer.SchObjectFactory(eNetLabel,eCreate_GlobalCopy)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SchLabel.FontID = HitTest.HitObject(I).FontID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Schlabel.Text = HitTest.HitObject(I).Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Schlabel.Location = HitTest.HitObject(I).Location&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentSheet.RegisterSchObjectInContainer(SchLabel)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentSheet.GraphicallyInvalidate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentSheet.RemoveSchObject(HitTest.HitObject(I))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call SchServer.RobotManager.SendMessage(CurrentSheet.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_BroadCast,SCHM_PrimitiveRegistration,HitTest.HitObject(I).I_ObjectAddress)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf HitTest.HitObject(I).ObjectId = eNetLabel Then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set SchLabel = SchServer.SchObjectFactory(eLabel,eCreate_GlobalCopy)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SchLabel.FontID = HitTest.HitObject(I).FontID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Schlabel.Text = HitTest.HitObject(I).Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Schlabel.Location = HitTest.HitObject(I).Location&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentSheet.RegisterSchObjectInContainer(SchLabel)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentSheet.RemoveSchObject(HitTest.HitObject(I))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CurrentSheet.GraphicallyInvalidate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call SchServer.RobotManager.SendMessage(CurrentSheet.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_BroadCast,SCHM_PrimitiveRegistration,HitTest.HitObject(I).I_ObjectAddress)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp; Next&lt;br /&gt;&lt;br /&gt;End If&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Call SchServer.ProcessControl.PostProcess(CurrentSheet, "")&lt;br /&gt;CurrentSheet.GraphicallyInvalidate&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JvYZxXrSn9s/Th-7aV2UQEI/AAAAAAAAAEM/GXWLMs9AELM/s1600/t2l2t.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="102" src="http://3.bp.blogspot.com/-JvYZxXrSn9s/Th-7aV2UQEI/AAAAAAAAAEM/GXWLMs9AELM/s320/t2l2t.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-5584750950176014234?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5584750950176014234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5584750950176014234'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/07/covert-net-labels-to-text-labels-and.html' title='Covert net labels to text Labels and vice versa'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-JvYZxXrSn9s/Th-7aV2UQEI/AAAAAAAAAEM/GXWLMs9AELM/s72-c/t2l2t.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-9013692861889757624</id><published>2011-07-05T07:49:00.000-07:00</published><updated>2011-07-05T07:49:00.942-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Schematic'/><category scheme='http://www.blogger.com/atom/ns#' term='ChooseLocationInteractively'/><category scheme='http://www.blogger.com/atom/ns#' term='Location'/><title type='text'>Loop while getting location with ChooseLocationInteractively</title><content type='html'>How to set up a loop while keeping the cursor active.&lt;br /&gt;&lt;br /&gt;Sub LoopIt&lt;br /&gt;&lt;br /&gt;If SchServer Is Nothing Then Exit Sub&lt;br /&gt;Set CurrentSheet = SchServer.GetCurrentSchDocument&lt;br /&gt;If CurrentSheet is Nothing Then Exit Sub&lt;br /&gt;Set Alocation = CurrentSheet.Location&lt;br /&gt;&lt;br /&gt;While CurrentSheet.ChooseLocationInteractively(Alocation,"Select Label")&lt;br /&gt;'tempStr = LocationtoStr(Alocation)&lt;br /&gt;ShowMessage("Location: " &amp;amp; CoordToMils(Alocation.X)_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp; "," &amp;amp; CoordToMils(Alocation.Y))&lt;br /&gt;&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-B-jBvU6t3ZY/Tg6H1C30RFI/AAAAAAAAAEI/K1FGAaMHeLY/s1600/Location.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://4.bp.blogspot.com/-B-jBvU6t3ZY/Tg6H1C30RFI/AAAAAAAAAEI/K1FGAaMHeLY/s320/Location.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;End Sub&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-9013692861889757624?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/9013692861889757624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/9013692861889757624'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/07/loop-while-getting-location-with.html' title='Loop while getting location with ChooseLocationInteractively'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-B-jBvU6t3ZY/Tg6H1C30RFI/AAAAAAAAAEI/K1FGAaMHeLY/s72-c/Location.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-6618544973200418751</id><published>2011-06-30T16:51:00.000-07:00</published><updated>2011-06-30T16:51:34.000-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Schematic'/><category scheme='http://www.blogger.com/atom/ns#' term='ChooseLocation'/><category scheme='http://www.blogger.com/atom/ns#' term='Hit Test'/><title type='text'>Hit Test Usage for Schematic</title><content type='html'>Using the ChooseLocationInteractively function to determine what is located at the cursor location when it is clicked.&amp;nbsp; The HitTest stores all of the objects located at the cursor when clicked.&lt;br /&gt;&lt;br /&gt;Sub HitTestExample&lt;br /&gt;&lt;br /&gt;If SchServer Is Nothing Then Exit Sub&lt;br /&gt;Set CurrentSheet = SchServer.GetCurrentSchDocument&lt;br /&gt;If CurrentSheet is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;Set Alocation = CurrentSheet.Location&lt;br /&gt;Call CurrentSheet.ChooseLocationInteractively(Alocation,"Select Label")&lt;br /&gt;Set HitTest = CurrentSheet.CreateHitTest(eHitTest_AllObjects, ALocation)&lt;br /&gt;&lt;br /&gt;If (HitTest.HitTestCount &amp;gt; 0) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp; For I = 0 to (HitTest.HitTestCount-1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage ("ObjectID Is " &amp;amp; HitTest.HitObject(I).ObjectId)&lt;br /&gt;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JUwoZeOYAkA/Tg0LrgRsuKI/AAAAAAAAAEE/MHsemk9oOEw/s1600/HitTest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="http://3.bp.blogspot.com/-JUwoZeOYAkA/Tg0LrgRsuKI/AAAAAAAAAEE/MHsemk9oOEw/s320/HitTest.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-6618544973200418751?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6618544973200418751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6618544973200418751'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/06/hit-test-usage-for-schematic.html' title='Hit Test Usage for Schematic'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-JUwoZeOYAkA/Tg0LrgRsuKI/AAAAAAAAAEE/MHsemk9oOEw/s72-c/HitTest.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-4722916829715703379</id><published>2011-06-17T09:00:00.000-07:00</published><updated>2011-06-17T09:00:02.639-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pads'/><category scheme='http://www.blogger.com/atom/ns#' term='GetObject'/><category scheme='http://www.blogger.com/atom/ns#' term='Renumber'/><category scheme='http://www.blogger.com/atom/ns#' term='PCB'/><title type='text'>Renumbering PCB pads with a mouse click</title><content type='html'>Quick way to renumber pads, mostly useful in the pcb library editor.&lt;br /&gt;Click on the pad with the first number and then click on the other pads and they will incremently change numbers.&lt;br /&gt;&lt;br /&gt;Sub RenumberPads&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim Rpad&lt;br /&gt;Dim PadNumber&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;Pcbserver.PreProcess&lt;br /&gt;Set PadObject = Board.GetObjectAtCursor(MkSet(ePadObject),_&lt;br /&gt;AllLayers,"Select Pad To Start With")&lt;br /&gt;PadNumber = PadObject.Name + 1&lt;br /&gt;&lt;br /&gt;While Board.ChooseLocation(x,y, "Click Next Pad To Renumber") = True&lt;br /&gt;&amp;nbsp; Set Rpad = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_&lt;br /&gt;&amp;nbsp; ePadObject),AllLayers,eEditAction_Change)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; If Not(Rpad is Nothing) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Rpad.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rpad.Name = PadNumber&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Rpad.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_EndModify , c_NoEventData)&lt;br /&gt;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp; PadNumber = PadNumber + 1&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Pcbserver.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-p9j2K1UorDc/TfaeUEyjqdI/AAAAAAAAADc/q6xIguWBSBQ/s1600/renumb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="203" src="http://3.bp.blogspot.com/-p9j2K1UorDc/TfaeUEyjqdI/AAAAAAAAADc/q6xIguWBSBQ/s320/renumb.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-4722916829715703379?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4722916829715703379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4722916829715703379'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/06/renumbering-pcb-pads-with-mouse-click.html' title='Renumbering PCB pads with a mouse click'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-p9j2K1UorDc/TfaeUEyjqdI/AAAAAAAAADc/q6xIguWBSBQ/s72-c/renumb.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-5081839671241847823</id><published>2011-06-15T06:00:00.000-07:00</published><updated>2011-06-15T06:00:11.044-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rules'/><category scheme='http://www.blogger.com/atom/ns#' term='Vias'/><title type='text'>Via Rules</title><content type='html'>Get the details of the via routing style rule.&lt;br /&gt;&lt;br /&gt;Sub GetViaRule&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim tmpStr&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;Iterator = Board.BoardIterator_Create&lt;br /&gt;Iterator.AddFilter_ObjectSet(MkSet(eRuleObject))&lt;br /&gt;Iterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;Iterator.AddFilter_Method(eProcessAll)&lt;br /&gt;Set Rule = Iterator.FirstPCBObject&lt;br /&gt;&lt;br /&gt;While Not (Rule Is Nothing)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;If&amp;nbsp; Rule.Rulekind =&amp;nbsp; eRule_RoutingViaStyle Then&lt;br /&gt;&amp;nbsp;tmpStr = "Name: " &amp;amp; Rule.Name &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "Pref Via Width: " &amp;amp; CoordtoMils(Rule.PreferedWidth)&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "mils" &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "Min Via Width: " &amp;amp; CoordtoMils(Rule.MinWidth)&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "mils" &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "Max Via Width: " &amp;amp; CoordtoMils(Rule.MaxWidth)&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "mils" &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "Pref Via Hole Width: " &amp;amp; CoordtoMils(Rule.PreferedHoleWidth)&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "mils" &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "Min Via Hole Width: " &amp;amp; CoordtoMils(Rule.MinHoleWidth)&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "mils" &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "Max Via Hole Width: " &amp;amp; CoordtoMils(Rule.MaxHoleWidth)&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "mils" &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "Scope1: " &amp;amp; Rule.Scope1Expression &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp;tmpStr = tmpStr &amp;amp; "Scope2: " &amp;amp; Rule.Scope2Expression&lt;br /&gt;&amp;nbsp;ShowMessage( tmpStr )&lt;br /&gt;&amp;nbsp;End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Set Rule = Iterator.NextPCBObject&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Board.BoardIterator_Destroy(Iterator)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-V8GcbStkSDE/TfPCJAICjfI/AAAAAAAAADY/EIMxbqhw_EQ/s1600/RuleVia.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="204" src="http://1.bp.blogspot.com/-V8GcbStkSDE/TfPCJAICjfI/AAAAAAAAADY/EIMxbqhw_EQ/s320/RuleVia.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-5081839671241847823?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5081839671241847823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5081839671241847823'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/06/via-rules.html' title='Via Rules'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-V8GcbStkSDE/TfPCJAICjfI/AAAAAAAAADY/EIMxbqhw_EQ/s72-c/RuleVia.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-4449383522397940181</id><published>2011-06-13T06:00:00.000-07:00</published><updated>2011-06-13T06:00:08.957-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rules'/><category scheme='http://www.blogger.com/atom/ns#' term='PCB'/><title type='text'>PCB rules and how to access them.</title><content type='html'>Get access to the PCB rules. Get the width rules and list the details.&lt;br /&gt;&lt;br /&gt;Sub GetWidthRule&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim tmpStr&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;Iterator = Board.BoardIterator_Create&lt;br /&gt;Iterator.AddFilter_ObjectSet(MkSet(eRuleObject))&lt;br /&gt;Iterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;Iterator.AddFilter_Method(eProcessAll)&lt;br /&gt;Set Rule = Iterator.FirstPCBObject&lt;br /&gt;&lt;br /&gt;While Not (Rule Is Nothing)&lt;br /&gt;&amp;nbsp;If&amp;nbsp; Rule.Rulekind =&amp;nbsp; eRule_MaxMinWidth Then&lt;br /&gt;&amp;nbsp; tmpStr = "Name: " &amp;amp; Rule.Name &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp; tmpStr = tmpStr &amp;amp; "Preferred: " &amp;amp; CoordtoMils(Rule.FavoredWidth(eTopLayer))&lt;br /&gt;&amp;nbsp; tmpStr = tmpStr &amp;amp; "mils" &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp; tmpStr = tmpStr &amp;amp; "Minimum: " &amp;amp; CoordtoMils(Rule.MinWidth(eTopLayer))&lt;br /&gt;&amp;nbsp; tmpStr = tmpStr &amp;amp; "mils" &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp; tmpStr = tmpStr &amp;amp; "Maximum: " &amp;amp; CoordtoMils(Rule.MaxWidth(eTopLayer))&lt;br /&gt;&amp;nbsp; tmpStr = tmpStr &amp;amp; "mils" &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp; tmpStr = tmpStr &amp;amp; "Scope1: " &amp;amp; Rule.Scope1Expression &amp;amp; vbcrlf&lt;br /&gt;&amp;nbsp; tmpStr = tmpStr &amp;amp; "Scope2: " &amp;amp; Rule.Scope2Expression&lt;br /&gt;&amp;nbsp; ShowMessage( tmpStr )&lt;br /&gt;&amp;nbsp;End If&lt;br /&gt;&amp;nbsp;Set Rule = Iterator.NextPCBObject&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Board.BoardIterator_Destroy(Iterator)&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-toyzRqKK3QY/TfOzxy2rAsI/AAAAAAAAADQ/SmHwr9GQ8J4/s1600/Rules.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="165" src="http://4.bp.blogspot.com/-toyzRqKK3QY/TfOzxy2rAsI/AAAAAAAAADQ/SmHwr9GQ8J4/s320/Rules.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A list of available rules:&lt;br /&gt;&lt;br /&gt;eRule_Clearance, &lt;br /&gt;eRule_ParallelSegment, &lt;br /&gt;eRule_MaxMinWidth, &lt;br /&gt;eRule_MaxMinLength, &lt;br /&gt;eRule_MatchedLengths, &lt;br /&gt;eRule_DaisyChainStubLength, &lt;br /&gt;eRule_PowerPlaneConnectStyle, &lt;br /&gt;eRule_RoutingTopology, &lt;br /&gt;eRule_RoutingPriority, &lt;br /&gt;eRule_RoutingLayers, &lt;br /&gt;eRule_RoutingCornerStyle, &lt;br /&gt;eRule_RoutingViaStyle, &lt;br /&gt;eRule_PowerPlaneClearance, &lt;br /&gt;eRule_SolderMaskExpansion, &lt;br /&gt;eRule_PasteMaskExpansion, &lt;br /&gt;eRule_ShortCircuit, &lt;br /&gt;eRule_BrokenNets, &lt;br /&gt;eRule_ViasUnderSMD, &lt;br /&gt;eRule_MaximumViaCount, &lt;br /&gt;eRule_MinimumAnnularRing, &lt;br /&gt;eRule_PolygonConnectStyle, &lt;br /&gt;eRule_AcuteAngle, &lt;br /&gt;eRule_ConfinementConstraint, &lt;br /&gt;eRule_SMDToCorner, &lt;br /&gt;eRule_ComponentClearance, &lt;br /&gt;eRule_ComponentRotations, &lt;br /&gt;eRule_PermittedLayers, &lt;br /&gt;eRule_NetsToIgnore, &lt;br /&gt;eRule_SignalStimulus, &lt;br /&gt;eRule_Overshoot_FallingEdge, &lt;br /&gt;eRule_Overshoot_RisingEdge, &lt;br /&gt;eRule_Undershoot_FallingEdge, &lt;br /&gt;eRule_Undershoot_RisingEdge, &lt;br /&gt;eRule_MaxMinImpedance, &lt;br /&gt;eRule_SignalTopValue, &lt;br /&gt;eRule_SignalBaseValue, &lt;br /&gt;eRule_FlightTime_RisingEdge, &lt;br /&gt;eRule_FlightTime_FallingEdge, &lt;br /&gt;eRule_LayerStack, &lt;br /&gt;eRule_MaxSlope_RisingEdge, &lt;br /&gt;eRule_MaxSlope_FallingEdge, &lt;br /&gt;eRule_SupplyNets, &lt;br /&gt;eRule_MaxMinHoleSize, &lt;br /&gt;eRule_TestPointStyle, &lt;br /&gt;eRule_TestPointUsage&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-4449383522397940181?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4449383522397940181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4449383522397940181'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/06/pcb-rules-and-how-to-access-them.html' title='PCB rules and how to access them.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-toyzRqKK3QY/TfOzxy2rAsI/AAAAAAAAADQ/SmHwr9GQ8J4/s72-c/Rules.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-2025153860567048312</id><published>2011-06-08T11:25:00.000-07:00</published><updated>2011-06-08T11:34:40.840-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rotation'/><category scheme='http://www.blogger.com/atom/ns#' term='Swap'/><category scheme='http://www.blogger.com/atom/ns#' term='Components'/><category scheme='http://www.blogger.com/atom/ns#' term='Designators'/><title type='text'>Swap Component Positions</title><content type='html'>This will swap the positions of two components that are choosen, including the rotation of the part and the rotation and position of the designators. Based on a script that came with Summer '09 but more useful. If a component is not selected the script will end to avoid a crash.&lt;br /&gt;&lt;br /&gt;Sub SwapComps&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim CompA&lt;br /&gt;Dim CompB&lt;br /&gt;Dim CompX&lt;br /&gt;Dim CompY&lt;br /&gt;Dim CompR&lt;br /&gt;Dim DesX&lt;br /&gt;Dim DesY&lt;br /&gt;Dim DesR&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;Pcbserver.PreProcess&lt;br /&gt;&lt;br /&gt;While Board.ChooseLocation(x,y, "Select First Componet") = True&lt;br /&gt;&lt;br /&gt;&amp;nbsp; Set CompA = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(eComponentObject)_&lt;br /&gt;&amp;nbsp; ,AllLayers, eEditAction_Select)&lt;br /&gt;&amp;nbsp; If CompA Is Nothing Then Exit Sub 'Needed, if no comp is selected, crash&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Call Board.ChooseLocation(x,y, "Select Second Componet")&lt;br /&gt;&amp;nbsp; Set CompB = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(eComponentObject)_&lt;br /&gt;&amp;nbsp; ,AllLayers, eEditAction_Select)&lt;br /&gt;&amp;nbsp; If CompB Is Nothing Then Exit Sub 'Needed,&amp;nbsp;if no comp is selected, crash&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompX = CompA.X&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompY = CompA.Y&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompR = CompA.Rotation&lt;br /&gt;&amp;nbsp;&amp;nbsp; DesX&amp;nbsp; = CompA.Name.XLocation&lt;br /&gt;&amp;nbsp;&amp;nbsp; DesY&amp;nbsp; = CompA.Name.YLocation&lt;br /&gt;&amp;nbsp;&amp;nbsp; DesR&amp;nbsp; = CompA.Name.Rotation&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompA.I_ObjectAddress,c_Broadcast,_&lt;br /&gt;&amp;nbsp;&amp;nbsp; PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompA.X = CompB.X&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompA.Y = CompB.Y&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompA.Rotation = CompB.Rotation&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompA.ChangeNameAutoposition = eAutoPos_Manual&lt;br /&gt;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompA.I_ObjectAddress,c_Broadcast,_&lt;br /&gt;&amp;nbsp;&amp;nbsp; PCBM_EndModify , c_NoEventData)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompA.Name.I_ObjectAddress, c_Broadcast,_&lt;br /&gt;&amp;nbsp;&amp;nbsp; PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompA.Name.XLocation = CompB.Name.XLocation&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompA.Name.YLocation = CompB.Name.YLocation&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompA.Name.Rotation = CompB.Name.Rotation&lt;br /&gt;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompA.Name.I_ObjectAddress, c_Broadcast,_&lt;br /&gt;&amp;nbsp;&amp;nbsp; PCBM_EndModify , c_NoEventData)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompB.I_ObjectAddress,c_Broadcast,_&lt;br /&gt;&amp;nbsp;&amp;nbsp; PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompB.X = CompX&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompB.Y = CompY&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompB.Rotation = CompR&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompB.ChangeNameAutoposition = eAutoPos_Manual&lt;br /&gt;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompB.I_ObjectAddress,c_Broadcast,_&lt;br /&gt;&amp;nbsp;&amp;nbsp; PCBM_EndModify , c_NoEventData)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompB.Name.I_ObjectAddress, c_Broadcast,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompB.Name.XLocation = DesX&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompB.Name.YLocation = DesY&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompB.Name.Rotation = DesR&lt;br /&gt;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompB.Name.I_ObjectAddress, c_Broadcast,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PCBM_EndModify , c_NoEventData)&lt;br /&gt;&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Pcbserver.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-hLMiEbkdm3I/Te50_i_1AfI/AAAAAAAAADM/BE4tneP393g/s1600/swap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="151" src="http://2.bp.blogspot.com/-hLMiEbkdm3I/Te50_i_1AfI/AAAAAAAAADM/BE4tneP393g/s320/swap.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-2025153860567048312?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/2025153860567048312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/2025153860567048312'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/06/swap-component-positions.html' title='Swap Component Positions'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-hLMiEbkdm3I/Te50_i_1AfI/AAAAAAAAADM/BE4tneP393g/s72-c/swap.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-2622275717716146523</id><published>2011-06-06T20:26:00.000-07:00</published><updated>2011-06-06T20:26:47.444-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Components'/><category scheme='http://www.blogger.com/atom/ns#' term='DRC'/><category scheme='http://www.blogger.com/atom/ns#' term='Designators'/><title type='text'>Set the DRC error for a component</title><content type='html'>Simple test to look for the "R2" componet and set it's DRC flag.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub SetDRC&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim CompDes&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;Iterator = Board.BoardIterator_Create&lt;br /&gt;Iterator.AddFilter_ObjectSet(MkSet(eComponentObject))&lt;br /&gt;Iterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;Iterator.AddFilter_Method(eProcessComponents)&lt;br /&gt;Set CompDes = Iterator.FirstPCBObject&lt;br /&gt;PCBServer.PreProcess&lt;br /&gt;&lt;br /&gt;While Not(CompDes Is Nothing)&lt;br /&gt;&amp;nbsp; If CompDes.Name.Text = "R2" then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.SetState_DRCError = True&lt;br /&gt;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp; Set CompDes = Iterator.NextPCBObject&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Board.BoardIterator_Destroy(Iterator)&lt;br /&gt;Pcbserver.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-aw3JahPWgBY/Te2aYEmlx4I/AAAAAAAAADI/d0aUvuYvPqk/s1600/DRC.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://3.bp.blogspot.com/-aw3JahPWgBY/Te2aYEmlx4I/AAAAAAAAADI/d0aUvuYvPqk/s320/DRC.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-2622275717716146523?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/2622275717716146523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/2622275717716146523'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/06/set-drc-error-for-component.html' title='Set the DRC error for a component'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-aw3JahPWgBY/Te2aYEmlx4I/AAAAAAAAADI/d0aUvuYvPqk/s72-c/DRC.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-497616598978681725</id><published>2011-06-03T09:04:00.000-07:00</published><updated>2011-06-06T10:15:52.813-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pads'/><category scheme='http://www.blogger.com/atom/ns#' term='Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Via'/><title type='text'>Clone a net from one object to another</title><content type='html'>I can see this one as being a little dangerous, it's meant to show how to click&amp;nbsp;an object with a net and then any pad, via, or track that you click (that already has&amp;nbsp;a net&amp;nbsp;assigned) will then be changed to the first net that was choosen.&lt;br /&gt;&lt;br /&gt;Sub CloneNet&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim NetObject&lt;br /&gt;Dim Borg&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;NetObject = Board.GetObjectAtCursor(MkSet(ePadObject,eTrackObject,eViaObject)_&lt;br /&gt;,AllLayers,"Select Net to Clone")&lt;br /&gt;Call PCBServer.PreProcess&lt;br /&gt;While Board.ChooseLocation(x,y, "Click Item To Change") = True&lt;br /&gt;&lt;br /&gt;&amp;nbsp; Set Borg = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_&lt;br /&gt;&amp;nbsp; ePadObject,eTrackObject,eViaObject),AllLayers,eEditAction_Change)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; If Not(Borg is Nothing) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Borg.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Borg.Net = NetObject.Net&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Borg.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_EndModify , c_NoEventData)&lt;br /&gt;&amp;nbsp; End If&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Call PCBServer.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-mdQLsBCgM80/TebHlNuGc0I/AAAAAAAAADE/J5r7LAdnB5E/s1600/clone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://2.bp.blogspot.com/-mdQLsBCgM80/TebHlNuGc0I/AAAAAAAAADE/J5r7LAdnB5E/s320/clone.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-497616598978681725?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/497616598978681725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/497616598978681725'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/06/clone-net-from-one-object-to-another.html' title='Clone a net from one object to another'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-mdQLsBCgM80/TebHlNuGc0I/AAAAAAAAADE/J5r7LAdnB5E/s72-c/clone.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-1736158735560601401</id><published>2011-06-01T15:19:00.000-07:00</published><updated>2011-06-06T10:15:04.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Select'/><title type='text'>Count selected objects</title><content type='html'>How many objects are currently selected on the PCB.&lt;br /&gt;&lt;br /&gt;Sub CountSelObj&lt;br /&gt;Dim Board&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;ShowMessage (Board.SelectecObjectCount &amp;amp; " Items are selected.")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-mHUJmuJJ8ek/Tea6dUwfEyI/AAAAAAAAADA/de-cRrsNgro/s1600/cntsel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://3.bp.blogspot.com/-mHUJmuJJ8ek/Tea6dUwfEyI/AAAAAAAAADA/de-cRrsNgro/s320/cntsel.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-1736158735560601401?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/1736158735560601401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/1736158735560601401'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/06/count-selected-objects.html' title='Count selected objects'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-mHUJmuJJ8ek/Tea6dUwfEyI/AAAAAAAAADA/de-cRrsNgro/s72-c/cntsel.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-6436278591749581231</id><published>2011-05-26T11:03:00.000-07:00</published><updated>2011-06-06T10:14:38.282-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Toggle'/><category scheme='http://www.blogger.com/atom/ns#' term='Designators'/><title type='text'>Toggle Component Designators</title><content type='html'>Toggle all component designators on PCB from shown to hidden.&lt;br /&gt;&lt;br /&gt;Sub ToggleDesignators&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim Component&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;Iterator = Board.BoardIterator_Create&lt;br /&gt;Iterator.AddFilter_ObjectSet(MkSet(eComponentObject))&lt;br /&gt;Iterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;Iterator.AddFilter_Method(eProcessAll)&lt;br /&gt;Set Component= Iterator.FirstPCBObject&lt;br /&gt;PCBServer.PreProcess&lt;br /&gt;&lt;br /&gt;While Not(Component is Nothing)&lt;br /&gt;&amp;nbsp; Component.NameOn = Not(Component.NameOn)&lt;br /&gt;&amp;nbsp; Set Component= Iterator.NextPCBObject&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Board.BoardIterator_Destroy(Iterator)&lt;br /&gt;Pcbserver.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-DDRLJ80bLDA/Td6VZcQ4smI/AAAAAAAAAC4/GqO2V1CyO-w/s1600/toggle1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://4.bp.blogspot.com/-DDRLJ80bLDA/Td6VZcQ4smI/AAAAAAAAAC4/GqO2V1CyO-w/s320/toggle1.png" width="320" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-mlyYRjdflo8/Td6VabLhO7I/AAAAAAAAAC8/zYJIitZA0Lw/s1600/toggle2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://2.bp.blogspot.com/-mlyYRjdflo8/Td6VabLhO7I/AAAAAAAAAC8/zYJIitZA0Lw/s320/toggle2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-6436278591749581231?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6436278591749581231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6436278591749581231'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/toggle-component-designators.html' title='Toggle Component Designators'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-DDRLJ80bLDA/Td6VZcQ4smI/AAAAAAAAAC4/GqO2V1CyO-w/s72-c/toggle1.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-2827044791709126414</id><published>2011-05-24T14:33:00.000-07:00</published><updated>2011-05-26T15:46:33.611-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Text'/><category scheme='http://www.blogger.com/atom/ns#' term='Read'/><category scheme='http://www.blogger.com/atom/ns#' term='File'/><title type='text'>Open a text file and read the contents line by line.</title><content type='html'>As written this needs to be run with a PCB file active.&lt;br /&gt;&lt;br /&gt;Sub ReadTextFile&lt;br /&gt;&lt;br /&gt;'Constants for File Handling&lt;br /&gt;Const ForReading = 1&lt;br /&gt;Const ForWriting = 2&lt;br /&gt;Const ForAppending = 8&lt;br /&gt;Const TristateUseDefault = -2&lt;br /&gt;Const TristateTrue = -1&lt;br /&gt;Const TristateFalse = 0&lt;br /&gt;Dim Board&lt;br /&gt;Dim FileName&lt;br /&gt;Dim oFS&lt;br /&gt;Dim oFile&lt;br /&gt;Dim oStream&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;'File Handling - Place a text file named "TextFile.txt" in&lt;br /&gt;'the same directory as the current board that is open.&lt;br /&gt;FileName=Left(Board.FileName, InstrRev(Board.FileName, "\") ) &amp;amp; "TextFile.txt"&lt;br /&gt;&lt;br /&gt;'Check for the text file&lt;br /&gt;If Not FileExists(FileName) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp; ShowMessage ( FileName &amp;amp; " was not found.")&lt;br /&gt;&amp;nbsp;&amp;nbsp; Exit Sub&lt;br /&gt;End If&lt;br /&gt;Set oFS = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;Set oFile = oFS.GetFile(FileName)&lt;br /&gt;Set oStream = oFile.OpenAsTextStream(ForReading, TristateUseDefault)&lt;br /&gt;&lt;br /&gt;I = 1&lt;br /&gt;'Read the file in&lt;br /&gt;Do While Not oStream.AtEndOfStream&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sRecord = oStream.ReadLine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage ( "Line #" &amp;amp; I &amp;amp; " " &amp;amp; sRecord )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I = I + 1&lt;br /&gt;Loop&lt;br /&gt;oStream.Close&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-2827044791709126414?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/2827044791709126414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/2827044791709126414'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/open-text-file-and-read-contents-line.html' title='Open a text file and read the contents line by line.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-7835394601930679727</id><published>2011-05-20T06:48:00.000-07:00</published><updated>2011-05-20T06:48:00.363-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pads'/><category scheme='http://www.blogger.com/atom/ns#' term='Track'/><category scheme='http://www.blogger.com/atom/ns#' term='Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Vias'/><title type='text'>Place a track and via with the choosen pad net assigned to them.</title><content type='html'>Select a pad with a net and a stinger (a track and a via) will be placed with the pads net.&lt;br /&gt;&lt;br /&gt;Sub TagPadWithNet&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim Track&lt;br /&gt;Dim Via&lt;br /&gt;Dim NetObject&lt;br /&gt;Dim PadX&lt;br /&gt;Dim PadY&lt;br /&gt;Dim PadNet&lt;br /&gt;Dim ViasSize&lt;br /&gt;Dim ViaHole&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;NetObject = Board.GetObjectAtCursor(MkSet(ePadObject),AllLayers,"Select Net")&lt;br /&gt;PadX = CoordToMils(NetObject.X)&lt;br /&gt;PadY = CoordToMils(NetObject.Y)&lt;br /&gt;PadNet = NetObject.Net.Name&lt;br /&gt;X1 = PadX&lt;br /&gt;X2 = PadX - CoordToMils(NetObject.TopXSize) - 10&lt;br /&gt;Y1 = PadY&lt;br /&gt;Y2 = PadY&lt;br /&gt;Layer = NetObject.Layer&lt;br /&gt;Width = 10&lt;br /&gt;Call PCBServer.PreProcess&lt;br /&gt;&lt;br /&gt;'Add the Track&lt;br /&gt;Track&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = PCBServer.PCBObjectFactory(eTrackObject, eNoDimension, eCreate_Default)&lt;br /&gt;Track.X1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = MilsToCoord(X1)&lt;br /&gt;Track.X2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = MilsToCoord(X2)&lt;br /&gt;Track.Y1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = MilsToCoord(Y1)&lt;br /&gt;Track.Y2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = MilsToCoord(Y2)&lt;br /&gt;Track.Layer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Layer&lt;br /&gt;Track.Net&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NetObject.Net&lt;br /&gt;Track.Width&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = MilsToCoord(Width)&lt;br /&gt;Board.AddPCBObject(Track)&lt;br /&gt;Call PCBServer.SendMessageToRobots(Board.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;c_Broadcast, PCBM_BoardRegisteration, Track.I_ObjectAddress)&lt;br /&gt;&lt;br /&gt;'Add the via&lt;br /&gt;ViaSize = 26&lt;br /&gt;ViaHole = 12&lt;br /&gt;Via&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = PCBServer.PCBObjectFactory(eViaObject, eNoDimension, eCreate_Default)&lt;br /&gt;Via.X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = MilsToCoord(X2)&lt;br /&gt;Via.Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = MilsToCoord(Y2)&lt;br /&gt;Via.Size&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = MilsToCoord(ViaSize)&lt;br /&gt;Via.HoleSize&amp;nbsp; = MilsToCoord(ViaHole)&lt;br /&gt;Via.LowLayer&amp;nbsp; = eTopLayer&lt;br /&gt;Via.HighLayer = eBottomLayer&lt;br /&gt;Via.Net&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NetObject.Net&lt;br /&gt;Board.AddPCBObject(Via)&lt;br /&gt;Call PCBServer.SendMessageToRobots(Board.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;c_Broadcast, PCBM_BoardRegisteration, Via.I_ObjectAddress)&lt;br /&gt;&lt;br /&gt;Call PCBServer.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QpcuMOgDXq8/TcnsNLAVEqI/AAAAAAAAACw/tvhHdhpRDAc/s1600/TagPad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://4.bp.blogspot.com/-QpcuMOgDXq8/TcnsNLAVEqI/AAAAAAAAACw/tvhHdhpRDAc/s320/TagPad.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-7835394601930679727?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/7835394601930679727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/7835394601930679727'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/place-track-and-via-with-choosen-pad.html' title='Place a track and via with the choosen pad net assigned to them.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-QpcuMOgDXq8/TcnsNLAVEqI/AAAAAAAAACw/tvhHdhpRDAc/s72-c/TagPad.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-8411450124993124574</id><published>2011-05-19T06:39:00.000-07:00</published><updated>2011-05-19T06:39:00.866-07:00</updated><title type='text'>Get the board dimensions as defined by the board outline.</title><content type='html'>Sub BoardDimension&lt;br /&gt;Dim Board&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;ShowMessage ( "X=" &amp;amp; CoordToMils(Board.BoardOutline.BoundingRectangle.right _&lt;br /&gt;&amp;nbsp;- Board.BoardOutline.BoundingRectangle.left) &amp;amp; " mils,Y=" &amp;amp; _&lt;br /&gt;&amp;nbsp;CoordToMils(Board.BoardOutline.BoundingRectangle.top _&lt;br /&gt;&amp;nbsp; - Board.BoardOutline.BoundingRectangle.bottom) &amp;amp; " mils")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jVwu-2hb7mU/TdKzyqOVImI/AAAAAAAAAC0/q6VRLxYomys/s1600/Dimensions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="188" src="http://4.bp.blogspot.com/-jVwu-2hb7mU/TdKzyqOVImI/AAAAAAAAAC0/q6VRLxYomys/s320/Dimensions.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-8411450124993124574?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/8411450124993124574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/8411450124993124574'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/get-board-dimensions-as-defined-by.html' title='Get the board dimensions as defined by the board outline.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-jVwu-2hb7mU/TdKzyqOVImI/AAAAAAAAAC0/q6VRLxYomys/s72-c/Dimensions.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-4577012795668824501</id><published>2011-05-18T07:00:00.000-07:00</published><updated>2011-05-18T07:00:00.879-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pads'/><category scheme='http://www.blogger.com/atom/ns#' term='Net'/><title type='text'>Identify a pads net.</title><content type='html'>Simple way to get a pads net.&lt;br /&gt;&lt;br /&gt;Sub GetPadNet&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim NetObject&lt;br /&gt;Dim tmpString&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;NetObject = Board.GetObjectAtCursor(MkSet(ePadObject),AllLayers,"Select Net")&lt;br /&gt;tmpString = NetObject.Net.Name&lt;br /&gt;ShowMessage (tmpString)&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-SI0LMz77lBI/TcnMnx95chI/AAAAAAAAACo/jwpuulcFSIM/s1600/GetPadNet.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://2.bp.blogspot.com/-SI0LMz77lBI/TcnMnx95chI/AAAAAAAAACo/jwpuulcFSIM/s320/GetPadNet.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-4577012795668824501?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4577012795668824501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4577012795668824501'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/identify-pads-net.html' title='Identify a pads net.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-SI0LMz77lBI/TcnMnx95chI/AAAAAAAAACo/jwpuulcFSIM/s72-c/GetPadNet.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-7648542853111271206</id><published>2011-05-16T10:22:00.000-07:00</published><updated>2011-05-16T10:22:00.239-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='PCB File Name'/><category scheme='http://www.blogger.com/atom/ns#' term='File'/><title type='text'>Report a list of net names in PCB to a file.</title><content type='html'>Get a list of net names in the PCB and write a report (text file).&lt;br /&gt;&lt;br /&gt;Sub ReportNets&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim FileName&lt;br /&gt;Dim ReportFile&lt;br /&gt;Dim ReportDocument &lt;br /&gt;Dim fso&lt;br /&gt;&lt;br /&gt;BeginHourGlass&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;FileName =&amp;nbsp; Left(Board.FileName, InstrRev(Board.FileName, "\") ) &amp;amp; "ReportNets.txt"&lt;br /&gt;Set fso = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;Set ReportFile = fso.CreateTextFile(FileName, True)&lt;br /&gt;&lt;br /&gt;NetIterator = Board.BoardIterator_Create&lt;br /&gt;NetIterator.AddFilter_ObjectSet(MkSet(eNetObject))&lt;br /&gt;NetIterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;NetIterator.AddFilter_Method(eProcessAll)&lt;br /&gt;Set NetFound = NetIterator.FirstPCBObject&lt;br /&gt;&lt;br /&gt;While Not (NetFound Is Nothing)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call ReportFile.WriteLine( NetFound.Name )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set NetFound = NetIterator.NextPCBObject&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Board.BoardIterator_Destroy(NetIterator)&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;ReportFile.Close&lt;br /&gt;Set ReportDocument = Client.OpenDocument("Text", FileName)&lt;br /&gt;If Not (ReportDocument Is Nothing) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Client.ShowDocument(ReportDocument)&lt;br /&gt;End If&lt;br /&gt;EndHourGlass&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ElV1h3lZyNU/Tcl0n6rqC_I/AAAAAAAAACg/_q4meHY7j2Y/s1600/ReportNets.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-ElV1h3lZyNU/Tcl0n6rqC_I/AAAAAAAAACg/_q4meHY7j2Y/s320/ReportNets.png" width="288" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-7648542853111271206?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/7648542853111271206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/7648542853111271206'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/report-list-of-net-names-in-pcb-to-file.html' title='Report a list of net names in PCB to a file.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ElV1h3lZyNU/Tcl0n6rqC_I/AAAAAAAAACg/_q4meHY7j2Y/s72-c/ReportNets.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-1424415506311623033</id><published>2011-05-14T16:18:00.000-07:00</published><updated>2011-05-14T16:18:00.247-07:00</updated><title type='text'>Basic's to write a report text file.</title><content type='html'>Run this with a PCB file active.&lt;br /&gt;Sub WriteFile&lt;br /&gt;&lt;br /&gt;Dim FileName&lt;br /&gt;Dim ReportDocument&lt;br /&gt;Dim fso&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;'Run With a PCB file open&lt;br /&gt;&lt;br /&gt;FileName =&amp;nbsp; Left(Board.FileName, InstrRev(Board.FileName, "\") ) &amp;amp; "temp.Txt"&lt;br /&gt;Set fso = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;Set ReportFile = fso.CreateTextFile(FileName, True)&lt;br /&gt;&lt;br /&gt;Call ReportFile.WriteLine (Now)&lt;br /&gt;Call ReportFile.WriteLine ("Report File Example")&lt;br /&gt;&lt;br /&gt;ReportFile.Close&lt;br /&gt;Set ReportDocument = Client.OpenDocument("Text", FileName)&lt;br /&gt;If Not (ReportDocument Is Nothing) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Client.ShowDocument(ReportDocument)&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-1424415506311623033?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/1424415506311623033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/1424415506311623033'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/basics-to-write-report-text-file.html' title='Basic&apos;s to write a report text file.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-4071960533593584115</id><published>2011-05-13T11:33:00.000-07:00</published><updated>2011-05-13T11:33:00.817-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pads'/><category scheme='http://www.blogger.com/atom/ns#' term='GetObject'/><category scheme='http://www.blogger.com/atom/ns#' term='Iterator'/><title type='text'>Get pads that make up a component using a group iterator.</title><content type='html'>Select a PCB component with the GetObject and then using a Group Iterator list&amp;nbsp;all pads&amp;nbsp;and the location of the pads that make up the choosen component.&lt;br /&gt;&lt;br /&gt;Sub GetCompPads&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim Comp&lt;br /&gt;Dim CompGroup&lt;br /&gt;Dim CompPads&lt;br /&gt;Dim x,y&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;While Board.ChooseLocation(x,y, "Choose Pad") = True&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set Comp = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eComponentObject),AllLayers,eEditAction_Focus)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not(Comp is Nothing)&amp;nbsp; Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set CompGroup = Comp.GroupIterator_Create&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompGroup.AddFilter_ObjectSet(MkSet(EpadObject))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set CompPad = CompGroup.FirstPCBObject&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; While Not(CompPad is Nothing )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage("Pad=" &amp;amp; CompPad.Name &amp;amp; " X=" &amp;amp; CoordToMils(CompPad.X)_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp; " Y=" &amp;amp; CoordToMils(CompPad.Y))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set CompPad = CompGroup.NextPCBObject&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wend&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-TqgnVhlk9-g/TcmGL7ecxBI/AAAAAAAAACk/nWSmepiVO9s/s1600/ListPads.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="http://1.bp.blogspot.com/-TqgnVhlk9-g/TcmGL7ecxBI/AAAAAAAAACk/nWSmepiVO9s/s320/ListPads.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-4071960533593584115?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4071960533593584115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4071960533593584115'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/get-pads-that-make-up-component-using.html' title='Get pads that make up a component using a group iterator.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-TqgnVhlk9-g/TcmGL7ecxBI/AAAAAAAAACk/nWSmepiVO9s/s72-c/ListPads.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-5499863411987549146</id><published>2011-05-09T21:29:00.000-07:00</published><updated>2011-05-09T21:30:46.236-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Components'/><category scheme='http://www.blogger.com/atom/ns#' term='Designators'/><category scheme='http://www.blogger.com/atom/ns#' term='Select'/><title type='text'>Rotate and Center Designators of Selected Parts.</title><content type='html'>Build upon a previous script,&amp;nbsp;rotate and center designators for only&amp;nbsp;selected parts.&lt;br /&gt;&lt;br /&gt;Sub RotateSelectedDesignators&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim Component&lt;br /&gt;Dim CompDes&lt;br /&gt;Dim I&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;BeginHourGlass&lt;br /&gt;Iterator = Board.BoardIterator_Create&lt;br /&gt;Iterator.AddFilter_ObjectSet(MkSet(eComponentObject))&lt;br /&gt;Iterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;Iterator.AddFilter_Method(eProcessAll)&lt;br /&gt;Set CompDes = Iterator.FirstPCBObject&lt;br /&gt;PCBServer.PreProcess&lt;br /&gt;I = 0&lt;br /&gt;&lt;br /&gt;While Not (CompDes Is Nothing)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; If CompDes.Selected = True Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompDes.Name.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I = I + 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If CompDes.Layer = eTopLayer then&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Component is on the top&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select Case CompDes.Rotation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 0, 180, 360&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.Name.Rotation&amp;nbsp; = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 90, 270&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.Name.Rotation&amp;nbsp; = 90&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Select&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Component is on the bottom&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select Case CompDes.Rotation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 0, 180, 360&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.Name.Rotation&amp;nbsp; = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 90, 270&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.Name.Rotation&amp;nbsp; = 270&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Select&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompDes.Name.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_EndModify , c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompDes.Name.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.ChangeNameAutoposition = eAutoPos_CenterCenter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompDes.Name.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_EndModify , c_NoEventData)&lt;br /&gt;&amp;nbsp; End if&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set CompDes = Iterator.NextPCBObject&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;'Uncomment this line if you want a message after it has finished.&lt;br /&gt;'ShowMessage(I &amp;amp; " were found")&lt;br /&gt;If I = 0 then&lt;br /&gt;&amp;nbsp;&amp;nbsp; ShowMessage("No parts were selected.")&lt;br /&gt;End If&lt;br /&gt;Board.BoardIterator_Destroy(Iterator)&lt;br /&gt;Pcbserver.PostProcess&lt;br /&gt;EndHourGlass&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Ekviu1eJ-No/Tci-n6LII_I/AAAAAAAAACc/G5ucpe1qrbg/s1600/ResetSelected.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="http://4.bp.blogspot.com/-Ekviu1eJ-No/Tci-n6LII_I/AAAAAAAAACc/G5ucpe1qrbg/s320/ResetSelected.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.tdpcb.com/"&gt;www.tdpcb.com&lt;/a&gt;﻿&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-5499863411987549146?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5499863411987549146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5499863411987549146'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/rotate-and-center-designators-of.html' title='Rotate and Center Designators of Selected Parts.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Ekviu1eJ-No/Tci-n6LII_I/AAAAAAAAACc/G5ucpe1qrbg/s72-c/ResetSelected.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-5764787681204248592</id><published>2011-05-05T09:01:00.000-07:00</published><updated>2011-05-08T21:28:50.339-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GetObject'/><category scheme='http://www.blogger.com/atom/ns#' term='Cursor'/><category scheme='http://www.blogger.com/atom/ns#' term='Components'/><title type='text'>GetObject at cursor to pick a component.</title><content type='html'>Using the GetObject to choose what component to reset the designator to center/center. &lt;br /&gt;Press escape to end action.&lt;br /&gt;&lt;br /&gt;Sub ChooseDesReset&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim Comp&lt;br /&gt;Dim x,y&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;Call PCBServer.PreProcess&lt;br /&gt;&lt;br /&gt;While Board.ChooseLocation(x,y, "Choose Component") = True&lt;br /&gt;&amp;nbsp; Set Comp = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_&lt;br /&gt;&amp;nbsp; eComponentObject),AllLayers,eEditAction_Focus)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; If Not(Comp is Nothing) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Comp.Name.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Comp.ChangeNameAutoposition = eAutoPos_CenterCenter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Call PCBServer.SendMessageToRobots(Comp.Name.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c_Broadcast, PCBM_EndModify , c_NoEventData)&lt;br /&gt;&amp;nbsp;&amp;nbsp;End If&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Call PCBServer.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oDur04V952Q/TbtSbFtxzmI/AAAAAAAAACY/KbLqyF6G8QA/s1600/GetObject.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="184" j8="true" src="http://1.bp.blogspot.com/-oDur04V952Q/TbtSbFtxzmI/AAAAAAAAACY/KbLqyF6G8QA/s320/GetObject.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-5764787681204248592?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5764787681204248592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/5764787681204248592'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/05/getobject-at-cursor-to-pick-component.html' title='GetObject at cursor to pick a component.'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-oDur04V952Q/TbtSbFtxzmI/AAAAAAAAACY/KbLqyF6G8QA/s72-c/GetObject.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-861005945735202949</id><published>2011-05-03T09:39:00.000-07:00</published><updated>2011-05-04T17:32:07.609-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Components'/><category scheme='http://www.blogger.com/atom/ns#' term='Select'/><title type='text'>Selected Components</title><content type='html'>Count how many components are currently selected in the PCB.&lt;br /&gt;&lt;br /&gt;Sub HowManyCompsSelected&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim Component&lt;br /&gt;Dim I&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;Iterator = Board.BoardIterator_Create&lt;br /&gt;Iterator.AddFilter_ObjectSet(MkSet(eComponentObject))&lt;br /&gt;Iterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;Iterator.AddFilter_Method(eProcessAll)&lt;br /&gt;&lt;br /&gt;Set Component= Iterator.FirstPCBObject&lt;br /&gt;PCBServer.PreProcess&lt;br /&gt;I = 0&lt;br /&gt;&lt;br /&gt;While Not(Component is Nothing)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; If Component.Selected = True Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I = I + 1&lt;br /&gt;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp; Set Component= Iterator.NextPCBObject&lt;br /&gt;&lt;br /&gt;Wend&lt;br /&gt;ShowMessage(I &amp;amp; " selected.")&lt;br /&gt;Board.BoardIterator_Destroy(Iterator)&lt;br /&gt;Pcbserver.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qwCZQbdGIG4/Tbs7OaHXlbI/AAAAAAAAACU/1YERoUVPxks/s1600/selected.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" j8="true" src="http://1.bp.blogspot.com/-qwCZQbdGIG4/Tbs7OaHXlbI/AAAAAAAAACU/1YERoUVPxks/s320/selected.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-861005945735202949?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/861005945735202949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/861005945735202949'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/selected-components.html' title='Selected Components'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-qwCZQbdGIG4/Tbs7OaHXlbI/AAAAAAAAACU/1YERoUVPxks/s72-c/selected.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-6263413408010564857</id><published>2011-04-29T17:08:00.000-07:00</published><updated>2011-04-29T17:08:28.773-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Components'/><category scheme='http://www.blogger.com/atom/ns#' term='Designators'/><title type='text'>Moving Designators</title><content type='html'>Rotate the designators in one of two ways and center them on the component so they are consistant.&lt;br /&gt;Also detect if the component is on the top or the bottom.&lt;br /&gt;&lt;br /&gt;Sub RotateDesignators&lt;br /&gt;Dim Board&lt;br /&gt;Dim Component&lt;br /&gt;Dim CompDes&lt;br /&gt;Dim I&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;Iterator = Board.BoardIterator_Create&lt;br /&gt;Iterator.AddFilter_ObjectSet(MkSet(eComponentObject))&lt;br /&gt;Iterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;Iterator.AddFilter_Method(eProcessAll)&lt;br /&gt;&lt;br /&gt;Set CompDes = Iterator.FirstPCBObject&lt;br /&gt;PCBServer.PreProcess&lt;br /&gt;I = 0&lt;br /&gt;While Not (CompDes Is Nothing)&lt;br /&gt;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompDes.Name.I_ObjectAddress,_&lt;br /&gt;&amp;nbsp; c_Broadcast, PCBM_BeginModify, c_NoEventData)&lt;br /&gt;&amp;nbsp; I = I + 1&lt;br /&gt;&amp;nbsp; If CompDes.Layer = eTopLayer then&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Component is on the top&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select Case CompDes.Rotation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 0, 180, 360&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.Name.Rotation&amp;nbsp; = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 90, 270&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.Name.Rotation&amp;nbsp; = 90&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.Name.Rotation&amp;nbsp; = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Select&lt;br /&gt;&amp;nbsp;Else&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Component is on the bottom&lt;br /&gt;&amp;nbsp;&amp;nbsp; Select Case CompDes.Rotation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 0, 180, 360&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CompDes.Name.Rotation&amp;nbsp; = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 90, 270&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CompDes.Name.Rotation&amp;nbsp; = 270&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompDes.Name.Rotation&amp;nbsp; = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Select&lt;br /&gt;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp; CompDes.ChangeNameAutoposition = eAutoPos_CenterCenter&lt;br /&gt;&amp;nbsp; Call PCBServer.SendMessageToRobots(CompDes.Name.I_ObjectAddress,_&lt;br /&gt;c_Broadcast, PCBM_EndModify , c_NoEventData)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; Set CompDes = Iterator.NextPCBObject&lt;br /&gt;Wend&lt;br /&gt;'Uncomment next line if you want a message after it has finished.&lt;br /&gt;'ShowMessage(I &amp;amp; " were found")&lt;br /&gt;Board.BoardIterator_Destroy(Iterator)&lt;br /&gt;Pcbserver.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5iIoZu6NJ8c/TauI-IWwHrI/AAAAAAAAACM/vUkr11NM7Lk/s1600/Rotate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="249" r6="true" src="http://1.bp.blogspot.com/-5iIoZu6NJ8c/TauI-IWwHrI/AAAAAAAAACM/vUkr11NM7Lk/s320/Rotate.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-6263413408010564857?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6263413408010564857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6263413408010564857'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/moving-designators.html' title='Moving Designators'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-5iIoZu6NJ8c/TauI-IWwHrI/AAAAAAAAACM/vUkr11NM7Lk/s72-c/Rotate.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-107062788127338750</id><published>2011-04-29T17:07:00.001-07:00</published><updated>2011-04-29T17:07:59.386-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PCB File Name'/><category scheme='http://www.blogger.com/atom/ns#' term='Layer'/><category scheme='http://www.blogger.com/atom/ns#' term='String'/><title type='text'>File Name On Visible Layers</title><content type='html'>Create a sting from the PCB file name and place it on the board but leave off the ending (.pcbdoc). It will place a string on any routing and mechanical layer that is currently enabled and is&amp;nbsp;visible.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub AddFileName&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim ASMSting&lt;br /&gt;Dim Layer&lt;br /&gt;Dim TmpString&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;PCBServer.PreProcess&lt;br /&gt;&lt;br /&gt;For Layer = eTopLayer to eMultiLayer&lt;br /&gt;&amp;nbsp; If Board.LayerIsDisplayed(Layer) AND Board.LayerIsUsed(Layer) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp; ASMString = PCBServer.PCBObjectFactory(eTextObject,_&lt;br /&gt;eNoDimension, eCreate_Default)&lt;br /&gt;&amp;nbsp; ASMString.XLocation = Board.XOrigin + MilsToCoord(500) '500 mils from origin in X&lt;br /&gt;&amp;nbsp; ASMString.YLocation = Board.YOrigin - MilsToCoord(500) '-500 mils from origin in Y&lt;br /&gt;&amp;nbsp; TmpString = Board.FileName&lt;br /&gt;&amp;nbsp; 'Get rid of the drive and folder portion of the FileName&lt;br /&gt;&amp;nbsp;&amp;nbsp;While Instr(TmpString, "\") &amp;lt;&amp;gt; 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TmpString = Right(TmpString, Len(TmpString)-Instr(TmpString, "\") ) 'removes the path&lt;br /&gt;&amp;nbsp;&amp;nbsp;Wend&lt;br /&gt;&lt;br /&gt;&amp;nbsp; ASMString.Text = Left(TmpString, Instr(TmpString, ".") - 1 ) 'removes the extension&lt;br /&gt;&amp;nbsp; ASMString.Size = MilsToCoord(100) 'Size of the string is 10&lt;br /&gt;&amp;nbsp; ASMString.Layer = Layer&lt;br /&gt;&lt;br /&gt;&amp;nbsp; Board.AddPCBObject(ASMString) ' Put this string on the Board&lt;br /&gt;&amp;nbsp; Call PCBServer.SendMessageToRobots(ASMString.I_ObjectAddress, c_Broadcast,_&lt;br /&gt;&lt;br /&gt;PCBM_BoardRegisteration, ASMString.I_ObjectAddress)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;End If &lt;br /&gt;&lt;br /&gt;Next&lt;br /&gt;Pcbserver.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-U9Ao3Tc3b54/TatQPiSpFKI/AAAAAAAAACI/0ViLJaHn0Bs/s1600/name.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" r6="true" src="http://2.bp.blogspot.com/-U9Ao3Tc3b54/TatQPiSpFKI/AAAAAAAAACI/0ViLJaHn0Bs/s320/name.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-107062788127338750?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/107062788127338750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/107062788127338750'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/file-name-on-visible-layers.html' title='File Name On Visible Layers'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-U9Ao3Tc3b54/TatQPiSpFKI/AAAAAAAAACI/0ViLJaHn0Bs/s72-c/name.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-4974140397419784270</id><published>2011-04-29T17:07:00.000-07:00</published><updated>2011-04-29T17:07:35.801-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Width'/><category scheme='http://www.blogger.com/atom/ns#' term='Height'/><category scheme='http://www.blogger.com/atom/ns#' term='String'/><title type='text'>Make A String</title><content type='html'>Create a sting of various heights and widths on the PCB.&lt;br /&gt;&lt;br /&gt;Sub StringCreation&lt;br /&gt;&lt;br /&gt;Dim Board&lt;br /&gt;Dim ASMSting&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;&lt;br /&gt;PCBServer.PreProcess&lt;br /&gt;For I = 1 to 10&lt;br /&gt;&amp;nbsp; ' Create a String object&lt;br /&gt;&amp;nbsp; ASMString = PCBServer.PCBObjectFactory(eTextObject, eNoDimension, eCreate_Default)&lt;br /&gt;&amp;nbsp; ASMString.XLocation = Board.XOrigin + I*MilsToCoord(50)&lt;br /&gt;&amp;nbsp; ASMString.YLocation = Board.YOrigin + I*MilsToCoord(100)&lt;br /&gt;&amp;nbsp; ASMString.Layer = eMechanical7&lt;br /&gt;&amp;nbsp; ASMString.Text = "This Is String #" &amp;amp; I &amp;amp; " with a height of " &amp;amp; (10*I) &amp;amp; " a width of " &amp;amp; I &amp;amp; "mils."&lt;br /&gt;&amp;nbsp; ASMString.Width = MilsToCoord(I)&lt;br /&gt;&amp;nbsp; ASMString.Size = MilsToCoord(10 * I)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; Call PCBServer.SendMessageToRobots(ASMString.I_ObjectAddress, c_Broadcast,_&lt;br /&gt;&amp;nbsp; PCBM_BoardRegisteration, ASMString.I_ObjectAddress)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 'Put this string on the Board&lt;br /&gt;&amp;nbsp; Board.AddPCBObject(ASMString)&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;PCBServer.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-u15xBbrO-Fc/Tas8ZtpuCGI/AAAAAAAAACA/dstVFbOLm58/s1600/string.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="189" r6="true" src="http://2.bp.blogspot.com/-u15xBbrO-Fc/Tas8ZtpuCGI/AAAAAAAAACA/dstVFbOLm58/s320/string.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-4974140397419784270?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4974140397419784270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4974140397419784270'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/make-string.html' title='Make A String'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-u15xBbrO-Fc/Tas8ZtpuCGI/AAAAAAAAACA/dstVFbOLm58/s72-c/string.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-162246390868801044</id><published>2011-04-29T14:37:00.000-07:00</published><updated>2011-04-29T14:40:19.891-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Schematic'/><category scheme='http://www.blogger.com/atom/ns#' term='Library'/><category scheme='http://www.blogger.com/atom/ns#' term='Pins'/><title type='text'>Create a Schematic pin in a library part</title><content type='html'>Places a pin in a schematic library part. Open a schematic library (or create a new one.)&amp;nbsp; Run script and in the current part&amp;nbsp;a pin will be placed. &lt;br /&gt;&lt;br /&gt;Sub PlacePin&lt;br /&gt;&lt;br /&gt;Set CurrentLib = SchServer.GetCurrentSchDocument&lt;br /&gt;If CurrentLib is Nothing Then Exit Sub&lt;br /&gt;If CurrentLib.ObjectID &amp;lt;&amp;gt; eSchLib Then Exit Sub&lt;br /&gt;&lt;br /&gt;Set SchComponent = SchServer.SchObjectFactory(eSchComponent, eCreate_Default)&lt;br /&gt;'Set up parameters for the library component.&lt;br /&gt;SchComponent.CurrentPartID = 1&lt;br /&gt;SchComponent.DisplayMode = 0&lt;br /&gt;&lt;br /&gt;'Create pin objects for the new library component.&lt;br /&gt;P1 = SchServer.SchObjectFactory(ePin,eCreate_GlobalCopy)&lt;br /&gt;&lt;br /&gt;If P1 is Nothing Then Exit Sub&lt;br /&gt;'Define the pin parameters.&lt;br /&gt;P1.Location = Point(MilsToCoord(250), MilsToCoord( -250 ))&lt;br /&gt;P1.Orientation = eRotate180&lt;br /&gt;P1.PinLength = MilsToCoord(250)&lt;br /&gt;P1.Designator = "1"&lt;br /&gt;P1.Name = "Pin Name"&lt;br /&gt;P1.Electrical = Etype(4)&amp;nbsp; '4=Passive&lt;br /&gt;P1.OwnerPartId = CurrentLib.CurrentSchComponent.CurrentPartID&lt;br /&gt;P1.OwnerPartDisplayMode = CurrentLib.CurrentSchComponent.DisplayMode&lt;br /&gt;&lt;br /&gt;SchComponent.AddSchObject(P1)&lt;br /&gt;CurrentLib.RegisterSchObjectInContainer(P1)&lt;br /&gt;&lt;br /&gt;'Send a system notification that a new component has been added to the library.&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("SCH:Zoom")&lt;br /&gt;&lt;br /&gt;Call SchServer.RobotManager.SendMessage(nil, c_BroadCast, SCHM_PrimitiveRegistration,_ SCHComponent.I_ObjectAddress)&lt;br /&gt;&lt;br /&gt;Set CurrentLib.CurrentSchComponent = SchComponent&lt;br /&gt;'Refresh library.&lt;br /&gt;CurrentLib.GraphicallyInvalidate&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-F-6ieVH2I80/TbsvgLlVqkI/AAAAAAAAACQ/xrtnvsMzJAY/s1600/schempins.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" j8="true" src="http://3.bp.blogspot.com/-F-6ieVH2I80/TbsvgLlVqkI/AAAAAAAAACQ/xrtnvsMzJAY/s320/schempins.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;============================&lt;br /&gt;FYI - Electrical&amp;nbsp;definitions for the pin type:&lt;br /&gt;0=Input&lt;br /&gt;1=I/O&lt;br /&gt;2=Output&lt;br /&gt;3=Open Collector&lt;br /&gt;4=Passive&lt;br /&gt;5=HiZ&lt;br /&gt;6=Open Emitter&lt;br /&gt;7=Power&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-162246390868801044?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/162246390868801044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/162246390868801044'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/create-schematic-pin-in-library-part.html' title='Create a Schematic pin in a library part'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-F-6ieVH2I80/TbsvgLlVqkI/AAAAAAAAACQ/xrtnvsMzJAY/s72-c/schempins.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-3462796892273337825</id><published>2011-04-27T16:32:00.000-07:00</published><updated>2011-04-29T17:10:04.328-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Schematic'/><category scheme='http://www.blogger.com/atom/ns#' term='SCH'/><title type='text'>Is this a schematic file?</title><content type='html'>Checking if the active file is a schematic document.&lt;br /&gt;&lt;br /&gt;Sub IsthisaSCHFile&lt;br /&gt;&lt;br /&gt;Set CurrentFile = SchServer.GetCurrentSchDocument&lt;br /&gt;If CurrentFile is Nothing Then&lt;br /&gt;&amp;nbsp; ShowMessage ("This is not a SCH file!")&lt;br /&gt;Else&lt;br /&gt;&amp;nbsp; ShowMessage ("This is a SCH file!")&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-3462796892273337825?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/3462796892273337825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/3462796892273337825'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/is-this-schematic-file.html' title='Is this a schematic file?'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-3334246751508407098</id><published>2011-04-19T15:24:00.000-07:00</published><updated>2011-04-19T15:24:32.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pads'/><category scheme='http://www.blogger.com/atom/ns#' term='Counting'/><category scheme='http://www.blogger.com/atom/ns#' term='Iterator'/><title type='text'>Counting Pads</title><content type='html'>Learn to use an Iterator that creates a set of objects that meet a certain criteria. This will count the number of pads on the board.&amp;nbsp; Use the AddFilter's to&amp;nbsp;include only the objects that you&amp;nbsp;need.&lt;br /&gt;&lt;br /&gt;Sub CountPads&lt;br /&gt;Dim Board&lt;br /&gt;Dim Pad&lt;br /&gt;Dim PadNumber&lt;br /&gt;Dim TotalObjects&lt;br /&gt;&lt;br /&gt;Padnumber = 0&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;Iterator = Board.BoardIterator_Create&lt;br /&gt;Iterator.AddFilter_ObjectSet(MkSet(ePadObject))&lt;br /&gt;Iterator.AddFilter_LayerSet(AllLayers)&lt;br /&gt;Iterator.AddFilter_Method(eProcessAll)&lt;br /&gt;&lt;br /&gt;Set Pad = Iterator.FirstPCBObject&lt;br /&gt;&lt;br /&gt;While Not (Pad Is Nothing)&lt;br /&gt;&amp;nbsp; PadNumber = PadNumber + 1&lt;br /&gt;&amp;nbsp; Set Pad = Iterator.NextPCBObject&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;Board.BoardIterator_Destroy(Iterator)&lt;br /&gt;ShowMessage(PadNumber &amp;amp; " Were Found")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Lmw8koJ-AkY/TatMJ37b3XI/AAAAAAAAACE/K86gL17BdVk/s1600/count.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" r6="true" src="http://3.bp.blogspot.com/-Lmw8koJ-AkY/TatMJ37b3XI/AAAAAAAAACE/K86gL17BdVk/s320/count.png" width="320" /&gt;&lt;/a&gt;﻿&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-3334246751508407098?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/3334246751508407098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/3334246751508407098'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/counting-pads.html' title='Counting Pads'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Lmw8koJ-AkY/TatMJ37b3XI/AAAAAAAAACE/K86gL17BdVk/s72-c/count.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-6124983921403411798</id><published>2011-04-17T10:20:00.000-07:00</published><updated>2011-04-29T17:07:20.555-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vias'/><title type='text'>Create a Via</title><content type='html'>Make a few Vias appear on a PCB with the reference being the Board Origin. (FYI learn to decipher TR0138 PCB API Reference.PDF that comes with Altium)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub ViaCreation&lt;br /&gt;Dim Board&lt;br /&gt;Dim Via&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then Exit Sub&lt;br /&gt;PCBServer.PreProcess&lt;br /&gt;For I = 1 to 10&lt;br /&gt;&amp;nbsp; ' Create a Via object&lt;br /&gt;&amp;nbsp; Via = PCBServer.PCBObjectFactory(eViaObject, eNoDimension, eCreate_Default)&lt;br /&gt;&amp;nbsp; Via.X = MilsToCoord (I * 50) + Board.XOrigin&lt;br /&gt;&amp;nbsp; Via.Y = MilsToCoord(I * 50) + Board.YOrigin&lt;br /&gt;&amp;nbsp; Via.Size = MilsToCoord(35)&lt;br /&gt;&amp;nbsp; Via.HoleSize = MilsToCoord(15)&lt;br /&gt;&amp;nbsp; Via.LowLayer = eTopLayer&lt;br /&gt;&amp;nbsp; Via.HighLayer = eBottomLayer&lt;br /&gt;&lt;br /&gt;&amp;nbsp; ' Put this via in the Board object&lt;br /&gt;&amp;nbsp; Board.AddPCBObject(Via)&lt;br /&gt;&amp;nbsp; Call PCBServer.SendMessageToRobots(Board.I_ObjectAddress, c_Broadcast,_&amp;nbsp; PCBM_BoardRegisteration, Via.I_ObjectAddress)&lt;br /&gt;&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;PCBServer.PostProcess&lt;br /&gt;ResetParameters&lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;These just makes the screen do a refresh &lt;br /&gt;Call AddStringParameter("Action", "Redraw")&lt;br /&gt;RunProcess("PCB:Zoom")&lt;br /&gt;&lt;br /&gt;"Undo Stuff"&lt;br /&gt;PreProcess and PostProcess and the Call PCBServer.SendMessageToRobots(Board.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, Via.I_ObjectAddress)&lt;br /&gt;allow the "Undo" to work with what was just placed on the board, otherwise is may not know that they were added.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ptJRN7Mx9Bc/TafNFziNhuI/AAAAAAAAAB8/YtrSBhU6xzE/s1600/Vias.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" r6="true" src="http://2.bp.blogspot.com/-ptJRN7Mx9Bc/TafNFziNhuI/AAAAAAAAAB8/YtrSBhU6xzE/s320/Vias.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-6124983921403411798?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6124983921403411798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6124983921403411798'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/create-via.html' title='Create a Via'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ptJRN7Mx9Bc/TafNFziNhuI/AAAAAAAAAB8/YtrSBhU6xzE/s72-c/Vias.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-6934492404901479074</id><published>2011-04-14T21:21:00.001-07:00</published><updated>2011-04-14T21:50:17.379-07:00</updated><title type='text'>Is this A PCB file?</title><content type='html'>Most of the scripts will be for the PCB editor, so&amp;nbsp;I need to check and make sure when I run a script it's actully being run in a PCB file. Access the PCBServer to get things started.&lt;br /&gt;&lt;br /&gt;Sub IsthisaPCBFile&lt;br /&gt;&lt;br /&gt;Set Board = PCBServer.GetCurrentPCBBoard&lt;br /&gt;If Board is Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage ("This is not a PCB file!")&lt;br /&gt;Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage ("This is a PCB file!")&lt;br /&gt;End I&lt;br /&gt;&lt;br /&gt;End Sub &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;If a pcb file isn't active in Altium then&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-peCYAWRS2I0/TafI45Ho5wI/AAAAAAAAAB4/n0oOJfuQd4s/s1600/Not.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="106" r6="true" src="http://2.bp.blogspot.com/-peCYAWRS2I0/TafI45Ho5wI/AAAAAAAAAB4/n0oOJfuQd4s/s320/Not.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Else if a PCB file is active&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-GIq9QyhALI8/TafI3rJVu5I/AAAAAAAAAB0/iKIqqDGCC70/s1600/Is.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="106" r6="true" src="http://1.bp.blogspot.com/-GIq9QyhALI8/TafI3rJVu5I/AAAAAAAAAB0/iKIqqDGCC70/s320/Is.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-6934492404901479074?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6934492404901479074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/6934492404901479074'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/is-this-pcb-file.html' title='Is this A PCB file?'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-peCYAWRS2I0/TafI45Ho5wI/AAAAAAAAAB4/n0oOJfuQd4s/s72-c/Not.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-32467199.post-4731273751504614571</id><published>2011-04-14T21:15:00.000-07:00</published><updated>2011-04-14T21:15:51.116-07:00</updated><title type='text'>Alitum Designer Script Notes Visual Basic (VB)</title><content type='html'>&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-6O-k5Hl5Hu8/TafERqiW2cI/AAAAAAAAABk/U-IZu4gNuL4/s1600/Hello.png"&gt;&lt;/a&gt;Just some running notes as I learn to write VB scripts for Altium.&lt;br /&gt;Starting with the very basics. &lt;br /&gt;In Altium Designer choose File, New, Script Files, VB Script Unit Paste this: &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Sub ShowMessageBox &lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage ("Hello! It's " &amp;amp; Time ) &lt;/div&gt;&lt;div&gt;End Sub &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Run the Script (DXP, Run Script, Choose ShowMessageBox) and you get &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5595657331647972642" src="http://4.bp.blogspot.com/-IY3KE67a3oU/TafEsjGwBSI/AAAAAAAAABs/c2lYLd77c5E/s400/Hello.png" style="cursor: hand; display: block; height: 125px; margin: 0px auto 10px; text-align: center; width: 376px;" /&gt;&lt;br /&gt;&lt;a href="http://www.tdpcb.com/"&gt;http://www.tdpcb.com/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32467199-4731273751504614571?l=caidiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4731273751504614571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32467199/posts/default/4731273751504614571'/><link rel='alternate' type='text/html' href='http://caidiot.blogspot.com/2011/04/alitum-designer-script-notes-visual.html' title='Alitum Designer Script Notes Visual Basic (VB)'/><author><name>Bill Smock</name><uri>http://www.blogger.com/profile/08337854439163060608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/-H3rDEybvViA/Tgzejh3JAsI/AAAAAAAAADo/dnHUukzxUM8/s220/Face.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-IY3KE67a3oU/TafEsjGwBSI/AAAAAAAAABs/c2lYLd77c5E/s72-c/Hello.png' height='72' width='72'/></entry></feed>
