@classmethod
def fromconstructs(cls, constructs, copy=False):
    """Create a domain from existing metadata constructs.
    
    The new domain act as a view to the given constructs, i.e. changes
    to the domain, such as the addition or removal of a construct,
    will also affect the input `Constructs` instance.
    
    .. versionadded:: 1.7.0
    
    :Parameters:
    
        constructs: `Constructs`
            The constructs from which to create the new domain. Cell
            method and field ancillary constucts are ignored.
    
        copy: bool, optional
            If True then deep copy the metadata constructs prior to
            initialization. By default the metadata constructs are not
            copied.
    
    :Returns:
    
        `Domain`
            The domain created from a view of the constructs.
    
    **Examples:**
    
    >>> d = Domain.fromconstructs(f.constructs)

        """
    domain = cls()
    domain._set_component('constructs', constructs._view(ignore=(
        'cell_method', 'field_ancillary')), copy=copy)
    domain.constructs._field_data_axes = None
    return domain
