Quick way to renumber pads, mostly useful in the pcb library editor.
Click on the pad with the first number and then click on the other pads and they will incremently change numbers.
Sub RenumberPads
Dim Board
Dim Rpad
Dim PadNumber
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
Pcbserver.PreProcess
Set PadObject = Board.GetObjectAtCursor(MkSet(ePadObject),_
AllLayers,"Select Pad To Start With")
PadNumber = PadObject.Name + 1
While Board.ChooseLocation(x,y, "Click Next Pad To Renumber") = True
Set Rpad = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_
ePadObject),AllLayers,eEditAction_Change)
If Not(Rpad is Nothing) Then
Call PCBServer.SendMessageToRobots(Rpad.I_ObjectAddress,_
c_Broadcast, PCBM_BeginModify, c_NoEventData)
Rpad.Name = PadNumber
Call PCBServer.SendMessageToRobots(Rpad.I_ObjectAddress,_
c_Broadcast, PCBM_EndModify , c_NoEventData)
End If
PadNumber = PadNumber + 1
Wend
Pcbserver.PostProcess
ResetParameters
Call AddStringParameter("Action", "Redraw")
RunProcess("PCB:Zoom")
End Sub
www.tdpcb.com
Altium Designer Script Information in VB for PCB Layout and Schematic Capture by Bill Smock from Tru Designs, San Diego, CA.
Showing posts with label Pads. Show all posts
Showing posts with label Pads. Show all posts
Friday, June 17, 2011
Friday, June 03, 2011
Clone a net from one object to another
I can see this one as being a little dangerous, it's meant to show how to click an object with a net and then any pad, via, or track that you click (that already has a net assigned) will then be changed to the first net that was choosen.
Sub CloneNet
Dim Board
Dim NetObject
Dim Borg
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
NetObject = Board.GetObjectAtCursor(MkSet(ePadObject,eTrackObject,eViaObject)_
,AllLayers,"Select Net to Clone")
Call PCBServer.PreProcess
While Board.ChooseLocation(x,y, "Click Item To Change") = True
Set Borg = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_
ePadObject,eTrackObject,eViaObject),AllLayers,eEditAction_Change)
If Not(Borg is Nothing) Then
Call PCBServer.SendMessageToRobots(Borg.I_ObjectAddress,_
c_Broadcast, PCBM_BeginModify, c_NoEventData)
Borg.Net = NetObject.Net
Call PCBServer.SendMessageToRobots(Borg.I_ObjectAddress,_
c_Broadcast, PCBM_EndModify , c_NoEventData)
End If
Wend
Call PCBServer.PostProcess
ResetParameters
Call AddStringParameter("Action", "Redraw")
RunProcess("PCB:Zoom")
End Sub
www.tdpcb.com
Sub CloneNet
Dim Board
Dim NetObject
Dim Borg
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
NetObject = Board.GetObjectAtCursor(MkSet(ePadObject,eTrackObject,eViaObject)_
,AllLayers,"Select Net to Clone")
Call PCBServer.PreProcess
While Board.ChooseLocation(x,y, "Click Item To Change") = True
Set Borg = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_
ePadObject,eTrackObject,eViaObject),AllLayers,eEditAction_Change)
If Not(Borg is Nothing) Then
Call PCBServer.SendMessageToRobots(Borg.I_ObjectAddress,_
c_Broadcast, PCBM_BeginModify, c_NoEventData)
Borg.Net = NetObject.Net
Call PCBServer.SendMessageToRobots(Borg.I_ObjectAddress,_
c_Broadcast, PCBM_EndModify , c_NoEventData)
End If
Wend
Call PCBServer.PostProcess
ResetParameters
Call AddStringParameter("Action", "Redraw")
RunProcess("PCB:Zoom")
End Sub
www.tdpcb.com
Friday, May 20, 2011
Place a track and via with the choosen pad net assigned to them.
Select a pad with a net and a stinger (a track and a via) will be placed with the pads net.
Sub TagPadWithNet
Dim Board
Dim Track
Dim Via
Dim NetObject
Dim PadX
Dim PadY
Dim PadNet
Dim ViasSize
Dim ViaHole
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
NetObject = Board.GetObjectAtCursor(MkSet(ePadObject),AllLayers,"Select Net")
PadX = CoordToMils(NetObject.X)
PadY = CoordToMils(NetObject.Y)
PadNet = NetObject.Net.Name
X1 = PadX
X2 = PadX - CoordToMils(NetObject.TopXSize) - 10
Y1 = PadY
Y2 = PadY
Layer = NetObject.Layer
Width = 10
Call PCBServer.PreProcess
'Add the Track
Track = PCBServer.PCBObjectFactory(eTrackObject, eNoDimension, eCreate_Default)
Track.X1 = MilsToCoord(X1)
Track.X2 = MilsToCoord(X2)
Track.Y1 = MilsToCoord(Y1)
Track.Y2 = MilsToCoord(Y2)
Track.Layer = Layer
Track.Net = NetObject.Net
Track.Width = MilsToCoord(Width)
Board.AddPCBObject(Track)
Call PCBServer.SendMessageToRobots(Board.I_ObjectAddress,_
c_Broadcast, PCBM_BoardRegisteration, Track.I_ObjectAddress)
'Add the via
ViaSize = 26
ViaHole = 12
Via = PCBServer.PCBObjectFactory(eViaObject, eNoDimension, eCreate_Default)
Via.X = MilsToCoord(X2)
Via.Y = MilsToCoord(Y2)
Via.Size = MilsToCoord(ViaSize)
Via.HoleSize = MilsToCoord(ViaHole)
Via.LowLayer = eTopLayer
Via.HighLayer = eBottomLayer
Via.Net = NetObject.Net
Board.AddPCBObject(Via)
Call PCBServer.SendMessageToRobots(Board.I_ObjectAddress,_
c_Broadcast, PCBM_BoardRegisteration, Via.I_ObjectAddress)
Call PCBServer.PostProcess
ResetParameters
Call AddStringParameter("Action", "Redraw")
RunProcess("PCB:Zoom")
End Sub
www.tdpcb.com
Sub TagPadWithNet
Dim Board
Dim Track
Dim Via
Dim NetObject
Dim PadX
Dim PadY
Dim PadNet
Dim ViasSize
Dim ViaHole
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
NetObject = Board.GetObjectAtCursor(MkSet(ePadObject),AllLayers,"Select Net")
PadX = CoordToMils(NetObject.X)
PadY = CoordToMils(NetObject.Y)
PadNet = NetObject.Net.Name
X1 = PadX
X2 = PadX - CoordToMils(NetObject.TopXSize) - 10
Y1 = PadY
Y2 = PadY
Layer = NetObject.Layer
Width = 10
Call PCBServer.PreProcess
'Add the Track
Track = PCBServer.PCBObjectFactory(eTrackObject, eNoDimension, eCreate_Default)
Track.X1 = MilsToCoord(X1)
Track.X2 = MilsToCoord(X2)
Track.Y1 = MilsToCoord(Y1)
Track.Y2 = MilsToCoord(Y2)
Track.Layer = Layer
Track.Net = NetObject.Net
Track.Width = MilsToCoord(Width)
Board.AddPCBObject(Track)
Call PCBServer.SendMessageToRobots(Board.I_ObjectAddress,_
c_Broadcast, PCBM_BoardRegisteration, Track.I_ObjectAddress)
'Add the via
ViaSize = 26
ViaHole = 12
Via = PCBServer.PCBObjectFactory(eViaObject, eNoDimension, eCreate_Default)
Via.X = MilsToCoord(X2)
Via.Y = MilsToCoord(Y2)
Via.Size = MilsToCoord(ViaSize)
Via.HoleSize = MilsToCoord(ViaHole)
Via.LowLayer = eTopLayer
Via.HighLayer = eBottomLayer
Via.Net = NetObject.Net
Board.AddPCBObject(Via)
Call PCBServer.SendMessageToRobots(Board.I_ObjectAddress,_
c_Broadcast, PCBM_BoardRegisteration, Via.I_ObjectAddress)
Call PCBServer.PostProcess
ResetParameters
Call AddStringParameter("Action", "Redraw")
RunProcess("PCB:Zoom")
End Sub
www.tdpcb.com
Wednesday, May 18, 2011
Identify a pads net.
Simple way to get a pads net.
Sub GetPadNet
Dim Board
Dim NetObject
Dim tmpString
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
NetObject = Board.GetObjectAtCursor(MkSet(ePadObject),AllLayers,"Select Net")
tmpString = NetObject.Net.Name
ShowMessage (tmpString)
End Sub
www.tdpcb.com
Sub GetPadNet
Dim Board
Dim NetObject
Dim tmpString
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
NetObject = Board.GetObjectAtCursor(MkSet(ePadObject),AllLayers,"Select Net")
tmpString = NetObject.Net.Name
ShowMessage (tmpString)
End Sub
www.tdpcb.com
Friday, May 13, 2011
Get pads that make up a component using a group iterator.
Select a PCB component with the GetObject and then using a Group Iterator list all pads and the location of the pads that make up the choosen component.
Sub GetCompPads
Dim Board
Dim Comp
Dim CompGroup
Dim CompPads
Dim x,y
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
While Board.ChooseLocation(x,y, "Choose Pad") = True
Set Comp = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_
eComponentObject),AllLayers,eEditAction_Focus)
If Not(Comp is Nothing) Then
Set CompGroup = Comp.GroupIterator_Create
CompGroup.AddFilter_ObjectSet(MkSet(EpadObject))
Set CompPad = CompGroup.FirstPCBObject
While Not(CompPad is Nothing )
ShowMessage("Pad=" & CompPad.Name & " X=" & CoordToMils(CompPad.X)_
& " Y=" & CoordToMils(CompPad.Y))
Set CompPad = CompGroup.NextPCBObject
Wend
End If
Wend
End Sub
www.tdpcb.com
Sub GetCompPads
Dim Board
Dim Comp
Dim CompGroup
Dim CompPads
Dim x,y
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
While Board.ChooseLocation(x,y, "Choose Pad") = True
Set Comp = Board.GetObjectAtXYAskUserIfAmbiguous(x,y,MkSet(_
eComponentObject),AllLayers,eEditAction_Focus)
If Not(Comp is Nothing) Then
Set CompGroup = Comp.GroupIterator_Create
CompGroup.AddFilter_ObjectSet(MkSet(EpadObject))
Set CompPad = CompGroup.FirstPCBObject
While Not(CompPad is Nothing )
ShowMessage("Pad=" & CompPad.Name & " X=" & CoordToMils(CompPad.X)_
& " Y=" & CoordToMils(CompPad.Y))
Set CompPad = CompGroup.NextPCBObject
Wend
End If
Wend
End Sub
www.tdpcb.com
Tuesday, April 19, 2011
Counting Pads
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. Use the AddFilter's to include only the objects that you need.
Sub CountPads
Dim Board
Dim Pad
Dim PadNumber
Dim TotalObjects
Padnumber = 0
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
Iterator = Board.BoardIterator_Create
Iterator.AddFilter_ObjectSet(MkSet(ePadObject))
Iterator.AddFilter_LayerSet(AllLayers)
Iterator.AddFilter_Method(eProcessAll)
Set Pad = Iterator.FirstPCBObject
While Not (Pad Is Nothing)
PadNumber = PadNumber + 1
Set Pad = Iterator.NextPCBObject
Wend
Board.BoardIterator_Destroy(Iterator)
ShowMessage(PadNumber & " Were Found")
End Sub
http://www.tdpcb.com/
Sub CountPads
Dim Board
Dim Pad
Dim PadNumber
Dim TotalObjects
Padnumber = 0
Set Board = PCBServer.GetCurrentPCBBoard
If Board is Nothing Then Exit Sub
Iterator = Board.BoardIterator_Create
Iterator.AddFilter_ObjectSet(MkSet(ePadObject))
Iterator.AddFilter_LayerSet(AllLayers)
Iterator.AddFilter_Method(eProcessAll)
Set Pad = Iterator.FirstPCBObject
While Not (Pad Is Nothing)
PadNumber = PadNumber + 1
Set Pad = Iterator.NextPCBObject
Wend
Board.BoardIterator_Destroy(Iterator)
ShowMessage(PadNumber & " Were Found")
End Sub
http://www.tdpcb.com/
Subscribe to:
Posts (Atom)