在smt编程取坐标时,总是常常会碰到没有坐标文件或没有gerber,想到的方法是pcb图像取坐标,扫描仪,一些那些要么功能限制,要么需注册交费等等图像取坐标软件,今天用autocad打开一个新产品的零件位置图,用鼠标指着一个位号地方,autocad软件左下角就会这个位置的坐标x,y,如果能把这个坐标输出,不就可以实际我们所需的坐标资料,花了一天时间,终于研究能达到所需效果,有需用朋友可以试试
用用,
方法下列步骤:
1:打开你需导坐标的零件位置图*.dwg格式或*.dxf格式,将你的pcb零件位置图左下角移到坐标(0,0)位置
2:打开autocad菜单-工具-宏-vba编辑(戓直接ALT+F11)
3: 双击ThisDrawing 把下列程序代码复制粘贴进去,
Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant)
Dim arr, brr() As Variant
Dim ReturnPoint As Variant
Dim i, j, k, n As Integer
Dim Fname, Fname1, R As String
x = 0: y = 0: i = 1
Fname1 = InputBox("请输入文件名。")
Fname1 = "c:\" & Fname1 & ".txt"
Do While Fname <> "end"
Fname = InputBox("请输入位号")
If Fname = "" Then Fname = "No" & i
R = InputBox("请输入角度")
If R = "" Then R = 0
ReturnPoint = ThisDrawing.Utility.GetPoint
Open Fname1 For Output As #1
Print #1, Fname, Round(ReturnPoint(0) * 25.4, 3), Round(ReturnPoint(1) * 25.4, 3), R
Close #1
Open Fname1 For Input As #1
arr = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbNewLine)
For j = 0 To UBound(arr)
If Len(arr(j)) > 1 Then '有效数据的行
n = n + 1
ReDim Preserve brr(1 To n)
brr(n) = arr(j)
End If
Next
Close #1
i = i + 1
Loop
Open Fname1 For Output As #1
Print #1, "No", "X", "Y", "R"
For k = 1 To UBound(brr)
Print #1, brr(k)
Next
Close #1
End Sub
然后双击你的pcb零件位置图某点,出来窗口,文件名,位号,角度,然后单击鼠标找下个点...再单击鼠标下个点.......。如果不想输直接确定或回车
输出的坐标文件*.txt 在你的电脑c:\路径下,位号会是默认no*递增,角度 0
找完点在不想找的时候,在输位号窗口,输入"end",将退出程序
最后再在你的电脑c:\路径下,找找,看看成功与否