87 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| // via
 | |
| // ================================================================================================
 | |
| function viaGetStyle($pcb, $via)
 | |
| {
 | |
| 	for ($i=0; $i < sizeof($pcb->VIA_STYLE); $i++)
 | |
| 	{
 | |
| 		$style = $pcb->VIA_STYLE[$i];
 | |
| 		if ( ($style['shape'] == $via['shape']) and ($style['dia'] == $via['dia']) )
 | |
| 			return $style['name'];
 | |
| 	}
 | |
| 
 | |
| 	return false;
 | |
| }
 | |
| function viaAddStyle($pcb, $via)
 | |
| {
 | |
| 	for ($i=0; $i < sizeof($pcb->VIA_STYLE); $i++)
 | |
| 	{
 | |
| 		$style = $pcb->VIA_STYLE[$i];
 | |
| 		if ( ($style['shape'] == $via['shape']) and ($style['dia'] == $via['dia']) )
 | |
| 			return false;
 | |
| 	}
 | |
| 
 | |
| 	$pcb->VIA_STYLE[$i]['shape'] = $via['shape'];
 | |
| 	$pcb->VIA_STYLE[$i]['dia'] = $via['dia'];
 | |
| 	$pcb->VIA_STYLE[$i]['name'] = "via".$i;
 | |
| 
 | |
| 	return $pcb->VIA_STYLE[$i]['name'];
 | |
| }
 | |
| 
 | |
| echo"generate via styles...<br>";
 | |
| for($i=0; $i<=$pcb->HDR['net_points_count']['v']; $i++)
 | |
| {
 | |
| 	$flags = hex($pcb->NETPOI[$i]['flags']['v']);
 | |
| 	$flags_hdr = substr($flags, 1, 1);
 | |
| 
 | |
| 	if ( ($flags_hdr == "6") or ($flags_hdr == "7") ) {} else continue;
 | |
| 
 | |
| 	$via['shape'] = $pcb->NETPOI[$i]['size']['v'];
 | |
| 	$via['dia'] = $via['shape'] / 2;
 | |
| 
 | |
| 	if ($via_style = viaAddStyle($pcb, $via))
 | |
| 	{
 | |
| 		echo"net point [$i], added new via {shape=".$via['shape'].", dia=".$via['dia']."}, style=[$via_style]<br>";
 | |
| 	}
 | |
| 
 | |
| 	$pcb->NETPOI[$i]['style']['v'] = viaGetStyle($pcb, $via);
 | |
| }
 | |
| echo"save via styles: ".sizeof($pcb->VIA_STYLE)."<br>";
 | |
| 	$pcad_lib =  "  (viaStyleDef \"(Default)\"\r\n";
 | |
| 	$pcad_lib .= "    (holeDiam 18)\r\n";
 | |
| 	$pcad_lib .= "    (StartRange 1)\r\n";
 | |
| 	$pcad_lib .= "    (EndRange 2)\r\n";
 | |
| 	$s = "Ellipse";
 | |
| 	$w = "40";
 | |
| 	$h = "40";
 | |
| 	$pcad_lib .= "    (viaShape (layerNumRef 1) (viaShapeType $s) (shapeWidth $w) (shapeHeight $h) )\r\n";
 | |
| 	$pcad_lib .= "    (viaShape (layerNumRef 2) (viaShapeType $s) (shapeWidth $w) (shapeHeight $h) )\r\n";
 | |
| 	$pcad_lib .= "    (viaShape (layerType Signal) (viaShapeType $s) (shapeWidth $w) (shapeHeight $h) )\r\n";
 | |
| 	$pcad_lib .= "    (viaShape (layerType Plane) (viaShapeType NoConnect) (shapeWidth 0) (shapeHeight 0) )\r\n";
 | |
| 	$pcad_lib .= "    (viaShape (layerType NonSignal) (viaShapeType NoConnect) (shapeWidth 0) (shapeHeight 0) )\r\n";
 | |
| 	$pcad_lib .= "  )\r\n";
 | |
| file_put_contents($out_file, $pcad_lib, FILE_APPEND | LOCK_EX);
 | |
| 
 | |
| $pcad_lib =  "";
 | |
| for ($i=0; $i<sizeof($pcb->VIA_STYLE); $i++)
 | |
| {
 | |
| 	$pcad_lib .= "  (viaStyleDef \"".$pcb->VIA_STYLE[$i]['name']."\"\r\n";
 | |
| 	$pcad_lib .= "    (holeDiam ".$pcb->VIA_STYLE[$i]['dia'].")\r\n";
 | |
| 	$pcad_lib .= "    (StartRange 1)\r\n";
 | |
| 	$pcad_lib .= "    (EndRange 2)\r\n";
 | |
| 
 | |
| 	$s = "Ellipse";
 | |
| 	$w = $pcb->VIA_STYLE[$i]['shape'];
 | |
| 	$h = $pcb->VIA_STYLE[$i]['shape'];
 | |
| 
 | |
| 	$pcad_lib .= "    (viaShape (layerNumRef 1) (viaShapeType $s) (shapeWidth $w) (shapeHeight $h) )\r\n";
 | |
| 	$pcad_lib .= "    (viaShape (layerNumRef 2) (viaShapeType $s) (shapeWidth $w) (shapeHeight $h) )\r\n";
 | |
| 	$pcad_lib .= "    (viaShape (layerType Signal) (viaShapeType $s) (shapeWidth $w) (shapeHeight $h) )\r\n";
 | |
| 	$pcad_lib .= "    (viaShape (layerType Plane) (viaShapeType NoConnect) (shapeWidth 0) (shapeHeight 0) )\r\n";
 | |
| 	$pcad_lib .= "    (viaShape (layerType NonSignal) (viaShapeType NoConnect) (shapeWidth 0) (shapeHeight 0) )\r\n";
 | |
| 	$pcad_lib .= "  )\r\n";
 | |
| 
 | |
| }
 | |
| file_put_contents($out_file, $pcad_lib, FILE_APPEND | LOCK_EX);
 |