;;; PCell Designer File (format version 2.2) ;;; File-out of the PCell Designer pcell "NmosDemo24"/"KevinEarlsSplit"/"layout" (pcdPcell ;; Mixins ?mixins nil ;; Create CDF? ?createCDF t ;; Reference cell for CDF ?referenceCDF nil ;; Main points ?mainPoints nil ;; Initial size ?initSize nil ;; Device Variables ?devVars nil ;; Device Variables visible to the commands ?guiVisibleDevVarNames nil ;; Methods used as commands ?methodCommands nil ;; PCell and CDF Parameters ?classEditorChanges () ;; Simulation Information ?simulation (simulation) ;; Source Cell View ?sourceCellView ("NmosDemo24" "KevinEarlsSplit" "layout") ;; Last Edited with PCell Designer Version ?pcdVersion "2-5-28" ;; Method definitions ?methods ( (newCommand command (newCommand ?name split\ on\ edge ?commandClass pcmdCommand ?category "Custom" ?help "Split shapes based on edges passed in" ?parameters (result (lvalue nil ?valuep t ?requiredp t ?isExpression t ?keyword t) shapes (geo (geo grow 0 type "Group" points nil group nil name nil net nil expression nil) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Shapes to split") edges (geo (geo grow 0 type "Group" points nil group nil name nil net nil expression nil) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Edges to use to split shape on") edge_grow_factor (float "0.001" ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Small dimension used to grow edges for chopping"))) body ( (resize source (geo (geo type "Name" points nil group "shapeToSplit" name "shapes" net nil expression nil) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The shapes to modify.") amount (enclosure "-edge_grow_factor" ?valuep t ?requiredp t ?isExpression t ?keyword ?enclosure ?help "The amount to grow.")) (chop name (lvalue "result" ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The resulting shapes.") source (geo (geo type "Name" points nil group "shapeToSplit" name "shapes" net nil expression nil) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The shapes to chop.") chop (geo (geo type "Expression" points nil group "splitRegions" name nil net nil expression (append (grow evalstring("edge_grow_factor") (name "edges")))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The mask to remove from the shapes in source.") layer (layer "nil" ?valuep nil ?requiredp nil ?isExpression nil ?keyword t ?help "If provided, the chopped shapes will be moved to this layer.") cut_path (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "If true, paths will be cut instead of chopped. This works only with manhattan path segments") chop_layers (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "If true, shapes in *chop* will only chop shapes on the same layer, with the exception being any shapes in notch on y0 being treated as wildcards -- they will chop all layers. If false (the default) all area in *notch* will chop all shapes in *source*.")) (resize source (geo (geo type "Name" points nil group "shapeToSplit" name "result" net nil expression nil) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The shapes to modify.") amount (enclosure "edge_grow_factor" ?valuep t ?requiredp t ?isExpression t ?keyword ?enclosure ?help "The amount to grow.")) )) (method command draw body ( (group ?renderInfo (?renderAsFigGroup nil) name (group "shapeToSplit" ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The name of the group to create") body (body ( (rectangle name (lvalue "" ?valuep t ?requiredp nil ?isExpression nil ?keyword nil ?help "The created rectangles, if any.") layer (layer ("Poly" "drawing") ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The layer or LPP for the created rectangles.") source (geo (geo type "Points" points ((0.865 1.37) (26.005 1.37) (26.005 14.11) (0.865 14.11))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The bounding boxes of the rectangles to create.")) ) ?valuep t ?requiredp t ?isExpression t ?keyword nil ) lock (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "Add the shapes to a figGroup rather than a group")) (group ?renderInfo (?renderAsFigGroup nil) name (group "splitRegions" ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The name of the group to create") body (body ( (para body (body ( (rectangle name (lvalue "" ?valuep t ?requiredp nil ?isExpression nil ?keyword nil ?help "The created rectangles, if any.") layer (layer ("Nimp" "drawing") ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The layer or LPP for the created rectangles.") source (geo (geo type "Points" points ((-0.25 6.845) (27.685 6.845) (27.685 9.19) (-0.25 9.19))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The bounding boxes of the rectangles to create.")) ) ?valuep t ?requiredp t ?isExpression t ?keyword nil ) scratch (boolean t ?valuep t ?requiredp t ?isExpression nil ?keyword t)) (para body (body ( (rectangle name (lvalue "" ?valuep t ?requiredp nil ?isExpression nil ?keyword nil ?help "The created rectangles, if any.") layer (layer ("Nimp" "drawing") ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The layer or LPP for the created rectangles.") source (geo (geo type "Points" points ((6.005 -1.87) (8.91 -1.87) (8.91 16.12) (6.005 16.12))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The bounding boxes of the rectangles to create.")) ) ?valuep t ?requiredp t ?isExpression t ?keyword nil ) scratch (boolean t ?valuep t ?requiredp t ?isExpression nil ?keyword t)) (para body (body ( (rectangle name (lvalue "" ?valuep t ?requiredp nil ?isExpression nil ?keyword nil ?help "The created rectangles, if any.") layer (layer ("Nimp" "drawing") ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The layer or LPP for the created rectangles.") source (geo (geo type "Points" points ((15.95 -1.985) (18.52 -1.985) (18.52 16.23) (15.95 16.23))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The bounding boxes of the rectangles to create.")) ) ?valuep t ?requiredp t ?isExpression t ?keyword nil ) scratch (boolean t ?valuep t ?requiredp t ?isExpression nil ?keyword t)) ) ?valuep t ?requiredp t ?isExpression t ?keyword nil ) lock (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "Add the shapes to a figGroup rather than a group")) (split\ on\ edge result (lvalue "aftersplit" ?valuep t ?requiredp t ?isExpression nil ?keyword t) shapes (geo (geo grow 0 type "Group" points nil group "shapeToSplit" name nil net nil expression nil) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Shapes to split") edges (geo (geo type "Expression" points nil group nil name nil net nil expression (append (everyedge (group ("splitRegions"))))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Edges to use to split shape on") edge_grow_factor (float "0.001" ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Small dimension used to grow edges for chopping")) )) ) ;; Imported local (Skill++) definitions ?importedCode nil ;; Saved state of the GUI ?guiData (nil selectedCommands nil activeTab "draw" openTabs ("split on edge" "draw") commandPaletteSelection (pcdGuiNK_CommandPalette_AllCommand_split_20on_20edge) commandPalette (nil Modify t)) )