@@ -284,7 +284,11 @@ def interceptedLayer(layerName,cellName):
284284 if cellName not in globalVar .partition_stack :
285285 return False
286286 [prefix ,z0 ,z1 ,op ,order ]= globalVar .stack [layerName ]
287+ z0 = float (z0 )
288+ z1 = float (z1 )
287289 [cell_z0 ,cell_z1 ]= globalVar .partition_stack [cellName ]
290+ cell_z0 = float (cell_z0 )
291+ cell_z1 = float (cell_z1 )
288292 return z0 <= cell_z1 and z1 >= cell_z0
289293
290294
@@ -625,7 +629,7 @@ def makeLayerFaces2(lname,FCclipShape,FClayerShape,FC_unit,db_unit,useAllClipPol
625629 else :
626630 slicedFace = []
627631 layerFaces = []
628- shift = 2 / FC_unit #2 um
632+ shift = 3 / FC_unit #3 um
629633 for face in slicedFace :
630634 Pc = getPointInFace (face ,shift )
631635 xc = Pc [0 ]* FC_unit / db_unit
@@ -785,8 +789,16 @@ def addHSurf(doc,profile):
785789 z1i = float (z1i )
786790 z0i = max (cell_z0 ,z0i )
787791 z1i = min (cell_z1 ,z1i )
792+ if opi == 'vsurf' or opi == 'hsurf' :
793+ shapeType = "surf"
794+ elif opi == 'add' or opi == 'ins' :
795+ shapeType = "solid"
796+ else :
797+ shapeType = "solid"
788798 if z1i < z0i :
789799 continue
800+ if z1i == z0i and shapeType == "solid" :
801+ continue
790802 if prefix :
791803 label = prefix + "_" + lname
792804 else :
@@ -885,12 +897,6 @@ def addHSurf(doc,profile):
885897 surf = addHSurf (FCdoc ,wires )
886898 surf .Label = f'{ lname } _surf'
887899 layerBody .addObject (surf )
888- if opi == 'vsurf' or opi == 'hsurf' :
889- shapeType = "surf"
890- elif opi == 'add' or opi == 'ins' :
891- shapeType = "solid"
892- else :
893- shapeType = "solid"
894900 FCdoc .recompute ()
895901 if opi == 'ins' or opi == 'cut' and shapeType == "solid" :
896902 tool = None
@@ -1036,16 +1042,16 @@ def extractSubdomainDXF(cellName,layoutView,dxf_unit):
10361042 for entity in msp :
10371043 if not entity .dxf .hasattr ("layer" ):
10381044 continue
1039- if interceptedLayer ( entity .dxf . layer , cell . name ) :
1040- interceptedLayers . add (entity .dxf .layer )
1041- if entity . dxftype () in extractedTypes :
1042- bb = bbox .extents ([entity ])
1043- ll = bb .extmin
1044- ur = bb .extmax
1045- kbb = pya .Box (ll [0 ]* dxf_unit / dbu ,ll [1 ]* dxf_unit / dbu ,ur [0 ]* dxf_unit / dbu ,ur [1 ]* dxf_unit / dbu )
1046- touchPoly = [poly for poly in cellShape .each_touching (kbb )]
1047- if len (touchPoly )> 0 :
1048- exporter .write (entity )
1045+ if entity .dxftype () in extractedTypes :
1046+ if interceptedLayer (entity .dxf .layer , cell . name ):
1047+ interceptedLayers . add ( entity . dxf . layer )
1048+ bb = bbox .extents ([entity ])
1049+ ll = bb .extmin
1050+ ur = bb .extmax
1051+ kbb = pya .Box (ll [0 ]* dxf_unit / dbu ,ll [1 ]* dxf_unit / dbu ,ur [0 ]* dxf_unit / dbu ,ur [1 ]* dxf_unit / dbu )
1052+ touchPoly = [poly for poly in cellShape .each_touching (kbb )]
1053+ if len (touchPoly )> 0 :
1054+ exporter .write (entity )
10491055 finally :
10501056 exporter .close ()
10511057 mainDoc .close ()
0 commit comments