correct and add pin element export
This commit is contained in:
parent
fd7c8ae5b5
commit
1c6ffafc48
136
cvlp_lib.js
136
cvlp_lib.js
|
@ -197,8 +197,12 @@ function json2svg(json) {
|
|||
arc.setAttribute('cy',element.y)
|
||||
arc.setAttribute('r',element.radius)
|
||||
} else {
|
||||
var x1 = element.x+element.radius*Math.cos(((-1*element.start)%360)/360.0*Math.PI*2)
|
||||
var y1 = element.y-element.radius*Math.sin(((-1*element.start)%360)/360.0*Math.PI*2)
|
||||
var x2 = element.x+element.radius*Math.cos(((-1*(element.start+element.angle))%360)/360.0*Math.PI*2)
|
||||
var y2 = element.y-element.radius*Math.sin(((-1*(element.start+element.angle))%360)/360.0*Math.PI*2)
|
||||
arc = document.createElementNS(svgNS,'path')
|
||||
arc.setAttribute('d',"M "+(element.x+element.radius*Math.cos(((-1*element.start)%360)/360.0*Math.PI*2))+" "+(element.y-element.radius*Math.sin(((-1*element.start)%360)/360.0*Math.PI*2))+" A "+element.radius+" "+element.radius+" 0 "+((element.angle)%360>180 ? "1" : "0")+" 1 "+(element.x+element.radius*Math.cos(((-1*(element.start+element.angle))%360)/360.0*Math.PI*2))+" "+(element.y-element.radius*Math.sin(((-1*(element.start+element.angle))%360)/360.0*Math.PI*2))+" ")
|
||||
arc.setAttribute('d','M '+x1+' '+y1+' A '+element.radius+' '+element.radius+' 0 '+((element.angle)%360>180 ? '1' : '0')+' 1 '+x2+' '+y2+' ')
|
||||
}
|
||||
arc.style.setProperty('stroke-width',element.thickness)
|
||||
if (element.round) {
|
||||
|
@ -268,19 +272,11 @@ function json2svg(json) {
|
|||
copper.setAttribute('ry',0)
|
||||
}
|
||||
layers['copper'].appendChild(copper)
|
||||
var drill = document.createElementNS(svgNS,'rect')
|
||||
var drill = document.createElementNS(svgNS,'circle')
|
||||
drill.style.setProperty('stroke-width',0)
|
||||
drill.setAttribute('x',element.x-element.drill/2)
|
||||
drill.setAttribute('y',element.y-element.drill/2)
|
||||
drill.setAttribute('height',element.drill)
|
||||
drill.setAttribute('width',element.drill)
|
||||
if (element.round) {
|
||||
drill.setAttribute('rx',element.drill/2)
|
||||
drill.setAttribute('ry',element.drill/2)
|
||||
} else {
|
||||
drill.setAttribute('rx',0)
|
||||
drill.setAttribute('ry',0)
|
||||
}
|
||||
drill.setAttribute('cx',element.x)
|
||||
drill.setAttribute('cy',element.y)
|
||||
drill.setAttribute('r',element.drill/2)
|
||||
layers['drill'].appendChild(drill)
|
||||
var clearance = document.createElementNS(svgNS,'rect')
|
||||
clearance.style.setProperty('stroke-width',0)
|
||||
|
@ -303,8 +299,8 @@ function json2svg(json) {
|
|||
soldermask.setAttribute('height',element.soldermask)
|
||||
soldermask.setAttribute('width',element.soldermask)
|
||||
if (element.round) {
|
||||
soldermask.setAttribute('rx',element.soldermask/2)
|
||||
soldermask.setAttribute('ry',element.soldermask/2)
|
||||
soldermask.setAttribute('rx',element.thickness/2+element.soldermask)
|
||||
soldermask.setAttribute('ry',element.thickness/2+element.soldermask)
|
||||
} else {
|
||||
soldermask.setAttribute('rx',0)
|
||||
soldermask.setAttribute('ry',0)
|
||||
|
@ -312,7 +308,7 @@ function json2svg(json) {
|
|||
layers['soldermask'].appendChild(soldermask)
|
||||
break
|
||||
default:
|
||||
console.log("unknown element type: "+element.type)
|
||||
console.log('unknown element type: '+element.type)
|
||||
}
|
||||
}
|
||||
return svg
|
||||
|
@ -360,14 +356,14 @@ function json2pcb(json) {
|
|||
pcb += '"]\n'
|
||||
break
|
||||
case 'pin':
|
||||
pcb += 'Pin['+element.x+''+json.unit+' '+element.y+''+json.unit+' '+element.thickness+''+json.unit+' '+element.clearance*2+''+json.unit+' '+element.soldermask+''+json.unit+' '+element.drill+''+json.unit+' "" "'+element.number+'" "'
|
||||
pcb += 'Pin['+element.x+''+json.unit+' '+element.y+''+json.unit+' '+element.thickness+''+json.unit+' '+element.clearance*2+''+json.unit+' '+Math.max(thickness+element.soldermask,0)+''+json.unit+' '+element.drill+''+json.unit+' "" "'+element.number+'" "'
|
||||
if (!element.round) {
|
||||
pcb += 'square'
|
||||
}
|
||||
pcb += '"]\n'
|
||||
break
|
||||
default:
|
||||
console.log("unknown element type: "+element.type)
|
||||
console.log('unknown element type: '+element.type)
|
||||
}
|
||||
}
|
||||
pcb += ')\n'
|
||||
|
@ -423,11 +419,11 @@ function json2kicad(json) {
|
|||
kicad += ' (drill '+convert_unit(element.drill,json.unit,'mm')
|
||||
kicad += ' (layers F.Cu F.Paste F.Mask)'
|
||||
kicad += ' (clearance '+convert_unit(element.clearance,json.unit,'mm')+')'
|
||||
kicad += ' (solder_mask_margin '+convert_unit((element.thickness/2*-1+element.soldermask),json.unit,'mm')+')'
|
||||
kicad += ' (solder_mask_margin '+convert_unit(element.soldermask,json.unit,'mm')+')'
|
||||
kicad += ')\n'
|
||||
break
|
||||
default:
|
||||
console.log("unknown element type: "+element.type)
|
||||
console.log('unknown element type: '+element.type)
|
||||
}
|
||||
}
|
||||
kicad += ')\n'
|
||||
|
@ -447,6 +443,7 @@ function json2eagle(json) {
|
|||
var layers = xml.createElement('layers')
|
||||
drawing.appendChild(layers)
|
||||
layers_desc = [ { number: 1, name: 'Top', color: 4, fill: 1, visible: 'yes', active: 'yes'},
|
||||
{ number: 17, name: 'Pads', color: 2, fill: 1, visible: 'yes', active: 'yes'},
|
||||
{ number: 21, name: 'tPLace', color: 7, fill: 1, visible: 'yes', active: 'yes'},
|
||||
{ number: 29, name: 'tStop', color: 7, fill: 3, visible: 'no', active: 'yes'},
|
||||
{ number: 39, name: 'tKeepout', color: 4, fill: 11, visible: 'no', active: 'yes'},
|
||||
|
@ -484,20 +481,24 @@ function json2eagle(json) {
|
|||
var element = json.elements[element_i]
|
||||
switch (element.type) {
|
||||
case 'line':
|
||||
var wire = xml.createElement('wire')
|
||||
wire.setAttribute('x1',convert_unit(element.x1,json.unit,'mm'))
|
||||
wire.setAttribute('y1',convert_unit(-1*element.y1,json.unit,'mm'))
|
||||
wire.setAttribute('x2',convert_unit(element.x2,json.unit,'mm'))
|
||||
wire.setAttribute('y2',convert_unit(-1*element.y2,json.unit,'mm'))
|
||||
wire.setAttribute('width',convert_unit(element.thickness,json.unit,'mm'))
|
||||
wire.setAttribute('layer','21')
|
||||
// note: only arc wires support flat caps
|
||||
if (element.round) {
|
||||
wire.setAttribute('cap','round')
|
||||
} else {
|
||||
wire.setAttribute('cap','flat')
|
||||
var line = xml.createElement('wire')
|
||||
line.setAttribute('x1',convert_unit(element.x1,json.unit,'mm'))
|
||||
line.setAttribute('y1',convert_unit(-1*element.y1,json.unit,'mm'))
|
||||
line.setAttribute('x2',convert_unit(element.x2,json.unit,'mm'))
|
||||
line.setAttribute('y2',convert_unit(-1*element.y2,json.unit,'mm'))
|
||||
line.setAttribute('width',convert_unit(element.thickness,json.unit,'mm'))
|
||||
line.setAttribute('layer','21')
|
||||
packag.appendChild(line)
|
||||
} else { // note: in eagle only arcs support flat caps. use rectangles for wires
|
||||
var line = xml.createElement('rectangle')
|
||||
line.setAttribute('x1',convert_unit(element.x1-element.thickness/2,json.unit,'mm'))
|
||||
line.setAttribute('y1',convert_unit(-1*(element.y1-element.thickness/2),json.unit,'mm'))
|
||||
line.setAttribute('x2',convert_unit(element.x2+element.thickness/2,json.unit,'mm'))
|
||||
line.setAttribute('y2',convert_unit(-1*(element.y2+element.thickness/2),json.unit,'mm'))
|
||||
line.setAttribute('layer','21')
|
||||
packag.appendChild(line)
|
||||
}
|
||||
packag.appendChild(wire)
|
||||
break
|
||||
case 'arc':
|
||||
var wire = xml.createElement('wire')
|
||||
|
@ -508,7 +509,6 @@ function json2eagle(json) {
|
|||
wire.setAttribute('curve',-1*element.angle)
|
||||
wire.setAttribute('width',convert_unit(element.thickness,json.unit,'mm'))
|
||||
wire.setAttribute('layer','21')
|
||||
// note: only arc wires support flat caps
|
||||
if (element.round) {
|
||||
wire.setAttribute('cap','round')
|
||||
} else {
|
||||
|
@ -517,19 +517,19 @@ function json2eagle(json) {
|
|||
packag.appendChild(wire)
|
||||
break
|
||||
case 'pad':
|
||||
var smd = xml.createElement('smd')
|
||||
smd.setAttribute('name',element.number)
|
||||
smd.setAttribute('x',convert_unit(element.x,json.unit,'mm'))
|
||||
smd.setAttribute('y',convert_unit(-1*element.y,json.unit,'mm'))
|
||||
smd.setAttribute('dx',convert_unit(element.width,json.unit,'mm'))
|
||||
smd.setAttribute('dy',convert_unit(element.height,json.unit,'mm'))
|
||||
smd.setAttribute('layer','1')
|
||||
var pad = xml.createElement('smd')
|
||||
pad.setAttribute('name',element.number)
|
||||
pad.setAttribute('x',convert_unit(element.x,json.unit,'mm'))
|
||||
pad.setAttribute('y',convert_unit(-1*element.y,json.unit,'mm'))
|
||||
pad.setAttribute('dx',convert_unit(element.width,json.unit,'mm'))
|
||||
pad.setAttribute('dy',convert_unit(element.height,json.unit,'mm'))
|
||||
pad.setAttribute('layer','1')
|
||||
if (element.round) {
|
||||
smd.setAttribute('roundness',100)
|
||||
pad.setAttribute('roundness',100)
|
||||
} else {
|
||||
smd.setAttribute('roundness',0)
|
||||
pad.setAttribute('roundness',0)
|
||||
}
|
||||
packag.appendChild(smd)
|
||||
packag.appendChild(pad)
|
||||
if (element.round) {
|
||||
var x1, y1, x2, y2, thickness
|
||||
if (element.width>element.height) {
|
||||
|
@ -562,7 +562,6 @@ function json2eagle(json) {
|
|||
soldermask.setAttribute('layer','29')
|
||||
packag.appendChild(soldermask)
|
||||
} else {
|
||||
var x1, y1, x2, y2
|
||||
var clearance = xml.createElement('rectangle')
|
||||
clearance.setAttribute('x1',convert_unit(element.x-element.width/2-element.clearance,json.unit,'mm'))
|
||||
clearance.setAttribute('y1',convert_unit(-1*(element.y-element.height/2-element.clearance),json.unit,'mm'))
|
||||
|
@ -576,11 +575,56 @@ function json2eagle(json) {
|
|||
soldermask.setAttribute('y2',convert_unit(-1*(element.y+element.height/2+element.soldermask),json.unit,'mm'))
|
||||
soldermask.setAttribute('layer','29')
|
||||
}
|
||||
break
|
||||
break
|
||||
case 'pin':
|
||||
var pin = xml.createElement('pad')
|
||||
pin.setAttribute('name',element.number)
|
||||
pin.setAttribute('x',convert_unit(element.x,json.unit,'mm'))
|
||||
pin.setAttribute('y',convert_unit(-1*element.y,json.unit,'mm'))
|
||||
pin.setAttribute('drill',convert_unit(element.drill,json.unit,'mm'))
|
||||
pin.setAttribute('diameter',convert_unit(element.thickness,json.unit,'mm'))
|
||||
pin.setAttribute('layer','17')
|
||||
if (element.round) {
|
||||
pin.setAttribute('shape','round')
|
||||
} else {
|
||||
pin.setAttribute('shape','square')
|
||||
}
|
||||
packag.appendChild(pin)
|
||||
if (element.round) {
|
||||
var clearance = xml.createElement('wire')
|
||||
clearance.setAttribute('x1',convert_unit(x,json.unit,'mm'))
|
||||
clearance.setAttribute('y2',convert_unit(-1*y,json.unit,'mm'))
|
||||
clearance.setAttribute('x2',convert_unit(x,json.unit,'mm'))
|
||||
clearance.setAttribute('y2',convert_unit(-1*y,json.unit,'mm'))
|
||||
clearance.setAttribute('width',convert_unit(Math.max(element.thickness+element.clearance*2,0),json.unit,'mm'))
|
||||
clearance.setAttribute('layer','39')
|
||||
packag.appendChild(clearance)
|
||||
var soldermask = xml.createElement('wire')
|
||||
soldermask.setAttribute('x1',convert_unit(x,json.unit,'mm'))
|
||||
soldermask.setAttribute('y1',convert_unit(-1*y,json.unit,'mm'))
|
||||
soldermask.setAttribute('x2',convert_unit(x,json.unit,'mm'))
|
||||
soldermask.setAttribute('y2',convert_unit(-1*y,json.unit,'mm'))
|
||||
soldermask.setAttribute('width',convert_unit(Math.max(element.thickness+element.soldermask*2,0),json.unit,'mm'))
|
||||
soldermask.setAttribute('layer','29')
|
||||
packag.appendChild(soldermask)
|
||||
} else {
|
||||
var clearance = xml.createElement('rectangle')
|
||||
clearance.setAttribute('x1',convert_unit(element.x-element.thickness/2-element.clearance,json.unit,'mm'))
|
||||
clearance.setAttribute('y1',convert_unit(-1*(element.y-element.thickness/2-element.clearance),json.unit,'mm'))
|
||||
clearance.setAttribute('x2',convert_unit(element.x+element.thickness/2+element.clearance,json.unit,'mm'))
|
||||
clearance.setAttribute('y2',convert_unit(-1*(element.y+element.thickness/2+element.clearance),json.unit,'mm'))
|
||||
clearance.setAttribute('layer','39')
|
||||
var soldermask = xml.createElement('rectangle')
|
||||
soldermask.setAttribute('x1',convert_unit(element.x-element.thickness/2-element.soldermask,json.unit,'mm'))
|
||||
soldermask.setAttribute('y1',convert_unit(-1*(element.y-element.thickness/2-element.soldermask),json.unit,'mm'))
|
||||
soldermask.setAttribute('x2',convert_unit(element.x+element.thickness/2+element.soldermask,json.unit,'mm'))
|
||||
soldermask.setAttribute('y2',convert_unit(-1*(element.y+element.thickness/2+element.soldermask),json.unit,'mm'))
|
||||
soldermask.setAttribute('layer','29')
|
||||
}
|
||||
break
|
||||
break
|
||||
default:
|
||||
console.log("unknown element type: "+element.type)
|
||||
console.log('unknown element type: '+element.type)
|
||||
}
|
||||
}
|
||||
return xml
|
||||
|
|
Loading…
Reference in New Issue