private void LoadSketchStrokesFromXML(System.Xml.XmlNode node)
        {
            rgSketchSet.Clear();

            for( int i=0; i<node.ChildNodes.Count; i++ )
            {
                if ( string.Compare(node.ChildNodes[i].Name, GOM_TAGS.SKETCH_STROKE, true) == 0 )
                {
                    System.Collections.ArrayList stroke = new System.Collections.ArrayList();

                    System.Xml.XmlNodeList points = node.ChildNodes[i].ChildNodes;
                    for ( int j=0; j<points.Count; j++ )
                    {
                        if ( string.Compare(points[j].Name, GOM_TAGS.SKETCH_POINT,true) == 0 )
                        {
                            SketchPoint pt = new SketchPoint();
                            pt.LoadFromXML(points[j], null);
                            stroke.Add(pt);
                        }
                    }

                    if ( stroke.Count > 0 )
                    {
                        rgSketchSet.Add(stroke);
                    }
                }
            }
        }
        public GOM_Interface_Graphic_Object Clone()
        {
            GOM_Object_Sketch	obj;

            obj = new GOM_Object_Sketch();

            System.Collections.ArrayList	rgStroke, rgStrokeNew;
            SketchPoint						pt1, pt2;

            for (int i = 0; i < rgSketchSet.Count; i++)
            {
                rgStroke = (System.Collections.ArrayList)rgSketchSet[i];
                rgStrokeNew = new System.Collections.ArrayList();

                for (int j = 0; j < rgStroke.Count; j++)
                {
                    pt1 = (SketchPoint)rgStroke[j];
                    pt2 = new SketchPoint();
                    pt2.x = pt1.x;
                    pt2.y = pt1.y;
                    pt2.time = pt1.time;
                    rgStrokeNew.Add(pt2);
                }

                obj.rgSketchSet.Add(rgStrokeNew);
            }

            return obj;
        }