type entity = | Line of pt * pt| Circle of pt * float| Arc of pt * float * float * float| Insert of string * pt * float * float| Dimension of pt * pt * pt
type ent = {entity : entity;layer : string;
}type layer = {name : string;color : int;on : bool;
}type t = {ents : (int * ent) list;layers : layer list;current : string;blocks : (string * (pt * ent list)) list;next : int;
}val get : t -> int -> ent optionval remove : int list -> t -> tval replace : int -> entity list -> t -> tval layer : t -> string -> layerval ensure_layer : string -> t -> tval dimension_value : pt -> pt -> pt -> floatval dimension_lines : pt -> pt -> pt -> (pt * pt) listval dimension_text : pt -> pt -> pt -> pt * stringval extents : t -> (pt * pt) optionval pick : t -> float -> pt -> int optionval window : t -> pt -> pt -> crossing:bool -> int list