Esempio n. 1
0
def copy_paste_elements_btwn_views(src_view, dest_view):
    elements_to_copy = get_copyable_elements(src_view)
    if len(elements_to_copy) >= 1:
        # copying and pasting elements
        trans_name = 'Copy and Paste elements'
        try:
            with Transaction(doc, trans_name) as t:
                t.Start()

                failure_ops = t.GetFailureHandlingOptions()
                failure_ops.SetFailuresPreprocessor(ViewConverterFailurePreProcessor(trans_name, src_view.ViewName))
                # failure_ops.SetForcedModalHandling(False)
                t.SetFailureHandlingOptions(failure_ops)

                options = CopyPasteOptions()
                options.SetDuplicateTypeNamesHandler(CopyUseDestination())
                copied_element = ElementTransformUtils.CopyElements(src_view,
                                                                    List[ElementId](elements_to_copy),
                                                                    dest_view,
                                                                    None,
                                                                    options)

                # matching element graphics overrides and view properties
                if len(copied_element) != len(elements_to_copy):
                    logger.error('Some elements were not copied from view: {}'.format(src_view.ViewName))
                for dest, src in zip(copied_element, elements_to_copy):
                    dest_view.SetElementOverrides(dest, src_view.GetElementOverrides(src))

                t.Commit()
                return len(copied_element)
        except Exception as err:
            logger.error('Error occured while copying elements from {} | {}'.format(src_view.ViewName, err))
            return 0
    else:
        print('No copyable elements where found.')
Esempio n. 2
0
 def copy_els_form_source(cls, doc, source, els):
     """Копирует значения из dict источника в документ."""
     els = List[ElementId](els.values())
     new_filters = {}
     for i in ElementTransformUtils.CopyElements(source, els, doc,
                                                 Transform.Identity,
                                                 CopyPasteOptions()):
         new_filters.update({doc.GetElement(i).Name: i})
     return new_filters
Esempio n. 3
0
def copy(source_doc, elem):
    """
    Copy elem from source_doc to active document
    :param source_doc: Autodesk.Revit.DB.Document
    :param elem: Autodesk.Revit.DB.Element
    :return: None
    """
    copypasteoptions = CopyPasteOptions()
    id_list = List[ElementId]()
    id_list.Add(elem.Id)

    with rpw.db.Transaction("Copy pipe type", doc):
        ElementTransformUtils.CopyElements(source_doc, id_list, doc,
                                           Transform.Identity,
                                           copypasteoptions)
Esempio n. 4
0
if source_template_id:
    with Transaction(active_doc, 'Обновить шаблон') as t:
        t.Start()
        source_template = source_doc.GetElement(source_template_id)
        echo("Найден соответствующий шаблон " + source_template.Title)
        cur_time = '_old_' + datetime.now().strftime("%y%m%d%H%M%S")

        source_template_filter_names = { source_doc.GetElement(i).Name: i for i in source_doc.GetElement(source_template_id).GetFilters()}
        for i in FilteredElementCollector(active_doc).OfClass(ParameterFilterElement).ToElements():
            if i.Name in source_template_filter_names.keys():
                i.Name += cur_time
        template_name.Set(template_name.AsString() + cur_time)

        new_template = List[ElementId]([source_template_id])
        new_template = ElementTransformUtils.CopyElements(source_doc, new_template, active_doc, Transform.Identity, CopyPasteOptions())
        for i in new_template:
            new_template_name = active_doc.GetElement(i).get_Parameter(BuiltInParameter.VIEW_NAME)
            new_template_name_str = file_with_template.rename_template(new_template_name.AsString())
            new_template_name.Set(new_template_name_str)
            echo("Скопирован шаблон " + new_template_name_str)
            for k in view_with_templates:
                k.ViewTemplateId = i
            break
        t.Commit()
else:
    echo("Соответствующий шаблон не найден. Необходимо задать сопоставления в " + comparison_paths)
# with Transaction(active_doc, 'Обновить шаблон') as t:
#     t.Start()
#     if active_view:
#
Esempio n. 5
0
        if vN in v:
            dupViewTemplates.append(vT)


# Views with view templates
def checkViewT(viewsList):
    viewsWVT = {}
    for v in viewsList:
        if v.ViewTemplateId != ElementId.InvalidElementId:
            viewsWVT.setdefault(v.ViewTemplateId.ToString(), []).append(v)
    return viewsWVT


# Transform object
transIdent = Transform.Identity
copyPasteOpt = CopyPasteOptions()

# Create single transaction and start it
t = Transaction(doc, "Copy View Templates")
t.Start()

# Check for all views that has a view template
vTIds = []
viewsWVT = checkViewT(docViewsCollector)
viewsFail = []
viewsSuccess = []
for vT in vTemplates:
    vTId = List[ElementId]()
    for pro in selProject:
        if pro.Title in vT:
            vTId.Add(viewTemplates[vT].Id)
Esempio n. 6
0
 def copy_templates(self, doc, source, templates):
     els = List[ElementId](templates.values())
     ElementTransformUtils.CopyElements(source, els, doc,
                                        Transform.Identity,
                                        CopyPasteOptions())
Esempio n. 7
0
        # destination = FilteredElementCollector(doc, desview.Id).OfClass(ImportInstance).ToElementIds()
        elementspool = FilteredElementCollector(
            recoverdoc, recoverview.Id).OfClass(ImportInstance).ToElements()
        elements = FilteredElementCollector(
            recoverdoc, recoverview.Id).OfClass(ImportInstance).ToElementIds()
        # print(len(elements))
        count = 0
        for ele in elementspool:
            a = ele.IsLinked
            if a:
                elements.Remove(ele.Id)
            else:
                count += 1
        if desview:
            print("found " + str(len(elements)) + " elements")
            if elements:
                trans = None
                op = CopyPasteOptions()
                ElementTransformUtils.CopyElements(recoverview, elements,
                                                   desview, trans, op)
                print("copied " + i.ToString())
            else:
                print("failed State no Elements" + i.ToString())
        else:
            print("failed State view not valid" + i.ToString())
    except:
        print("failed State final script fail " + i.ToString())

# recoverdoc.Close(False)
t.Commit()
Esempio n. 8
0
    ComboBox("target", modifiable_docs),
    Button("Select")
]

form = rpw.ui.forms.FlexForm("Pick documents", components)
form.ShowDialog()

try:
    source_doc = form.values["source"]
    target_doc = form.values["target"]
except KeyError:
    logger.debug('No input or incorrect inputs')
    import sys
    sys.exit()

copypasteoptions = CopyPasteOptions()

source_viewtype_id_list = get_all_viewfamilytype_ids(source_doc)

source_doc_dict = view_type_name_template_name_dict(source_doc)

with rpw.db.Transaction(doc=target_doc, name="Copy view types"):
    # Copy view type
    ElementTransformUtils.CopyElements(source_doc, source_viewtype_id_list,
                                       target_doc, Transform.Identity,
                                       copypasteoptions)

    # Assign Default Template to ViewType
    target_doc_dict = view_template_name_to_id_dict(target_doc)
    for viewtype in FilteredElementCollector(target_doc).OfClass(
            ViewFamilyType):
Esempio n. 9
0
        if isinstance(el, Element) and el.Category:
            elements_to_copy.append(el.Id)
        else:
            logger.debug('Skipping Element with id: {0}'.format(el.Id))
    if len(elements_to_copy) < 1:
        logger.debug('Skipping {0}. No copyable elements where found.'.format(
            src_view.ViewName))
        continue

    # start creating views and copying elements
    with Transaction(doc, 'Duplicate Drafting as Legend') as t:
        t.Start()

        # copying and pasting elements
        dest_view = doc.GetElement(
            baseLegendView.Duplicate(ViewDuplicateOption.Duplicate))
        options = CopyPasteOptions()
        options.SetDuplicateTypeNamesHandler(CopyUseDestination())
        copied_element = ElementTransformUtils.CopyElements(
            src_view, List[ElementId](elements_to_copy), dest_view, None,
            options)

        # matching element graphics overrides and view properties
        for dest, src in zip(copied_element, elements_to_copy):
            dest_view.SetElementOverrides(dest,
                                          src_view.GetElementOverrides(src))
        dest_view.ViewName = src_view.ViewName
        dest_view.Scale = src_view.Scale

        t.Commit()