пятница, 10 ноября 2017 г.

Меняем формат поля Площадь в AutoCAD

Добрый день!

Поступил вопрос от читателя:
Добрый день Андрей!
При проставлении площадей в автокаде с помощью полей приходится вводить коэффициент преобразования ( например для метров - 1e-006) и каждый раз заново. Есть ли возможность сохранения введенных значений Conversion factor(а), чтобы их не приходилось вводить заново каждый раз!
Заранее спасибо Вам!
С уважением,
Максим
Действительно, это очень неудобно - каждый раз вводить коэффициент преобразования для отображения площади в квадратным метрах, а не миллиметрах (как по-умолчанию).

Задача: необходимо создать новый или изменить существующий формат поля Площадь, который позволяет наносить значение площади в метрах и добавлять к значению надпись кв.м.




1. Закрываем все текущие сеансы AutoCAD


Если AutoCAD запущен на рабочем месте, то закройте его.

2. Ищем файл AcFields.fdc 


В AutoCAD все описания и настройки полей хранятся в файле AcFields.fdc

Найти этот файл можно в каталоге Support. Например, если у вас AutoCAD 2015 RUS, то путь к файлу будет следующим \Documents and Settings\[Пользователь]\Application Data\Autodesk\Autocad 2015\R20.0\RUS\Support

3. Сохраняем резервную копию файла AcFields.fdc


Подстрахуйтесь, лишним не будет.

4. Отрываем файл AcFields.fdc и ищем строку FormatType name="Area"


В итоге находим блок


5. Редактируем файл


Если вы хотите изменить существующий формат "Десятичный", то вам нужно исправить формат "473".

Для этого ищем блок


И заменяем формат FormatString на %lu2%pr3%ps[, кв.м.]%ct8[1e-006]


После изменения блок должен выглядеть вот так (красным выделена измененная часть)

 

6. Сохраняем файл и запускаем AutoCAD 

Проверяем работу. Вставляем поле Площадь и выбираем формат Десятичный. Обратите внимание на Образец


Готово! Можете пользоваться.


Однако, пытливый читатель может захотеть добавить свой формат поля, а не менять существующий. Это сделать можно, достаточно добавить в блок FormatType name="Area" новый блок (выделен красным)


В этом случае в списке форматов появится еще один доступный формат.

Если вы хотите самостоятельно записать параметры формата, то вот расшифровка нужных ключей:
%lu2 - децимальные единицы
%pr3 - точность (3 - три знака после запятой)
%ps[Префикс, Суффикс] - префикс и суффикс
%ct8[0.1] - коэффициент преобразования


UPD: Если вы хотите в поле площади поменять разделитель дробной части (заменить точку на запятую или пробел), то в сроку формата необходимо добавить код разделителя %ds44, тогда формат FormatString будет выглядеть так

%lu2%pr3%ps[, кв.м.]%ds44%ct8[1e-006]

В файле это должно выглядеть так


Доступные коды разделителей:
%ds46 - точка (установлен по умолчанию, его можно не указывать)
%ds44 - запятая
%ds32 - пробел


UPD2: Если вы также хотите изменить формат для поля "Длина", то в том же файле AcFields.fdc найдите строку FormatType name="LUnits" и исправьте формат существующего поля или добавьте новый, в котором будет строка

%lu2%pr3%ps[, м]%ct8[1e-003]

В файле это должно выглядеть так


В этом случае поле длины будет выводиться в виде "0.001 м".


С остальными приемами работы в AutoCAD вы можете познакомиться на этой странице блога.

С уважением, Андрей

Если вы получили ответ на свой вопрос и хотите поддержать проект материально - внизу страницы для этого есть специальная форма.

21 комментарий:

  1. Благодарю. Полезное улучшение!

    ОтветитьУдалить
  2. Спасибо!
    Удивлен, что мало комментариев. Урок очень полезный. Часто слышишь: "Автокад площади не считает". А это не так и поля тому подтверждение. Есть конечно лиспы (Ptlb ; ATTSS и др.), за которые низкий поклон и благодарность их создателям, но и про "штатные" средства программы не стоит забывать. У меня все получилось, но префикс и суффикс я вводить не стал.


    %lu2%pr2%ct8[1e-006]

    Интересно, а для Формулы - Сумма какой параметр нужно найти аналогичный FormatType name="Area", чтобы установить точность и коэффициент преобразования?
    И еще, если можно вопрос, название формата так и будет %lu2%pr2%ct8[1e-006] или возможно его заменить на пользовательское название по типу "Decimal" или др.
    Спасибо!

    ОтветитьУдалить
    Ответы
    1. 1. Для формул таких настроек нет. Или я не знаю о их существовании
      2. Имя формата считывается из AcFieldRes.dll по цифровому коду. DLL править я бы не хотел. Можете заменить код 478 на 473, тогда имя будет отображаться как "Десятичные"

      Удалить
    2. Спасибо за информацию! Все понятно. Удачи!

      Удалить
  3. Прошу прощения, не прошло, как настроился формат, но может и не важно, а вот для формулы в полях можно уточнить где установить установить точность и коэффициент преобразования?
    Спасибо!

    ОтветитьУдалить
  4. Добрый день !!! все сделал как вы описали в статье и все работает, но только почему-то не на площадь срабатывает , а на длину
    Если у ВАС есть время, подскажите пожалуйста в чем причина
    Автокад 2016, 2017 (пробовал и там и там)

    ОтветитьУдалить
    Ответы
    1. Да, вам уже верно ответили. Нужно выбрать для правки ветку FormatType name="Area"

      Удалить
  5. Добрый день!
    Все работает для площади, параметр FormatType name="Area".
    А вот с Формулой и ее опциями пока не идет. По идее должно сработать, но никак не могу найти нужный параметр в файле AcFields.fdc.

    ОтветитьУдалить
    Ответы
    1. Спасибо Макс, "а слона то я и не приметил"

      Удалить
  6. Добрый день!
    А есть возможность продолжения данной темы и подсказать (если это возможно), что нужно изменить для формата поля "Длина", чтобы не вводить 1e-003. Или все возможно только для площади? Площадь и Длина - самые "ходовые" форматы. Пробовал для Длины по аналогии с Площадью, но увы. Может для Длины есть решение, чтобы работу с "основными" форматами полей более упростить.

    ОтветитьУдалить
    Ответы
    1. Добрый день! Посмотрю, с ходу не могу сказать

      Удалить
    2. Спасибо! Если будет возможность рассмотреть данный вопрос (по аналогии с форматом "Площадь"), то было бы очень хорошо. С ходу конечно не надо, по наступлению временной возможности. Вы и так очень много дали полезной информации и решений для пользователей Автокада. А написать (даже самую маленькую статью) это труд и подчас весьма не малый.

      Удалить
    3. Добрый день! Добавил в конец статьи. Если кратко, то в том же файле найдите строку FormatType name="LUnits" и исправьте формат существующего поля или добавьте новый, в котором будет строка %lu2%pr3%ps[, м]%ct8[1e-003]

      Удалить
    4. Спасибо! Все работает! Добавил %lu2%pr2%ct8[1e-003] без префиксов и суффиксов в файл AcFields.fdc.
      Для площади создавал свой формат поля, а для длины добавил в существующий (в "Decimal").Хорошая получилась тема. Первый вопрос (начало темы) изначально задавал про площадь , а теперь и с длиной вообще отлично все закруглилось и связалось. Можно даже хоть снова на главную страницу тему вынести для пользователей.
      Андрей спасибо Вам огромное, удачи и добра!

      Удалить
  7. Андрей, спасибо большое!

    А не подскажете, как заменить точку на запятую в полях (подменю Дополнительный формат, там же, где коэффициент преобразования) ?

    ОтветитьУдалить
    Ответы
    1. Это легко. Нужно в строку добавить код разделителя %ds44.

      В итоге формат должен быть таким %lu2%pr3%ps[, кв.м.]%ds44%ct8[1e-006]

      Удалить
    2. Добавил подробную инструкцию в конец статьи

      Удалить
  8. Добрый день!
    Уважаемый Андрей, может Вы знаете как решить данный вопрос:
    При работе с полями в таблице возможно суммировать, вычитать, умножать и т.п. ячейки таблицы и получать в другой ячейке конечный результат. Причем! при изменении данных в ячейках автоматически меняется и конечный результат. Пользуясь Формулой (имя поля) тоже можно производить вычисления, причем элементами для вычисления могут служить поля. Например 2*10=20, где 2 ,например, площадь некоего объекта, а 10, например, длина другого объекта. И эти величины - поля в тексте и поменяются при изменении самих объектов после, например, реген. Но вот вопрос, конечная величина 20 не изменится, как меняется конечное число в ячейке таблицы. Возможно-ли при вычислении с помощью Формулы сделать так чтобы конечное поле вычисленное с помощью выражения в Формуле менялось сообразно изменению полей непосредственно в самом выражении. В общем: 2*10=20 ,изменилась площадь и длина объектов - стало после реген: 3*11, и автоматически после реген вместо 20 стало 33, по аналогии как в таблицах Автокад. Может есть решение. Спасибо.

    ОтветитьУдалить