Používám nějaký roky na prohlížení vygenerovaných gerber dat z návrhového sytému PCB prohlížeč ZofzPCB: FREE 3D Gerber Viewer. Je to perfektní nástroj na optickou kontrolu a vizualizaci PCB ještě před samotnou výrobou. Mnohokrát mě zachránil od drobných estetických vad, třeba na potisku, které jsem v projektu návrhového systému neviděl. Návrhová pravidla již v gerber prohlížeči nekontroluji, neboť v samotném návrhovém systému jsou dost pokročilá.
Pro usnadnění práce s programem, hlavně opakované otevírání gerber dat jsem napsal skript v AutoHotkey. Program totiž nemá žádné klávesové zkratky na práci se soubory. Ve skriptu je uživatelsky definovaná cesta k gerber (CAM) souborům a další předvolby včetně barevného schématu aby se program nemusel již po každé instalaci znovu nastavovat. Stačí pouze kliknout na skript, který sám spustí prohlížeč, otevře přes klikací menu gerber (CAM) soubory a zobrazí ve 3D samotný plošný spoj. Potom po stisku klávesy Esc prohlížeč zavře. Jednoduché jako při kliknutí na asociovaný soubor obrázku.
ZofzPCB_AutoLoad
/** ; **************************************************************************** ; * @file ZofzPCB_AutoLoad.ahk ; * @author René Široký ; * @company WIDE SERVIS ; * @version V1.0.0 ; * @date 16.08.2018 ; * @compiler Auto Hot Key ; * @brief Script for automatic load of CAM files, custom color settings ; * and configuration for 3D Gerber Viewer ZofzPCB ; * ; **************************************************************************** ; */ ;-------------- FUNCTIONS ----------------------------------------------------- /*****************************************************************************/ /** * @brief set default color * @param None * @retval None */ SetDefaultColor() { RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, g_ColorPresetName, Net Color Haven RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, g_ColorPresetNum, 0 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, VolumeOpacity, 188 } ;-------------- DIRECTIVES ---------------------------------------------------- #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. #NoTrayIcon ; Disable tray icon ; #Warn ; Enable warnings to assist with detecting common errors. ;-------------- MAIN SCRIPT ENTRY --------------------------------------------- SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. ;============================================================================== ;** USER DEFINE - Uživatelské nastavení skriptu ; > Cesta k datovým CAM souborům < UserDataCAMFolder = P:\PCB_designs\_GERBER-PRODUCTION ; > Název uživatelského barevného schématu, při nepoužití řádek zakomentovat < UserColorPresetName = wiser-green ;============================================================================== ;** rename CAM file extension GM1 to GML FileMove, %UserDataCAMFolder%\*.GM1, %UserDataCAMFolder%\*.GML ;** get the program directory path RegRead, AppProgramFilesDir, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion, ProgramFilesDir (x86) if (!AppProgramFilesDir) { RegRead, AppProgramFilesDir, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion, ProgramFilesDir } ;** check if the program is installed ZofzPCB_InstallFolder = \ZofzPCB\ZofzPCB\ ZofzPCB_EXEFile = Gerber3D.exe FileGetAttrib, fileEXEAtt, %AppProgramFilesDir%%ZofzPCB_InstallFolder%%ZofzPCB_EXEFile% if (!fileEXEAtt) { MsgBox, 16, Error, ZofzPCB is not installed. return } ;** store mouse cursor position MouseGetPos, MousePosX, MousePosY ;** if exist variable "UserColorPresetName" (I want to use my color settings) if UserColorPresetName { RegRead, AppDataDir, HKEY_CURRENT_USER\Volatile Environment, APPDATA FileGetAttrib, fileColorAtt, %AppDataDir%\ZofzPCB\%UserColorPresetName%.color ;** check if exist user color file if (fileColorAtt) { ;** if exist, settings user color and board opacity RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, g_ColorPresetName, %UserColorPresetName% RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, g_ColorPresetNum, 0xFFFFFFFF RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, VolumeOpacity, 0xFF } else { ;** if not exist user color file RegRead, ColorPresetNum, HKEY_CURRENT_USER\Software\ZofzPCB\Gerber3D, g_ColorPresetNum ;** if setting not exist user color file if (ColorPresetNum == 0xFFFFFFFF) { ;** settings default color and board opacity SetDefaultColor() } } } else { ;** if not exist variable "UserColorPresetName" (I dont want to use my color settings) RegRead, ColorPresetNum, HKEY_CURRENT_USER\Software\ZofzPCB\Gerber3D, g_ColorPresetNum ;** if setting user color file if (ColorPresetNum == 0xFFFFFFFF) { ;** settings default color and board opacity SetDefaultColor() } } ;** settings working data folder RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, g_CurentCAMFolder, %UserDataCAMFolder% RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, g_CurentProjFolder, %UserDataCAMFolder% RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, g_ScrShotFolder, %UserDataCAMFolder% ;** disable demo RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, g_DemoLevel, 3 ;** disable hollow RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, g_EnableHollow, 0 ;** disable automatic upgrade check RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, LastVersionInfoDay, 0 ;** settings gerber file parameters RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefGrbIncremental, 0 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefGrbOmitTrailingZeros, 0 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefGrbMilimeters, 1 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefGrbLen1, 4 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefGrbLen2, 4 ;** settings drill file parameters RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefNCDGuess, 0 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefNCDIncremental, 0 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefNCDOmitTrailingZeros, 0 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefNCDUnits, 1 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefNCDlen1, 4 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_DefNCDlen2, 4 RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, lg_ipcAutooffset, 1 ;** settings window position (to fix the button coordinates) RegWrite, REG_BINARY, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, CAMFilesAutoDlgPos, 0000000000000000 RegWrite, REG_BINARY, HKEY_CURRENT_USER, Software\ZofzPCB\Gerber3D, CAMFilesSimpDlgPos, 0000000000000000 ;** run programm Run %AppProgramFilesDir%%ZofzPCB_InstallFolder%%ZofzPCB_EXEFile% ;** wait for activate window WinWait, ZofzPCB ;** settings maximize window WinMaximize ;** open CAM files via menu.... Send {Click, 30, 35} Send {Click, 60, 60} Send {Click, 60, 80} Send {Click, 670, 500} Send {Click, 335, 620} while WinExist() ;** loop running the program { if GetKeyState("Esc") ;** when ESC is pressed, end the program { ;** settings maximize window (if it was not) WinMaximize ;** press Alt + F4 Send !{F4} ;** calculates the position of the YES button in the confirmation window WinGetPos,,,, Height Height -= 265 ;** click the YES button Send {Click, 460, %Height%} ;** wait at least 300ms to close the window Sleep, 300 } if GetKeyState("XButton1") ;** when Mouse Button is pressed, press HOME keyboard { ;** press HOME Send {Home} } } ;** restore mouse cursor position MouseMove, %MousePosX%, %MousePosY% return