diff --git a/README.md b/README.md index 900b345..f830573 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ go run main.go gerber.go [options] [optional_board_outline - `--wall-height`: Wall height mm (default: 2.0mm). - `--wall-thickness`: Wall thickness in mm (default: 1mm). - `--keep-png`: Save the intermediate PNG image used for mesh generation (useful for debugging). +- `-server`: Start the web interface server. +- `-port`: Port to run the server on (default: 8080). ### Example @@ -33,6 +35,16 @@ go run main.go gerber.go -height=0.16 -keep-png my_board_paste_top.gbr my_board_ This will generate `my_board_paste_top.stl` in the same directory. +### Web Interface + +To start the web interface: + +```bash +go run main.go gerber.go -server +``` + +Then open `http://localhost:8080` in your browser. You can upload files and configure settings via the UI. + ## 3D Printing Recommendations For optimal results with small SMD packages (like TSSOP, 0402, etc.), use the following 3D print settings: diff --git a/bin/pcb-to-stencil b/bin/pcb-to-stencil index c8e4d16..f184884 100755 Binary files a/bin/pcb-to-stencil and b/bin/pcb-to-stencil differ diff --git a/bin/pcb-to-stencil.exe b/bin/pcb-to-stencil.exe index 7009f55..d0d3ec8 100755 Binary files a/bin/pcb-to-stencil.exe and b/bin/pcb-to-stencil.exe differ diff --git a/paste.gbr b/paste.gbr deleted file mode 100644 index 55d0a54..0000000 --- a/paste.gbr +++ /dev/null @@ -1,728 +0,0 @@ -%TF.GenerationSoftware,Altium Limited,Altium Designer,25.8.1 (18)*% -G04 Layer_Color=8421504* -%FSLAX45Y45*% -%MOMM*% -%TF.SameCoordinates,86462A3C-2A55-4F76-B35D-D1350583A7ED*% -%TF.FilePolarity,Positive*% -%TF.FileFunction,Paste,Top*% -%TF.Part,Single*% -G01* -G75* -%TA.AperFunction,SMDPad,CuDef*% -G04:AMPARAMS|DCode=10|XSize=1.65543mm|YSize=0.38077mm|CornerRadius=0.19038mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=0.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|* -%AMROUNDEDRECTD10* -21,1,1.65543,0.00000,0,0,0.0* -21,1,1.27467,0.38077,0,0,0.0* -1,1,0.38077,0.63733,0.00000* -1,1,0.38077,-0.63733,0.00000* -1,1,0.38077,-0.63733,0.00000* -1,1,0.38077,0.63733,0.00000* -% -%ADD10ROUNDEDRECTD10*% -%ADD11R,1.65543X0.38077*% -%ADD12R,0.91213X0.85872*% -%ADD13R,0.95814X0.91213*% -%ADD14R,0.91213X0.95814*% -%ADD15R,0.90000X1.50000*% -G04:AMPARAMS|DCode=16|XSize=1.45mm|YSize=0.3mm|CornerRadius=0.0495mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=180.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|* -%AMROUNDEDRECTD16* -21,1,1.45000,0.20100,0,0,180.0* -21,1,1.35100,0.30000,0,0,180.0* -1,1,0.09900,-0.67550,0.10050* -1,1,0.09900,0.67550,0.10050* -1,1,0.09900,0.67550,-0.10050* -1,1,0.09900,-0.67550,-0.10050* -% -%ADD16ROUNDEDRECTD16*% -%ADD17R,0.85872X0.91213*% -%ADD18R,1.50000X0.90000*% -%TA.AperFunction,BGAPad,CuDef*% -%ADD19R,0.90000X0.90000*% -%TA.AperFunction,SMDPad,CuDef*% -G04:AMPARAMS|DCode=20|XSize=0.4mm|YSize=1.2mm|CornerRadius=0.05mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=270.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|* -%AMROUNDEDRECTD20* -21,1,0.40000,1.10000,0,0,270.0* -21,1,0.30000,1.20000,0,0,270.0* -1,1,0.10000,-0.55000,-0.15000* -1,1,0.10000,-0.55000,0.15000* -1,1,0.10000,0.55000,0.15000* -1,1,0.10000,0.55000,-0.15000* -% -%ADD20ROUNDEDRECTD20*% -%ADD21R,0.24247X0.83971*% -%ADD22R,1.00000X1.40000*% -%ADD23R,0.30000X1.15000*% -G04:AMPARAMS|DCode=25|XSize=1.35712mm|YSize=0.57213mm|CornerRadius=0.28606mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=0.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|* -%AMROUNDEDRECTD25* -21,1,1.35712,0.00000,0,0,0.0* -21,1,0.78499,0.57213,0,0,0.0* -1,1,0.57213,0.39250,0.00000* -1,1,0.57213,-0.39250,0.00000* -1,1,0.57213,-0.39250,0.00000* -1,1,0.57213,0.39250,0.00000* -% -%ADD25ROUNDEDRECTD25*% -G04:AMPARAMS|DCode=26|XSize=0.24247mm|YSize=0.83971mm|CornerRadius=0.12124mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=270.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|* -%AMROUNDEDRECTD26* -21,1,0.24247,0.59723,0,0,270.0* -21,1,0.00000,0.83971,0,0,270.0* -1,1,0.24247,-0.29862,0.00000* -1,1,0.24247,-0.29862,0.00000* -1,1,0.24247,0.29862,0.00000* -1,1,0.24247,0.29862,0.00000* -% -%ADD26ROUNDEDRECTD26*% -%ADD27R,1.35712X0.57213*% -G04:AMPARAMS|DCode=28|XSize=1.65543mm|YSize=0.38077mm|CornerRadius=0.19038mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=270.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|* -%AMROUNDEDRECTD28* -21,1,1.65543,0.00000,0,0,270.0* -21,1,1.27467,0.38077,0,0,270.0* -1,1,0.38077,0.00000,-0.63733* -1,1,0.38077,0.00000,0.63733* -1,1,0.38077,0.00000,0.63733* -1,1,0.38077,0.00000,-0.63733* -% -%ADD28ROUNDEDRECTD28*% -%TA.AperFunction,ConnectorPad*% -%ADD29R,1.15000X0.30000*% -%ADD30R,1.15000X0.60000*% -%TA.AperFunction,SMDPad,CuDef*% -G04:AMPARAMS|DCode=32|XSize=0.83971mm|YSize=0.24247mm|CornerRadius=0.12124mm|HoleSize=0mm|Usage=FLASHONLY|Rotation=270.000|XOffset=0mm|YOffset=0mm|HoleType=Round|Shape=RoundedRectangle|* -%AMROUNDEDRECTD32* -21,1,0.83971,0.00000,0,0,270.0* -21,1,0.59723,0.24247,0,0,270.0* -1,1,0.24247,0.00000,-0.29862* -1,1,0.24247,0.00000,0.29862* -1,1,0.24247,0.00000,0.29862* -1,1,0.24247,0.00000,-0.29862* -% -%ADD32ROUNDEDRECTD32*% -%ADD33R,1.20000X2.20000*% -%ADD34R,0.80000X1.45000*% -%ADD35R,0.70000X0.60000*% -%ADD36R,3.50000X2.20000*% -%ADD38R,0.60000X1.15000*% -%ADD39R,0.38077X1.65543*% -%TA.AperFunction,NonConductor*% -%ADD113R,1.29652X1.29652*% -%TA.AperFunction,SMDPad,CuDef*% -%ADD114R,0.30000X0.60000*% -%ADD115R,0.60000X0.30000*% -D10* -X4613238Y11757080D02* -D03* -Y11692080D02* -D03* -Y11627080D02* -D03* -Y11562080D02* -D03* -Y11497080D02* -D03* -Y11432080D02* -D03* -Y11367080D02* -D03* -X4048162D02* -D03* -Y11432080D02* -D03* -Y11497080D02* -D03* -Y11562080D02* -D03* -Y11627080D02* -D03* -Y11692080D02* -D03* -D11* -Y11757080D02* -D03* -D12* -X698500Y10376972D02* -D03* -X2733040Y10095032D02* -D03* -X2471420D02* -D03* -X3459480Y9282633D02* -D03* -X4097020D02* -D03* -X4732020Y9280093D02* -D03* -X2733040Y10250373D02* -D03* -X2471420D02* -D03* -X988060Y12787429D02* -D03* -X769620D02* -D03* -X698500Y10532313D02* -D03* -X8137083Y10095433D02* -D03* -Y9940092D02* -D03* -X7719060Y10442387D02* -D03* -Y10287046D02* -D03* -X7183120Y14052351D02* -D03* -X5981700D02* -D03* -X4780280D02* -D03* -X3583940D02* -D03* -X7332980Y9048552D02* -D03* -X988060Y12942770D02* -D03* -X3583940Y14207693D02* -D03* -X7183120D02* -D03* -X7332980Y9203893D02* -D03* -X4780280Y14207693D02* -D03* -X5981700D02* -D03* -X769620Y12942770D02* -D03* -X3459480Y9127292D02* -D03* -X4097020D02* -D03* -X4732020Y9124752D02* -D03* -D13* -X3582980Y9852660D02* -D03* -X4626920Y11968480D02* -D03* -X4481520D02* -D03* -X3605220Y12349480D02* -D03* -X5756600Y8923020D02* -D03* -X7875580Y8851900D02* -D03* -X7730180D02* -D03* -X6668460Y9403080D02* -D03* -X3750620Y12349480D02* -D03* -X3437580Y9852660D02* -D03* -X5902000Y8923020D02* -D03* -X6813860Y9403080D02* -D03* -D14* -X259080Y10524797D02* -D03* -X485140Y10527340D02* -D03* -X911860Y10524800D02* -D03* -X6192520Y12836200D02* -D03* -X6977380Y12554260D02* -D03* -X7122160Y9198920D02* -D03* -X6913880Y9198919D02* -D03* -X6700520Y9201460D02* -D03* -X6977380Y12408860D02* -D03* -X7495540D02* -D03* -X7239000D02* -D03* -X5989320Y13605820D02* -D03* -X5783580D02* -D03* -X6192520Y12690800D02* -D03* -X7386320Y10273340D02* -D03* -X5577840Y13605820D02* -D03* -X5534660Y12121841D02* -D03* -X6913880Y9053520D02* -D03* -X7122160Y9053520D02* -D03* -X6700520Y9056060D02* -D03* -X911860Y10379400D02* -D03* -X485140Y10381940D02* -D03* -X259080Y10379403D02* -D03* -X5534660Y12267239D02* -D03* -X7239000Y12554260D02* -D03* -X7495540D02* -D03* -X7386320Y10127940D02* -D03* -X5989320Y13460422D02* -D03* -X5783580D02* -D03* -X5577840D02* -D03* -D15* -X256403Y10838200D02* -D03* -X383403D02* -D03* -X510403D02* -D03* -X637403D02* -D03* -X764403D02* -D03* -X891403D02* -D03* -X1018403D02* -D03* -X1145403D02* -D03* -X1272403D02* -D03* -X1399403D02* -D03* -X1526403D02* -D03* -X1653403D02* -D03* -X1780403D02* -D03* -X1653403Y12588199D02* -D03* -X1526403D02* -D03* -X1399403D02* -D03* -X1272403D02* -D03* -X1145403D02* -D03* -X1018403D02* -D03* -X891403D02* -D03* -X764403D02* -D03* -X510403D02* -D03* -X383403D02* -D03* -X256403D02* -D03* -X637403D02* -D03* -X1780403D02* -D03* -X129403Y10838200D02* -D03* -Y12588199D02* -D03* -D16* -X3910040Y9850120D02* -D03* -Y9750120D02* -D03* -Y9800123D02* -D03* -X4350040Y9850120D02* -D03* -X3910040Y9900122D02* -D03* -Y9950120D02* -D03* -X4350040D02* -D03* -Y9900122D02* -D03* -Y9800123D02* -D03* -Y9750120D02* -D03* -D17* -X7735768Y11348720D02* -D03* -X1479352Y13406120D02* -D03* -X7727752Y9291320D02* -D03* -X7730289Y9509760D02* -D03* -X7885631D02* -D03* -X7883093Y9291320D02* -D03* -X7885633Y9723120D02* -D03* -X7883093Y9070340D02* -D03* -X7336993Y9385300D02* -D03* -X7181652D02* -D03* -X7580427Y11348720D02* -D03* -X7730292Y9723120D02* -D03* -X7727752Y9070340D02* -D03* -X1934007Y9403639D02* -D03* -X1505148D02* -D03* -X1634693Y13406120D02* -D03* -X2089348Y9403639D02* -D03* -X1349807D02* -D03* -D18* -X1905401Y11014700D02* -D03* -Y11141700D02* -D03* -Y11268700D02* -D03* -Y11395700D02* -D03* -Y11522700D02* -D03* -Y11649700D02* -D03* -Y11776700D02* -D03* -Y11903700D02* -D03* -Y12030700D02* -D03* -Y12157700D02* -D03* -Y12284700D02* -D03* -Y12411700D02* -D03* -D19* -X761401Y11423198D02* -D03* -X901400D02* -D03* -X761401Y11703202D02* -D03* -Y11563198D02* -D03* -X901400Y11703202D02* -D03* -Y11563198D02* -D03* -X1041400D02* -D03* -Y11423198D02* -D03* -Y11703202D02* -D03* -D20* -X5432542Y9563039D02* -D03* -Y9498040D02* -D03* -X3287278Y11894881D02* -D03* -X2717282Y12024878D02* -D03* -Y12284878D02* -D03* -X3287278Y11764879D02* -D03* -X2717282Y11894881D02* -D03* -Y12154880D02* -D03* -X3287278Y12349881D02* -D03* -X5432542Y9173042D02* -D03* -X2717282Y12219879D02* -D03* -Y12089882D02* -D03* -Y11959880D02* -D03* -Y11829882D02* -D03* -X3287278Y12219879D02* -D03* -Y12154880D02* -D03* -Y12089882D02* -D03* -Y12024878D02* -D03* -Y11959880D02* -D03* -Y11829882D02* -D03* -X2717282Y12349881D02* -D03* -X3287278Y12284878D02* -D03* -X2717282Y11764879D02* -D03* -X6002538Y9628043D02* -D03* -Y9563039D02* -D03* -Y9498040D02* -D03* -X5432542Y9628043D02* -D03* -Y9433042D02* -D03* -Y9368038D02* -D03* -Y9303040D02* -D03* -Y9238041D02* -D03* -X6002538Y9433042D02* -D03* -Y9368038D02* -D03* -Y9303040D02* -D03* -Y9238041D02* -D03* -Y9173042D02* -D03* -D21* -X7250100Y9952772D02* -D03* -D22* -X1166896Y10365740D02* -D03* -X1866900D02* -D03* -Y13055600D02* -D03* -X2164598Y11013440D02* -D03* -X2864602D02* -D03* -X1166896Y13055600D02* -D03* -D23* -X1621917Y8965763D02* -D03* -X1721917D02* -D03* -X1671919D02* -D03* -X1771919D02* -D03* -X1871919D02* -D03* -X1821917D02* -D03* -X1571920D02* -D03* -X1521917D02* -D03* -D25* -X7881620Y10005060D02* -D03* -X8163560Y10347960D02* -D03* -X7973446Y10252959D02* -D03* -X7691506Y9910059D02* -D03* -X912935Y13582401D02* -D03* -X722825Y13487399D02* -D03* -D26* -X7341652Y9711223D02* -D03* -X6958548D02* -D03* -Y9761220D02* -D03* -X7341652Y9811222D02* -D03* -Y9761220D02* -D03* -X6958548Y9861220D02* -D03* -Y9811222D02* -D03* -X7341652Y9661220D02* -D03* -Y9861220D02* -D03* -X6958548Y9661220D02* -D03* -D27* -X7973446Y10442961D02* -D03* -X7691506Y10100061D02* -D03* -X912935Y13392400D02* -D03* -D28* -X5859201Y12513981D02* -D03* -X5794202D02* -D03* -X5664200D02* -D03* -X5469199Y13079059D02* -D03* -X5534198Y12513981D02* -D03* -X5729199D02* -D03* -X5599201D02* -D03* -X5469199D02* -D03* -X5534198Y13079059D02* -D03* -X5599201D02* -D03* -X5664200D02* -D03* -X5729199D02* -D03* -X5794202D02* -D03* -D29* -X8374781Y9529679D02* -D03* -Y9579681D02* -D03* -Y9429679D02* -D03* -Y9479681D02* -D03* -Y9329679D02* -D03* -Y9379682D02* -D03* -Y9629678D02* -D03* -Y9679681D02* -D03* -D30* -Y9744680D02* -D03* -Y9264680D02* -D03* -Y9184681D02* -D03* -Y9824679D02* -D03* -D32* -X7100098Y9569668D02* -D03* -X7150100Y9952772D02* -D03* -Y9569668D02* -D03* -X7200097Y9952772D02* -D03* -X7100098D02* -D03* -X7050100D02* -D03* -X7200097Y9569668D02* -D03* -X7250100D02* -D03* -X7050100D02* -D03* -D33* -X6780400Y12905620D02* -D03* -X7010400D02* -D03* -X7240400D02* -D03* -D34* -X2489200Y12895499D02* -D03* -X2743200Y13520502D02* -D03* -X2489200D02* -D03* -X2743200Y12895499D02* -D03* -D35* -X7579360Y11119358D02* -D03* -Y11024362D02* -D03* -D36* -X7010400Y13525620D02* -D03* -D38* -X2016917Y8965763D02* -D03* -X1376919D02* -D03* -X1456919D02* -D03* -X1936918D02* -D03* -D39* -X5859201Y13079059D02* -D03* -D113* -X7150100Y9761220D02* -D03* -D114* -X1619402Y9208059D02* -D03* -X1773479D02* -D03* -X1843481D02* -D03* -X1549400D02* -D03* -D115* -X8181340Y9578900D02* -D03* -Y9430462D02* -D03* -X8110220Y8978341D02* -D03* -Y8908339D02* -D03* -X8181340Y9360460D02* -D03* -Y9648902D02* -D03* -%TF.MD5,8ce37c590d9a8131b045448d67d8b995*% -M02* diff --git a/paste.stl b/paste.stl deleted file mode 100644 index e36e9cf..0000000 Binary files a/paste.stl and /dev/null differ diff --git a/profile.gbr b/profile.gbr deleted file mode 100644 index 903f761..0000000 --- a/profile.gbr +++ /dev/null @@ -1,35 +0,0 @@ -%TF.GenerationSoftware,Altium Limited,Altium Designer,25.8.1 (18)*% -G04 Layer_Color=0* -%FSLAX45Y45*% -%MOMM*% -%TF.SameCoordinates,86462A3C-2A55-4F76-B35D-D1350583A7ED*% -%TF.FilePolarity,Positive*% -%TF.FileFunction,Profile,NP*% -%TF.Part,Single*% -G01* -G75* -%TA.AperFunction,Profile*% -%ADD116C,0.02540*% -D116* -X25400Y8483600D02* -G03* -X152400Y8356600I127000J0D01* -G01* -X8864600D01* -D02* -G03* -X8991600Y8483600I0J127000D01* -G01* -Y14859000D01* -D02* -G03* -X8864600Y14986000I-127000J0D01* -G01* -X152400D01* -D02* -G03* -X25400Y14859000I0J-127000D01* -G01* -Y8483600D01* -%TF.MD5,059b59ffb9f66ccce6837941a6fe851c*% -M02*