public static ArchitecturalLine CreateArchitecturalEntity(string _name, Layer _layer,
                                                                  List <Point3D> _coords0, List <Point3D> _coords1, List <int> _connected,
                                                                  List <string> _text, SharpDX.Matrix _textTransform)
        {
            ArchitecturalLine aLine;
            int nrTextLines = _text.Count;

            if (nrTextLines > 0)
            {
                aLine = new ArchitecturalText(_name, _layer, _coords0, _coords1, _connected, _text, _textTransform);
            }
            else
            {
                aLine = new ArchitecturalLine(_name, _layer, _coords0, _coords1, _connected);
            }

            return(aLine);
        }
        public ArchitecturalLine(ArchitecturalLine _original)
            : base("Copy of " + _original.EntityName, _original.EntityLayer)
        {
            // entity (w/o ID, Name, IsValid, IsSelected, LineThicknessGUI)
            this.EntityColor       = _original.EntityColor;
            this.Visibility        = _original.Visibility;
            this.ContainedEntities = _original.ContainedEntities;
            this.ShowZones         = _original.ShowZones;
            this.ShowCtrlPoints    = _original.ShowCtrlPoints;
            this.IsExpanded        = _original.IsExpanded;

            // geometric entity
            this.HasGeometry  = true;
            this.ColorByLayer = _original.ColorByLayer;

            // architecural line
            this.HasGeometryType = EnityGeometryType.LINE;
            this.Coords0         = _original.Coords0;
            this.Coords1         = _original.Coords1;
            this.Connected       = _original.Connected;
            this.ValidateGeometry();
            this.LineThickness = _original.LineThickness;
        }