Пример #1
0
    def get_editable_lines(self):
        """Return list of lines for style convertping."""
        mc_filter = \
            DB.ElementMulticategoryFilter(
                List[DB.BuiltInCategory](
                    [
                        DB.BuiltInCategory.OST_Lines,
                        DB.BuiltInCategory.OST_SketchLines
                    ])
                )

        tline_cl = DB.FilteredElementCollector(revit.doc)\
                    .WherePasses(mc_filter)\
                    .WhereElementIsNotElementType()\
                    .ToElements()

        lines = []
        conv_detlines = self.convert_detaillines
        conv_modlines = self.convert_modellines
        conv_skhlines = self.convert_sketchlines
        for tline in tline_cl:
            # skip grouped lines
            if tline.GroupId is None \
                    or tline.GroupId == DB.ElementId.InvalidElementId:
                # sketchlines could be detail or model so process first
                # but only detail sketchlines are editable
                if revit.query.is_detail_curve(tline):
                    if revit.query.is_sketch_curve(tline):
                        if not conv_skhlines:
                            continue
                    elif not conv_detlines:
                        continue

                elif revit.query.is_model_curve(tline) and not conv_modlines:
                    continue

                lines.append(tline)

        return lines
Пример #2
0
    cl = DB.FilteredElementCollector(revit.doc).OfClass(DB.LinePatternElement)
    for i in cl:
        print(i.Name)

elif selected_switch == 'Line Styles':
    c = revit.doc.Settings.Categories.get_Item(DB.BuiltInCategory.OST_Lines)
    subcats = c.SubCategories

    for lineStyle in subcats:
        print("STYLE NAME: {0} ID: {1}".format(lineStyle.Name.ljust(40),
                                               lineStyle.Id.ToString()))

elif selected_switch == 'Model / Detail / Sketch Lines':
    cat_list = List[DB.BuiltInCategory]([DB.BuiltInCategory.OST_Lines,
                                         DB.BuiltInCategory.OST_SketchLines])
    elfilter = DB.ElementMulticategoryFilter(cat_list)
    cl = DB.FilteredElementCollector(revit.doc)
    cllines = cl.WherePasses(elfilter)\
                .WhereElementIsNotElementType().ToElements()

    for c in cllines:
        print('{0:<10} {1:<25}{2:<8} {3:<15} {4:<20}'
              .format(c.Id,
                      c.GetType().Name,
                      c.LineStyle.Id,
                      c.LineStyle.Name,
                      c.Category.Name))

elif selected_switch == 'Project Parameters':
    pm = revit.doc.ParameterBindings
    it = pm.ForwardIterator()
Пример #3
0
    fromStyle = fromStyleLine.LineStyle

    toStyleLine = \
        revit.pick_element('Pick a line with the interfacetypes style.')

    toStyle = toStyleLine.LineStyle

    return fromStyle, toStyle


try:
    fromStyle, toStyle = get_styles()

    line_list = []

    elfilter = DB.ElementMulticategoryFilter(List[DB.BuiltInCategory](
        [DB.BuiltInCategory.OST_Lines, DB.BuiltInCategory.OST_SketchLines]))

    detail_lines = DB.FilteredElementCollector(revit.doc)\
                     .WherePasses(elfilter)\
                     .WhereElementIsNotElementType()\
                     .ToElements()

    for detail_line in detail_lines:
        if detail_line.LineStyle.Name == fromStyle.Name:
            line_list.append(detail_line)

    with revit.Transaction('Swap Line Styles'):
        for line in line_list:
            if line.Category.Name != '<Sketch>' \
                    and line.GroupId < DB.ElementId(0):
                line.LineStyle = toStyle
Пример #4
0
    outputs.write(message)
    outputs.write('\n')


# COLLECT CATS - METHOD 1
report('Finding Line Styles using Method 1...')
linesCat = revit.doc.Settings.Categories.get_Item("Lines")
for cat in linesCat.SubCategories:
    if 'SW' == cat.Name[:2]:
        catsToDelete.append(cat)

# COLLECT CATS - METHOD 2
report('Finding Line Styles using Method 2...')
emcfilter = \
    DB.ElementMulticategoryFilter(
        List[DB.BuiltInCategory]([DB.BuiltInCategory.OST_Lines])
        )

cllines = list(
    DB.FilteredElementCollector(revit.doc).WherePasses(
        emcfilter).WhereElementIsNotElementType().ToElements())

if cllines:
    styleIds = cllines[0].GetLineStyleIds()

    for styleId in styleIds:
        style = revit.doc.GetElement(styleId)
        cat = style.GraphicsStyleCategory
        if 'SW' == cat.Name[:2]:
            catsToDelete.append(cat)
Пример #5
0
    forms.check_graphicalview(revit.active_view, exitscript=True)

sel_cat_ids = set()

# analyze selection
selection = revit.get_selection()
for el in selection:
    try:
        sel_cat_ids.add(el.Category.Id)
    except Exception:
        continue

if not sel_cat_ids:
    forms.alert("No suitable elements selected", exitscript=True)

mc_filter = DB.ElementMulticategoryFilter(List[DB.ElementId](sel_cat_ids))

# collect from whole model
if __shiftclick__:
    cl = DB.FilteredElementCollector(revit.doc)\
        .WhereElementIsNotElementType()
# collect from a view
else:
    cl = DB.FilteredElementCollector(revit.doc, revit.active_view.Id)\
        .WhereElementIsNotElementType()

match_list = cl.WherePasses(mc_filter).ToElementIds()

selection.set_to(match_list)
revit.uidoc.RefreshActiveView()