示例#1
0
        # first we need to find our main stamp with name 'f4'
        block = acad.find_one('blockreference', layout.Block, lambda x: 'f4' in x.EffectiveName)
        if not block:
            continue
        block_pos = APoint(block.InsertionPoint)
        # approximate position of drawing name
        name_pos = block_pos + APoint(-90, 12)
        for mt in acad.iter_objects("mtext", layout.Block):
            if name_pos.distance_to(mt.InsertionPoint) < 5.0:
                text = mt.TextString
                yield text.replace(" \\P", " ").replace("\\P", " ")
                break
    print

def main():
    filename = sys.argv[1] if sys.argv[1:] else 'names.txt'
    output = codecs.open(filename, "w", encoding='utf-8')
    acad = Autocad()
    for doc in acad.app.Documents:
        print(doc.Name)
        output.write(u'%s\n' % ('-' * 50))
        output.write(u"    %s\n" % doc.Name)
        output.write(u'%s\n' % ('-' * 50))
        for drawing_name in iter_drawings_names(acad, doc):
            output.write(u'%s\n' % drawing_name)


if __name__ == "__main__":
    with utils.timing():
        main()
            continue

        total_modules = 0
        row = -1
        while row < table.Rows:
            row += 1
            item_str = mtext_to_string(table.GetText(row, 2))
            item_str = item_str.replace(u'четырехполюсный', u'4-х')\
                               .replace(u'трехполюсный', u'3-х')\
                               .replace(u'двухполюсный', u'2-х')\
                               .replace(u'однополюсный', u'1-но')
            m = re.match('.*(\d)-([xх]|но).*', item_str)
            if m:
                n_modules = int(m.group(1))
                quantity = int(mtext_to_string(table.GetText(row, 3)))
                row += 1  # skip next row
            else:
                m = re.match('(\d)[PР].*', item_str)
                if not m:
                    continue
                n_modules = int(m.group(1))
                quantity = int(mtext_to_string(table.GetText(row - 1, 3)))
            total_modules += n_modules * quantity
        print('%-20s| %s' % (layout.Name, total_modules))


if __name__ == "__main__":
    with timing():
        main()
    input(u'\nPress enter to exit...')