97 lines
2.9 KiB
PHP
97 lines
2.9 KiB
PHP
<?php
|
|
|
|
// pad
|
|
// ================================================================================================
|
|
function padGetStyle($pcb, $pad)
|
|
{
|
|
for ($i=0; $i < sizeof($pcb->PAD_STYLE); $i++)
|
|
{
|
|
$style = $pcb->PAD_STYLE[$i];
|
|
if (
|
|
($style['shape'] == $pad['shape'])
|
|
and ($style['width'] == $pad['width'])
|
|
and ($style['height'] == $pad['height'])
|
|
and ($style['hole_dia'] == $pad['hole_dia'])
|
|
and ($style['flags'] == $pad['flags'])
|
|
)
|
|
return $style['name'];
|
|
}
|
|
|
|
return false;
|
|
}
|
|
function padAddStyle($pcb, $pad)
|
|
{
|
|
$st = padGetStyle($pcb, $pad);
|
|
if ($st)
|
|
return false;
|
|
|
|
$i = sizeof($pcb->PAD_STYLE);
|
|
$pcb->PAD_STYLE[$i]['shape'] = $pad['shape'];
|
|
$pcb->PAD_STYLE[$i]['width'] = $pad['width'];
|
|
$pcb->PAD_STYLE[$i]['height'] = $pad['height'];
|
|
$pcb->PAD_STYLE[$i]['hole_dia'] = $pad['hole_dia'];
|
|
$pcb->PAD_STYLE[$i]['flags'] = $pad['flags'];
|
|
$pcb->PAD_STYLE[$i]['name'] = "pad".$i;
|
|
|
|
return $pcb->PAD_STYLE[$i]['name'];
|
|
}
|
|
|
|
echo"<br>";
|
|
echo"generate pad styles...<br>";
|
|
for($i=0; $i<=$pcb->HDR['comp_count_real']['v']; $i++)
|
|
{
|
|
$C = $pcb->COMP[$i];
|
|
|
|
for ($j=1; $j<=$C['pads_count']['v']; $j++)
|
|
{
|
|
$pad['shape'] = $C['pad'.$j.'_shape']['v'];
|
|
$pad['width'] = $C['pad'.$j.'_width']['v'];
|
|
$pad['height'] = $C['pad'.$j.'_height']['v'];
|
|
$pad['hole_dia'] = $C['pad'.$j.'_hole_dia']['v'];
|
|
$pad['flags'] = $C['pad'.$j.'_flags']['v'];
|
|
|
|
if ($pad_style = padAddStyle($pcb, $pad))
|
|
{
|
|
echo"comp [$i], pad [$j], added new pad {";
|
|
echo"shape=".$pad['shape']."";
|
|
echo", hole_dia=".$pad['hole_dia']."";
|
|
echo", size=".$pad['width']."x".$pad['height']."";
|
|
echo", flags=".$pad['flags']."";
|
|
echo"}, style=[$pad_style]<br>";
|
|
}
|
|
|
|
$pcb->COMP[$i]['pad'.$j.'_style']['v'] = padGetStyle($pcb, $pad);
|
|
}
|
|
}
|
|
echo"save pad styles: ".sizeof($pcb->PAD_STYLE)."<br>";
|
|
$pcad_lib = "";
|
|
for ($i=0; $i<sizeof($pcb->PAD_STYLE); $i++)
|
|
{
|
|
$pcad_lib .= " (padStyleDef \"".$pcb->PAD_STYLE[$i]['name']."\"\r\n";
|
|
$pcad_lib .= " (holeDiam ".$pcb->PAD_STYLE[$i]['hole_dia'].")\r\n";
|
|
$pcad_lib .= " (StartRange 1)\r\n";
|
|
$pcad_lib .= " (EndRange 2)\r\n";
|
|
|
|
$s1 = "Ellipse"; if ($pcb->PAD_STYLE[$i]['shape'] == 2) $s1 = "Rect";
|
|
$w1 = $pcb->PAD_STYLE[$i]['width'];
|
|
$h1 = $pcb->PAD_STYLE[$i]['height'];
|
|
|
|
$w2 = $w1;
|
|
$h2 = $w1;
|
|
$s2 = $s1;
|
|
if (!$pcb->PAD_STYLE[$i]['hole_dia'])
|
|
{
|
|
$w2 = "0";
|
|
$h2 = "0";
|
|
$s2 = "NoConnect";
|
|
}
|
|
$pcad_lib .= " (padShape (layerNumRef 1) (padShapeType $s1) (shapeWidth $w1) (shapeHeight $h1) )\r\n";
|
|
$pcad_lib .= " (padShape (layerNumRef 2) (padShapeType $s2) (shapeWidth $w2) (shapeHeight $h2) )\r\n";
|
|
$pcad_lib .= " (padShape (layerType Signal) (padShapeType $s2) (shapeWidth $w2) (shapeHeight $h2) )\r\n";
|
|
$pcad_lib .= " (padShape (layerType Plane) (padShapeType NoConnect) (shapeWidth 0) (shapeHeight 0) )\r\n";
|
|
$pcad_lib .= " (padShape (layerType NonSignal) (padShapeType NoConnect) (shapeWidth 0) (shapeHeight 0) )\r\n";
|
|
$pcad_lib .= " )\r\n";
|
|
|
|
}
|
|
file_put_contents($out_file, $pcad_lib, FILE_APPEND | LOCK_EX);
|