概要
windows11に、sketchup6を入れてみた。
rubyで、3Dを書く。
ICチップのワイヤーボンディング、見つけたので、やってみた。
写真
サンプルコード
def make_sip_model
require "sketchup.rb"
model = Sketchup.active_model
inss = [];
dels = []
model.active_entities.each do |e|
next if not e.is_a? Sketchup::ComponentInstance
next if not e.definition.name == "desc"
inss << e.name
inss << e.transformation
dels << e
end
if ((not dels.empty?) || model.definitions["desc"])
print "replacing existing data (removing now, and will replace later)..\n"
model.active_entities.erase_entities(dels) if (not dels.empty?)
model.definitions.purge_unused
end
layer = model.layers["00 desc"]
if (not layer)
layer = model.layers.add("00 desc")
rc = layer.visible = true
end
gpdb0 = model.entities.add_group
gpdb0.name = "desc"
gpdb0.layer = "00 desc"
subst = gpdb0.entities.add_group
subst.name = "subst and mold"
subst.layer = model.layers[0]
layer = model.layers["60 subst (wireframe)"]
if (not layer)
layer = model.layers.add("60 subst (wireframe)")
rc = layer.visible = true
end
layer = model.layers["61 subst (surface)"]
if (not layer)
layer = model.layers.add("61 subst (surface)")
rc = layer.visible = false
end
material = model.materials["solidedge"]
if (not material)
material = model.materials.add("solidedge")
material.alpha = 1.0
material.color = 0x000000
end
material = model.materials["subst"]
if (not material)
material = model.materials.add("subst")
material.alpha = 0.4
material.color = 0x3f3f3f
end
outhorwk = subst.entities.add_group
outhorwk.name = "outhorwk"
outhorwk.layer = model.layers[0]
add_line_to_chain(outhorwk, [-2500.0.inch,-2500.0.inch,0.0.inch], [2500.0.inch,-2500.0.inch,0.0.inch], "60 subst (wireframe)")
add_line_to_chain(outhorwk, [2500.0.inch,-2500.0.inch,0.0.inch], [2500.0.inch,2500.0.inch,0.0.inch], "60 subst (wireframe)")
add_line_to_chain(outhorwk, [2500.0.inch,2500.0.inch,0.0.inch], [-2500.0.inch,2500.0.inch,0.0.inch], "60 subst (wireframe)")
add_line_to_chain(outhorwk, [-2500.0.inch,2500.0.inch,0.0.inch], [-2500.0.inch,-2500.0.inch,0.0.inch], "60 subst (wireframe)")
edges = close_chain(outhorwk, "60 subst (wireframe)")
face = outhorwk.entities.add_face(edges)
set_lay_and_mat(outhorwk, "60 subst (wireframe)", "61 subst (surface)", "solidedge","subst")
outhorwk.explode
face = pull_ceiling(subst, face, 240.0.inch, ["60 subst (wireframe)","60 subst (wireframe)"],["61 subst (surface)","61 subst (surface)"],["solidedge","solidedge"],["subst","subst"])
layer = model.layers["10 pkg mold (wireframe)"]
if (not layer)
layer = model.layers.add("10 pkg mold (wireframe)")
rc = layer.visible = false
end
layer = model.layers["11 pkg mold (surface)"]
if (not layer)
layer = model.layers.add("11 pkg mold (surface)")
rc = layer.visible = false
end
material = model.materials["mold"]
if (not material)
material = model.materials.add("mold")
material.alpha = 0.4
material.color = 0x404040
end
face = pull_ceiling(subst, face, 560.0.inch, ["10 pkg mold (wireframe)","10 pkg mold (wireframe)"],["11 pkg mold (surface)","11 pkg mold (surface)"],["mold","mold"],["mold","mold"])
diele = gpdb0.entities.add_group
diele.name = "dielectric layers"
diele.layer = model.layers[0]
layer = model.layers["50 dielectric layer 1-2"]
if (not layer)
layer = model.layers.add("50 dielectric layer 1-2")
rc = layer.visible = false
end
material = model.materials["diele"]
if (not material)
material = model.materials.add("diele")
material.alpha = 0.4
material.color = 0x104060
end
tmp = diele.entities.add_group
tmp.name = "tmp"
tmp.layer = model.layers[0]
outhorwk = tmp.entities.add_group
outhorwk.name = "outhorwk"
outhorwk.layer = model.layers[0]
add_line_to_chain(outhorwk, [-2500.0.inch,-2500.0.inch,20.0.inch],[2500.0.inch,-2500.0.inch,20.0.inch],"50 dielectric layer 1-2")
add_line_to_chain(outhorwk, [2500.0.inch,-2500.0.inch,20.0.inch],[2500.0.inch,2500.0.inch,20.0.inch],"50 dielectric layer 1-2")
add_line_to_chain(outhorwk, [2500.0.inch,2500.0.inch,20.0.inch],[-2500.0.inch,2500.0.inch,20.0.inch],"50 dielectric layer 1-2")
add_line_to_chain(outhorwk, [-2500.0.inch,2500.0.inch,20.0.inch],[-2500.0.inch,-2500.0.inch,20.0.inch],"50 dielectric layer 1-2")
edges = close_chain(outhorwk, "50 dielectric layer 1-2")
face = outhorwk.entities.add_face(edges)
set_lay_and_mat(outhorwk, "50 dielectric layer 1-2","50 dielectric layer 1-2","diele","diele")
outhorwk.explode
face = pull_ceiling(tmp, face, 200.0.inch, ["50 dielectric layer 1-2","50 dielectric layer 1-2"],["50 dielectric layer 1-2","50 dielectric layer 1-2"],["diele","diele"],["diele","diele"])
tmp.explode
layer = model.layers["02 die1"]
if (not layer)
layer = model.layers.add("02 die1")
rc = layer.visible = true
end
die = gpdb0.entities.add_group
die.name = "die1"
die.layer = "02 die1"
print "loading die1 ..\n"
bulk = die.entities.add_group
bulk.name = "bulk"
bulk.layer = model.layers[0]
layer = model.layers["20 die bulk (wireframe)"]
if (not layer)
layer = model.layers.add("20 die bulk (wireframe)")
rc = layer.visible = true
end
layer = model.layers["21 die bulk (surface)"]
if (not layer)
layer = model.layers.add("21 die bulk (surface)")
rc = layer.visible = true
end
material = model.materials["die"]
if (not material)
material = model.materials.add("die")
material.alpha = 0.5
material.color = 0x7f7f7f
end
outhorwk = bulk.entities.add_group
outhorwk.name = "outhorwk"
outhorwk.layer = model.layers[0]
add_line_to_chain(outhorwk, [-1000.0.inch,-1250.0.inch,280.0.inch],[1000.0.inch,-1250.0.inch,280.0.inch],"20 die bulk (wireframe)")
add_line_to_chain(outhorwk, [1000.0.inch,-1250.0.inch,280.0.inch],[1000.0.inch,1250.0.inch,280.0.inch],"20 die bulk (wireframe)")
add_line_to_chain(outhorwk, [1000.0.inch,1250.0.inch,280.0.inch],[-1000.0.inch,1250.0.inch,280.0.inch],"20 die bulk (wireframe)")
add_line_to_chain(outhorwk, [-1000.0.inch,1250.0.inch,280.0.inch],[-1000.0.inch,-1250.0.inch,280.0.inch],"20 die bulk (wireframe)")
edges = close_chain(outhorwk, "20 die bulk (wireframe)")
face = outhorwk.entities.add_face(edges)
set_lay_and_mat(outhorwk, "20 die bulk (wireframe)", "21 die bulk (surface)", "solidedge","die")
outhorwk.explode
face = pull_ceiling(bulk, face, 200.0.inch, ["20 die bulk (wireframe)","20 die bulk (wireframe)"],["21 die bulk (surface)","21 die bulk (surface)"],["solidedge","solidedge"],["die","die"])
diepads = die.entities.add_group
diepads.name = "diepads"
diepads.layer = model.layers[0]
material = model.materials["sig"]
if (not material)
material = model.materials.add("sig")
material.alpha = 0.8
material.color = [191,145,59]
end
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
if (not comp)
tmp = diepads.entities.add_group
tmp.name = "tmp"
tmp.layer = model.layers[0]
face = tmp.entities.add_face([-150.0.inch,-100.0.inch,0], [150.0.inch,-100.0.inch,0], [150.0.inch,100.0.inch,0],[-150.0.inch,100.0.inch,0])
tmp.entities.each do |e|
if (e.is_a? Sketchup::Face)
e.layer = "20 die bulk (wireframe)"
e.material = "sig"
e.back_material = "sig"
elsif (e.is_a? Sketchup::Edge)
e.layer = "20 die bulk (wireframe)"
e.material = "solidedge"
end
end
ins = tmp.to_component
comp = ins.definition
comp.name = "dp_sig_rect_w300h200t0r0"
diepads.entities.erase_entities(ins)
end
ins = diepads.entities.add_instance(comp, Geom::Transformation.translation([700.0.inch,-400.0.inch,480.0.inch]))
ins.name = "d:die1/1"
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
ins = diepads.entities.add_instance(comp, Geom::Transformation.rotation([0,0,0],Z_AXIS,4.71238898038469))
ins.transform!(Geom::Transformation.translation([200.0.inch,-950.0.inch,480.0.inch]))
ins.name = "d:die1/10"
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
ins = diepads.entities.add_instance(comp, Geom::Transformation.translation([700.0.inch,0.0.inch,480.0.inch]))
ins.name = "d:die1/2"
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
ins = diepads.entities.add_instance(comp, Geom::Transformation.translation([700.0.inch,400.0.inch,480.0.inch]))
ins.name = "d:die1/3"
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
ins = diepads.entities.add_instance(comp, Geom::Transformation.rotation([0,0,0],Z_AXIS,1.5707963267948966))
ins.transform!(Geom::Transformation.translation([200.0.inch,950.0.inch,480.0.inch]))
ins.name = "d:die1/4"
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
ins = diepads.entities.add_instance(comp, Geom::Transformation.rotation([0,0,0],Z_AXIS,1.5707963267948966))
ins.transform!(Geom::Transformation.translation([-200.0.inch,950.0.inch,480.0.inch]))
ins.name = "d:die1/5"
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
ins = diepads.entities.add_instance(comp, Geom::Transformation.rotation([0,0,0],Z_AXIS,3.141592653589793))
ins.transform!(Geom::Transformation.translation([-700.0.inch,400.0.inch,480.0.inch]))
ins.name = "d:die1/6"
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
ins = diepads.entities.add_instance(comp, Geom::Transformation.rotation([0,0,0],Z_AXIS,3.141592653589793))
ins.transform!(Geom::Transformation.translation([-700.0.inch,0.0.inch,480.0.inch]))
ins.name = "d:die1/7"
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
ins = diepads.entities.add_instance(comp, Geom::Transformation.rotation([0,0,0],Z_AXIS,3.141592653589793))
ins.transform!(Geom::Transformation.translation([-700.0.inch,-400.0.inch,480.0.inch]))
ins.name = "d:die1/8"
comp = model.definitions["dp_sig_rect_w300h200t0r0"]
ins = diepads.entities.add_instance(comp, Geom::Transformation.rotation([0,0,0],Z_AXIS,4.71238898038469))
ins.transform!(Geom::Transformation.translation([-200.0.inch,-950.0.inch,480.0.inch]))
ins.name = "d:die1/9"
nets = gpdb0.entities.add_group
nets.name = "pattern and bwires"
nets.layer = model.layers[0]
print "loading sig ..\n"
nettype = nets.entities.add_group
nettype.name = "sig"
nettype.layer = model.layers[0]
print "loading sig1 (1/10) .. \n"
net = nettype.entities.add_group
net.name = "sig1"
net.layer = model.layers[0]
layer = model.layers["40 conductor layer 1"]
if (not layer)
layer = model.layers.add("40 conductor layer 1")
rc = layer.visible = false
end
land = net.entities.add_group
land.name = "p:die1/_9 land"
land.layer = model.layers[0]
ringwk = land.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [1500.0.inch,-1300.0.inch,220.0.inch],[2400.0.inch,-1300.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [2400.0.inch,-1300.0.inch,220.0.inch],[2400.0.inch,-600.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [2400.0.inch,-600.0.inch,220.0.inch],[1800.0.inch,-600.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [1800.0.inch,-600.0.inch,220.0.inch],[1500.0.inch,-900.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [1500.0.inch,-900.0.inch,220.0.inch],[1500.0.inch,-1300.0.inch,220.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk, "40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(land, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(land, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
layer = model.layers["31 bonding plate"]
if (not layer)
layer = model.layers.add("31 bonding plate")
rc = layer.visible = false
end
material = model.materials["btplate"]
if (not material)
material = model.materials.add("btplate")
material.alpha = 1.0
material.color = 0x60d0d0
end
face = pull_ceiling(land, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
bwire = net.entities.add_group
bwire.name = "bw (d:die1/1,p:die1/_9)"
bwire.layer = model.layers[0]
layer = model.layers["30 bwire stk1,stg0"]
if (not layer)
layer = model.layers.add("30 bwire stk1,stg0")
rc = layer.visible = true
end
material = model.materials["sig(bwire)"]
if (not material)
material = model.materials.add("sig(bwire)")
material.alpha = 0.8
material.color = [191,145,59]
end
edges = []
edge = bwire.entities.add_line([700.0.inch, -400.0.inch,480.0.inch], [704.6.inch,-402.6.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([704.6.inch, -402.6.inch,559.5.inch], [1049.4.inch,-594.1.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([1049.4.inch,-594.1.inch,626.4.inch], [1448.0.inch,-815.5.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([1448.0.inch,-815.5.inch,528.8.inch], [1588.9.inch,-893.8.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([1588.9.inch,-893.8.inch,458.9.inch], [1782.8.inch,-1001.5.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([1782.8.inch,-1001.5.inch,324.5.inch], [1902.0.inch,-1067.7.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire,"30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading VSS1 (2/10) .. \n"
net = nettype.entities.add_group
net.name = "VSS1"
net.layer = model.layers[0]
land = net.entities.add_group
land.name = "p:die1/_4 land"
land.layer = model.layers[0]
ringwk = land.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [-2400.0.inch,600.0.inch,220.0.inch],[-1900.0.inch,600.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1900.0.inch,600.0.inch,220.0.inch],[-1800.0.inch,700.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1800.0.inch,700.0.inch,220.0.inch],[-1500.0.inch,700.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1500.0.inch,700.0.inch,220.0.inch],[-1500.0.inch,1200.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1500.0.inch,1200.0.inch,220.0.inch],[-1700.0.inch,1200.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1700.0.inch,1200.0.inch,220.0.inch],[-1900.0.inch,1400.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1900.0.inch,1400.0.inch,220.0.inch],[-2400.0.inch,1400.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-2400.0.inch,1400.0.inch,220.0.inch],[-2400.0.inch,600.0.inch,220.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk, "40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(land, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(land, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
face = pull_ceiling(land, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
bwire = net.entities.add_group
bwire.name = "bw (d:die1/6,p:die1/_4)"
bwire.layer = model.layers[0]
edges = []
edge = bwire.entities.add_line([-700.0.inch,400.0.inch,480.0.inch], [-704.7.inch,402.1.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([-704.7.inch,402.1.inch,559.5.inch], [-1052.2.inch,555.9.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([-1052.2.inch,555.9.inch,626.4.inch], [-1473.0.inch,742.2.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([-1473.0.inch,742.2.inch,528.8.inch], [-1621.8.inch,808.0.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([-1621.8.inch,808.0.inch,458.9.inch], [-1826.5.inch,898.6.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([-1826.5.inch,898.6.inch,324.5.inch], [-1952.3.inch,954.3.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire, "30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading sig2 (3/10) .. \n"
net = nettype.entities.add_group
net.name = "sig2"
net.layer = model.layers[0]
comp = model.definitions["sig_lay1_btplate20_tes_rectline_a500t20len400"]
if (not comp)
compwk = net.entities.add_group
compwk.name = "compwk"
compwk.layer = model.layers[0]
ringwk = compwk.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [-450.0.inch,250.0.inch,0.0.inch],[-450.0.inch,-250.0.inch,0.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-450.0.inch,-250.0.inch,0.0.inch],[450.0.inch,-250.0.inch,0.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [450.0.inch,-250.0.inch,0.0.inch],[450.0.inch,250.0.inch,0.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [450.0.inch,250.0.inch,0.0.inch],[-450.0.inch,250.0.inch,0.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk, "40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(compwk, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(compwk, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
face = pull_ceiling(compwk, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
ins = compwk.to_component
comp = ins.definition
comp.name = "sig_lay1_btplate20_tes_rectline_a500t20len400"
net.entities.erase_entities(ins)
end
ins = net.entities.add_instance(comp, Geom::Transformation.rotation([0,0,0],Z_AXIS,3.141592653589793))
ins.transform!(Geom::Transformation.translation([1950.0.inch,50.0.inch,220.0.inch]))
ins.name = "p:die1/_10 land"
bwire = net.entities.add_group
bwire.name = "bw (d:die1/2,p:die1/_10)"
bwire.layer = model.layers[0]
edges = []
edge = bwire.entities.add_line([700.0.inch,0.0.inch,480.0.inch], [704.6.inch,0.0.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([704.6.inch,0.0.inch,559.5.inch], [1049.4.inch,-3.7.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([1049.4.inch,-3.7.inch,626.4.inch], [1448.0.inch,-7.8.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([1448.0.inch,-7.8.inch,528.8.inch], [1588.9.inch,-9.3.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([1588.9.inch,-9.3.inch,458.9.inch], [1782.8.inch,-11.4.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([1782.8.inch,-11.4.inch,324.5.inch], [1902.0.inch,-12.6.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire,"30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading sig3 (4/10) .. \n"
net = nettype.entities.add_group
net.name = "sig3"
net.layer = model.layers[0]
land = net.entities.add_group
land.name = "p:die1/_2 land"
land.layer = model.layers[0]
ringwk = land.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [1500.0.inch,800.0.inch,220.0.inch],[2400.0.inch,800.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [2400.0.inch,800.0.inch,220.0.inch],[2400.0.inch,1700.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [2400.0.inch,1700.0.inch,220.0.inch],[1700.0.inch,1700.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [1700.0.inch,1700.0.inch,220.0.inch],[1500.0.inch,1500.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [1500.0.inch,1500.0.inch,220.0.inch],[1500.0.inch,800.0.inch,220.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk,"40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(land, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(land, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
face = pull_ceiling(land, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
bwire = net.entities.add_group
bwire.name = "bw (d:die1/3,p:die1/_2)"
bwire.layer = model.layers[0]
edges = []
edge = bwire.entities.add_line([700.0.inch,400.0.inch,480.0.inch], [704.6.inch,403.9.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([704.6.inch,403.9.inch,559.5.inch], [1049.4.inch,693.0.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([1049.4.inch,693.0.inch,626.4.inch], [1448.0.inch,1027.2.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([1448.0.inch,1027.2.inch,528.8.inch], [1588.9.inch,1145.3.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([1588.9.inch,1145.3.inch,458.9.inch], [1782.8.inch,1307.9.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([1782.8.inch,1307.9.inch,324.5.inch], [1902.0.inch,1407.8.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire,"30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading sig4 (5/10) .. \n"
net = nettype.entities.add_group
net.name = "sig4"
net.layer = model.layers[0]
land = net.entities.add_group
land.name = "p:die1/_3 land"
land.layer = model.layers[0]
ringwk = land.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [-1400.0.inch,2400.0.inch,220.0.inch],[-1400.0.inch,1500.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1400.0.inch,1500.0.inch,220.0.inch],[-1000.0.inch,1500.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1000.0.inch,1500.0.inch,220.0.inch],[-700.0.inch,1800.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-700.0.inch,1800.0.inch,220.0.inch],[-700.0.inch,2400.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-700.0.inch,2400.0.inch,220.0.inch],[-1400.0.inch,2400.0.inch,220.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk, "40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(land, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(land, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
face = pull_ceiling(land, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
bwire = net.entities.add_group
bwire.name = "bw (d:die1/5,p:die1/_3)"
bwire.layer = model.layers[0]
edges = []
edge = bwire.entities.add_line([-200.0.inch,950.0.inch,480.0.inch], [-204.0.inch,954.6.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([-204.0.inch,954.6.inch,559.5.inch], [-495.1.inch,1293.9.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([-495.1.inch,1293.9.inch,626.4.inch], [-798.8.inch,1647.9.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([-798.8.inch,1647.9.inch,528.8.inch], [-906.2.inch,1773.0.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([-906.2.inch,1773.0.inch,458.9.inch], [-1054.0.inch,1945.3.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([-1054.0.inch,1945.3.inch,324.5.inch], [-1144.8.inch,2051.1.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire,"30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading sig5 (6/10) .. \n"
net = nettype.entities.add_group
net.name = "sig5"
net.layer = model.layers[0]
comp = model.definitions["sig_lay1_btplate20_tes_rectline_a500t20len200"]
if (not comp)
compwk = net.entities.add_group
compwk.name = "compwk"
compwk.layer = model.layers[0]
ringwk = compwk.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [-350.0.inch,250.0.inch,0.0.inch],[-350.0.inch,-250.0.inch,0.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-350.0.inch,-250.0.inch,0.0.inch],[350.0.inch,-250.0.inch,0.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [350.0.inch,-250.0.inch,0.0.inch],[350.0.inch,250.0.inch,0.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [350.0.inch,250.0.inch,0.0.inch],[-350.0.inch,250.0.inch,0.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk, "40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(compwk, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(compwk, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
face = pull_ceiling(compwk, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
ins = compwk.to_component
comp = ins.definition
comp.name = "sig_lay1_btplate20_tes_rectline_a500t20len200"
net.entities.erase_entities(ins)
end
ins = net.entities.add_instance(comp, Geom::Transformation.rotation([0,0,0],Z_AXIS,3.141592653589793))
ins.transform!(Geom::Transformation.translation([-2050.0.inch,50.0.inch,220.0.inch]))
ins.name = "p:die1/_5 land"
bwire = net.entities.add_group
bwire.name = "bw (d:die1/7,p:die1/_5)"
bwire.layer = model.layers[0]
edges = []
edge = bwire.entities.add_line([-700.0.inch,0.0.inch,480.0.inch], [-704.6.inch,0.0.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([-704.6.inch,0.0.inch,559.5.inch], [-1052.2.inch,3.5.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([-1052.2.inch,3.5.inch,626.4.inch], [-1473.0.inch,7.8.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([-1473.0.inch,7.8.inch,528.8.inch], [-1621.8.inch,9.3.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([-1621.8.inch,9.3.inch,458.9.inch], [-1826.5.inch,11.3.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([-1826.5.inch,11.3.inch,324.5.inch], [-1952.3.inch,12.6.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire,"30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading sig6 (7/10) .. \n"
net = nettype.entities.add_group
net.name = "sig6"
net.layer = model.layers[0]
land = net.entities.add_group
land.name = "p:die1/_6 land"
land.layer = model.layers[0]
ringwk = land.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [-2400.0.inch,-1700.0.inch,220.0.inch],[-1800.0.inch,-1700.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1800.0.inch,-1700.0.inch,220.0.inch],[-1500.0.inch,-1400.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1500.0.inch,-1400.0.inch,220.0.inch],[-1500.0.inch,-600.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1500.0.inch,-600.0.inch,220.0.inch],[-2200.0.inch,-600.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-2200.0.inch,-600.0.inch,220.0.inch],[-2400.0.inch,-800.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-2400.0.inch,-800.0.inch,220.0.inch],[-2400.0.inch,-1700.0.inch,220.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk, "40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(land, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(land, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
face = pull_ceiling(land, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
bwire = net.entities.add_group
bwire.name = "bw (d:die1/8,p:die1/_6)"
bwire.layer = model.layers[0]
edges = []
edge = bwire.entities.add_line([-700.0.inch,-400.0.inch,480.0.inch], [-704.6.inch,-402.6.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([-704.6.inch,-402.6.inch,559.5.inch], [-1052.2.inch,-598.4.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([-1052.2.inch,-598.4.inch,626.4.inch], [-1473.0.inch,-835.5.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([-1473.0.inch,-835.5.inch,528.8.inch], [-1621.8.inch,-919.3.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([-1621.8.inch,-919.3.inch,458.9.inch], [-1826.5.inch,-1034.6.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([-1826.5.inch,-1034.6.inch,324.5.inch], [-1952.3.inch,-1105.5.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire,"30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading sig7 (8/10) .. \n"
net = nettype.entities.add_group
net.name = "sig7"
net.layer = model.layers[0]
land = net.entities.add_group
land.name = "p:die1/_7 land"
land.layer = model.layers[0]
ringwk = land.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [-1700.0.inch,-2400.0.inch,220.0.inch],[-400.0.inch,-2400.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-400.0.inch,-2400.0.inch,220.0.inch],[-400.0.inch,-1700.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-400.0.inch,-1700.0.inch,220.0.inch],[-1200.0.inch,-1700.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1200.0.inch,-1700.0.inch,220.0.inch],[-1700.0.inch,-2200.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [-1700.0.inch,-2200.0.inch,220.0.inch],[-1700.0.inch,-2400.0.inch,220.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk, "40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(land, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(land, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
face = pull_ceiling(land, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
bwire = net.entities.add_group
bwire.name = "bw (d:die1/9,p:die1/_7)"
bwire.layer = model.layers[0]
edges = []
edge = bwire.entities.add_line([-200.0.inch,-950.0.inch,480.0.inch], [-203.6.inch,-954.7.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([-203.6.inch,-954.7.inch,559.5.inch], [-466.9.inch,-1297.4.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([-466.9.inch,-1297.4.inch,626.4.inch], [-760.3.inch,-1679.2.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([-760.3.inch,-1679.2.inch,528.8.inch], [-864.0.inch,-1814.2.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([-864.0.inch,-1814.2.inch,458.9.inch], [-1006.7.inch,-2000.0.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([-1006.7.inch,-2000.0.inch,324.5.inch], [-1094.4.inch,-2114.1.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire,"30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading sig8 (9/10) .. \n"
net = nettype.entities.add_group
net.name = "sig8"
net.layer = model.layers[0]
land = net.entities.add_group
land.name = "p:die1/_8 land"
land.layer = model.layers[0]
ringwk = land.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [900.0.inch,-2400.0.inch,220.0.inch],[2400.0.inch,-2400.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [2400.0.inch,-2400.0.inch,220.0.inch],[2400.0.inch,-1500.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [2400.0.inch,-1500.0.inch,220.0.inch],[1100.0.inch,-1500.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [1100.0.inch,-1500.0.inch,220.0.inch],[800.0.inch,-1800.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [800.0.inch,-1800.0.inch,220.0.inch],[800.0.inch,-2300.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [800.0.inch,-2300.0.inch,220.0.inch],[900.0.inch,-2400.0.inch,220.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk, "40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(land, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(land, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
face = pull_ceiling(land, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
bwire = net.entities.add_group
bwire.name = "bw (d:die1/10,p:die1/_8)"
bwire.layer = model.layers[0]
edges = []
edge = bwire.entities.add_line([200.0.inch,-950.0.inch,480.0.inch], [204.7.inch,-954.7.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([204.7.inch,-954.7.inch,559.5.inch], [553.4.inch,-1297.4.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([553.4.inch,-1297.4.inch,626.4.inch], [941.8.inch,-1679.2.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([941.8.inch,-1679.2.inch,528.8.inch], [1079.1.inch,-1814.2.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([1079.1.inch,-1814.2.inch,458.9.inch], [1268.1.inch,-2000.0.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([1268.1.inch,-2000.0.inch,324.5.inch], [1384.2.inch,-2114.1.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire, "30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading VDD1 (10/10) .. \n"
net = nettype.entities.add_group
net.name = "VDD1"
net.layer = model.layers[0]
land = net.entities.add_group
land.name = "p:die1/_1 land"
land.layer = model.layers[0]
ringwk = land.entities.add_group
ringwk.name = "ringwk"
ringwk.layer = model.layers[0]
add_line_to_chain(ringwk, [100.0.inch,1500.0.inch,220.0.inch],[1100.0.inch,1500.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [1100.0.inch,1500.0.inch,220.0.inch],[1500.0.inch,1900.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [1500.0.inch,1900.0.inch,220.0.inch],[2400.0.inch,1900.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [2400.0.inch,1900.0.inch,220.0.inch],[2400.0.inch,2400.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [2400.0.inch,2400.0.inch,220.0.inch],[100.0.inch,2400.0.inch,220.0.inch],"40 conductor layer 1")
add_line_to_chain(ringwk, [100.0.inch,2400.0.inch,220.0.inch],[100.0.inch,1500.0.inch,220.0.inch],"40 conductor layer 1")
edges = close_chain(ringwk, "40 conductor layer 1")
face = ringwk.entities.add_face(edges)
ringwk.explode
if (face)
set_lay_and_mat(land, "40 conductor layer 1","40 conductor layer 1","sig","sig")
end
face = pull_ceiling(land, face, 20.0.inch, ["40 conductor layer 1","60 subst (wireframe)"],["40 conductor layer 1","40 conductor layer 1"],["sig","solidedge"],["sig","sig"])
face = pull_ceiling(land, face, 20.0.inch, ["31 bonding plate","31 bonding plate"],["31 bonding plate","31 bonding plate"],["btplate","btplate"],["btplate","btplate"])
bwire = net.entities.add_group
bwire.name = "bw (d:die1/4,p:die1/_1)"
bwire.layer = model.layers[0]
edges = []
edge = bwire.entities.add_line([200.0.inch,950.0.inch,480.0.inch], [203.0.inch,954.7.inch,559.5.inch])
edges << edge
edge = bwire.entities.add_line([203.0.inch,954.7.inch,559.5.inch], [420.3.inch,1293.9.inch,626.4.inch])
edges << edge
edge = bwire.entities.add_line([420.3.inch,1293.9.inch,626.4.inch], [647.1.inch,1647.9.inch,528.8.inch])
edges << edge
edge = bwire.entities.add_line([647.1.inch,1647.9.inch,528.8.inch], [727.3.inch,1773.0.inch,458.9.inch])
edges << edge
edge = bwire.entities.add_line([727.3.inch,1773.0.inch,458.9.inch], [837.6.inch,1945.3.inch,324.5.inch])
edges << edge
edge = bwire.entities.add_line([837.6.inch,1945.3.inch,324.5.inch], [905.4.inch,2051.1.inch,260.0.inch])
edges << edge
normal = edges[0].vertices[1].position - edges[0].vertices[0].position
circle = bwire.entities.add_circle(edges[0].vertices[0].position, normal, 15.0.inch)
face = bwire.entities.add_face(circle)
face.followme(edges)
bwire.entities.erase_entities(edges)
set_lay_and_mat(bwire, "30 bwire stk1,stg0","30 bwire stk1,stg0","sig(bwire)","sig(bwire)")
print "loading isolated objects..\n"
isolated = nets.entities.add_group
isolated.name = "isolated"
isolated.layer = model.layers[0]
fid = isolated.entities.add_group
fid.name = "fid"
fid.layer = model.layers[0]
fid.explode if (fid.entities.count == 0)
plane = isolated.entities.add_group
plane.name = "plane"
plane.layer = model.layers[0]
plane.explode if (plane.entities.count == 0)
ring = isolated.entities.add_group
ring.name = "ring"
ring.layer = model.layers[0]
ring.explode if (ring.entities.count == 0)
bpad = isolated.entities.add_group
bpad.name = "bpad"
bpad.layer = model.layers[0]
bpad.explode if (bpad.entities.count == 0)
ball = isolated.entities.add_group
ball.name = "ball"
ball.layer = model.layers[0]
ball.explode if (ball.entities.count == 0)
via = isolated.entities.add_group
via.name = "via"
via.layer = model.layers[0]
via.explode if (via.entities.count == 0)
pterm = isolated.entities.add_group
pterm.name = "pterm"
pterm.layer = model.layers[0]
pterm.explode if (pterm.entities.count == 0)
rjump = isolated.entities.add_group
rjump.name = "rjump"
rjump.layer = model.layers[0]
rjump.explode if (rjump.entities.count == 0)
eterm = isolated.entities.add_group
eterm.name = "eterm"
eterm.layer = model.layers[0]
eterm.explode if (eterm.entities.count == 0)
etchbackline = isolated.entities.add_group
etchbackline.name = "etchbackline"
etchbackline.layer = model.layers[0]
etchbackline.explode if (etchbackline.entities.count == 0)
etchbackring = isolated.entities.add_group
etchbackring.name = "etchbackring"
etchbackring.layer = model.layers[0]
etchbackring.explode if (etchbackring.entities.count == 0)
isolated.explode if (isolated.entities.count == 0)
ins = gpdb0.to_component
comp = ins.definition
comp.name = "desc"
ins.name = "desc"
if (not inss.empty?)
print "replacing existing data..\n"
model.entities.erase_entities(ins)
until (inss.empty?) do
name = inss.shift
trans = inss.shift
ins = model.entities.add_instance(comp, trans)
ins.name = name
end
end
rc = model.active_layer = model.layers[0]
model.commit_operation
end
以上。