Импорт/экспорт атрибутов и дин.свойств

В теме на dwg.ru LISP для изменения настраиваемых (Custom) параметров динамических блоков помянули мои решения по дин.блокам и по импорту-экспорту атрибутов. И понадобилось объединить их.
Ок, не вопрос. Забирайте, тестируйте :) Пожелания, критика и проч. - либо здесь, либо на dwg.ru. Где больше нравится

dp-att-export-import_1.0
Исправления:
- убрана лишняя регенерация
- исправление ошибки назначения дин.свойств при некоторых условиях
dp-att-export-import_1.1

Забыл одну функцию, сейчас вроде бы работает: dp-att-export-import_1.2

По первому приближению вроде бы работает как надо. Но есть несколько "но":
1. Углы передаются в радианах. Если собираетесь высчитывать в Excel, используйте функцию =ПИ() для преобразования углов
2. Нецелые числа передаются с разделителем "." (точка). Если сделаете вдруг в числе разделитель "," (запятая), я ни за что не отвечаю ;) Пофиксено.

Версия 1.3 - исправлена обработка *.txt файлов.dp-att-export-import_1.3



Комментарии

Есть 10 коммент. к “Импорт/экспорт атрибутов и дин.свойств”
  1. Женя пишет:

    Добрый день! Ой как Вы меня выручили с данным лиспом. Огромное спасибо!
    Один вопрос - как можно изменить lisp, что происходил экспорт не всех атрибутов, а конкретных?

  2. Кулик Алексей aka kpblc пишет:

    Если известны тэги атрибутов, то можно поменять код, фильтруя тэги. Можно вообще извратиться и:
    - получить список всех тэгов атрибутов
    - вывести dcl-диалог, в котором запросить отображаемые в отчете атрибуты
    - выполнить экспорт
    ...
    - импортировать данные.

    Насколько я помню, надо будет менять получение и обработку tag_lst.

  3. Женя пишет:

    "Если известны тэги атрибутов, то можно поменять код, фильтруя тэги." - Тэги известны. А в каких строчках надо провести изменения и на что поменять? Лисп - для меня пока не посильная ноша. Интересно, но страшно))))

  4. Кулик Алексей aka kpblc пишет:

    Ну, в принципе можно как угодно менять код - если что, его можно повторно скачать.
    Советую посмотреть описание функции _kpblc-block-attr-get-pointer-mask и ее вызовы - по идее, этого должно быть достаточно.
    P.S. Прошу прощения, что так долго отвечал - безумно много работы, я ничего не успеваю :(

  5. Виталий пишет:

    Добрый день. Невероятно полезный лисп, очень выручает. Спасибо большое за ваш труд.
    Учитывая мои поверхностные знания/мучения в lisp, подскажите, в какую сторону копать, чтоб доработать lisp по следующим требованиям: формирование файла XML из блоков выделенной области, имеющих среди множества своих атрибутов известные атрибуты tag1, tag2, tag3, причем блоки, не имеющие этих атрибутов не попадали в выборку и соответственно в XML?

    Правильно ли я понял, что для того, чтоб фильтровались и выводились в файл только нужные мне атрибуты, в функции kpblc-block-attr-get-pointer-mask необходимо эти атрибуты прописать в переменной mask? (вместо *, прописать 'tag1,tag2,tag3') однозначно делаю что-то не правильно, т.к. это не работает, но не понимаю почему. Спасибо.

  6. Кулик Алексей aka kpblc пишет:

    Ну по идее работать должно. Просто возвращаются там указатели на атрибуты. Следовательно, надо получить их TagString и TextString, и с ними уже дальше оперировать.

  7. Дарья пишет:

    Добрый день. Большое спасибо за lisp. Всё работало корректно до тех пор пока не начала импортировать данные в атрибут, к которому прикручена таблица выбора свойств блока (для выбора из выпадающего списка значений атрибутов). При вставке данных в такой атрибут ему присваивается значение по умолчанию. Стандартная автокадовская команда attin/ attout вставляет значения в такие атрибуты корректно, но во много раз удобнее работать с табличным форматом *csv, который имеется только в вашем lisp. (Автокад 2021, Windows 10)

  8. Кулик Алексей aka kpblc пишет:

    Доброго дня. Я как-то не понял сути проблемы, прошу прощения. Можно ли файлик глянуть? Его на любой файлообменник (хоть на гуглодиск, хоть на яндекс-диск), а сюда ссылку. Может, в блоке есть одинаковые атрибуты? Или что-то с видимостью?

  9. Дарья пишет:

    Вот файлик. https://yadi.sk/d/LQJcxKLv1mBSXQ Интересует атрибут ФАЗА1. Остальные атрибуты ведут себя корректно. Мне кажется проблема из-за таблицы выбора свойств блока, которая позволяет выбирать значения атрибута из списка. При её удалении всё вставляется корректно.

  10. Кулик Алексей aka kpblc пишет:

    Вы правы - поскольку атрибут связан с таблицей выбора, то надо будет менять не только значение атрибута, но и установленное в поле "ТАБЛИЦА БЛОКОВ1" значение. Честно - я не предусматривал такого развития событий.
    В принципе можно сделать отдельные команды, которые не будет импортировать / экспортировать динамические свойства.

Поделитесь своим мнением


Я не робот.