PROC DrawSemi(a) IS Circle.DrawQuarter(a); Circle.DrawQuarter(a) END; UI PointTool(DrawSemi); PROC DrawSemiCC(a) IS Circle.DrawQuarterCC(a); Circle.DrawQuarterCC(a) END; UI PointTool(DrawSemiCC); PROC Cmd0() IS IF VAR a = (-71.95128, -112.25639), b ~ (-71.95128, 124.45025), c ~ (-40.720936, 124.45025), d ~ (-40.720936, -112.25639), e ~ (-40.720936, 93.2199), f ~ (-40.720936, -81.026054), g ~ (-40.720936, 6.096926), h = (-70.436516, 181.27892), i = (-40.14124, 188.8638) IN g = Geometry.Mid(c, d) AND b VER a AND c VER e AND c VER f AND c VER d AND Geometry.CongY(d, f, e, c) AND b HOR c AND a HOR d AND (a, d) CONG (d, f) AND (a, d) CONG (h, i) -> PS.MoveTo(d); PS.LineTo(a); PS.LineTo(b); PS.LineTo(c); DrawSemi(g); PS.MoveTo(e); PS.LineTo(f); DrawSemiCC(g); PS.Fill(); PS.MoveTo(h); PS.LineTo(i) END FI END;