Dieselexpression в автокад что это такое

Обновлено: 04.07.2024

Строковые выражения DIESEL можно использовать в файлах настройки (НПИ) в качестве дополнительного метода создания макросов.

Эти выражения могут возвращать строковые значения (текстовые строки) в ответ на стандартные команды AutoCAD, процедуры AutoLISP и ObjectARX ® , а также другие макросы. Они также могут возвращать строковые значения в меню, что часто используется для изменения вида и содержимого имен пунктов.

С помощью этой строки можно переключаться из пространства листа в пространство модели и обратно (если для переменной TILEMODE установлено значение 0). Выражение вычисляется прозрачно. Если пропустить специальный символ ^P, который переключает переменную MENUECHO, выражение DIESEL будет отображать в командной строке только вызванную команду.

При использовании DIESEL-выражений в пунктах меню требуется соблюдать формат "$раздел=подменю" , где раздел - буква M , а подменю - требуемое DIESEL-выражение. Зачастую макросы меню проще реализовать на языке AutoLISP.

В следующих примерах показаны два аналогичных по назначению пункта меню, в одном из которых использован DIESEL, а в другом AutoLISP.

DIESEL-выражение в пункте меню:

AutoLISP-выражение в пункте меню:

Оба пункта меню позволяют переключаться из пространства листа в пространство модели и обратно (если TILEMODE равна 0), но выражение DIESEL короче и вычисляется прозрачно, не требуя вызова функции AutoLISP princ . Если в обоих случаях пропустить специальный символ ^ P , который переключает переменную MENUECHO, выражение DIESEL будет отображать в командной строке только вызванную команду, а выражение AutoLISP всю строку выражения.

Так как значение, возвращаемое выражением DIESEL, является текстовой строкой, его можно использовать в ответах на запросы функций AutoLISP get xxx . Это позволяет вычислять в пунктах меню режимы текущего чертежа и возвращать соответствующие значения в AutoLISP-процедуры.

Приведенный в примере ниже фрагмент меню включен в текущее меню.

  • Приведенная в примере ниже AutoLISP-процедура загружена в память.
  • Фрагмент НПИ включается в текущий файл настройки.
  • Ширина и высота вставляемых обозначений составляет одну единицу.
  • Значение переменной DIMSCALE установлено равным масштабу чертежа (т.е. при вычерчивании в масштабе 1 мм = 10 см масштаб равен 100, а при 1 мм = 2 м масштаб равен 2000).

Если загрузить и выполнить приведенный пример процедуры AutoLISP, AutoCAD вставит символ заданного размера в указанную точку. Символы будут выведены на печать с нужным размером (при условии вычерчивания в масштабе, указанном в переменной DIMSCALE).

Процедура на AutoLISP выглядит так:

Примечание Реальный вариант AutoLISP-процедуры должен включать в себя контроль ошибок для проверки корректности введенных пользователем данных.

Выражения DIESEL, приведенные ниже, умножают указанное пользователем значение на текущее значение переменной DIMSCALE и возвращают полученный масштабный коэффициент.

DIESEL-выражения могут также возвращать строковые значения в имена пунктов раскрывающихся меню, что позволяет делать пункты недоступными или каким-либо другим способом менять их внешний вид. При использовании DIESEL-выражения в раскрывающемся меню следует убедиться, что первым символом пункта является $ .

Пусть текущим слоем чертежа является BASE, а в качестве метки используется следующее выражение DIESEL.

В результате данный пункт раскрывающегося меню будет отображать имя текущего слоя (с немедленным обновлением при его смене).

Текущий слой: BASE

Такой же способ можно использовать для интерактивной модификации имен пунктов раскрывающихся меню. Процедура, написанная на AutoLISP, может, например, присвоить текст с нужным именем одной из переменных USERS1-5, а DIESEL-макрос извлечь его и подставить в меню.

Примечание Ширина раскрывающихся и контекстных меню определяется в момент загрузки файла настройки. Имена пунктов, генерируемые или изменяемые с помощью DIESEL-выражений после загрузки меню, будут усекаться до длины строки меню.

Если есть опасность того, что сгенерированные с помощью DIESEL пункты меню будут иметь избыточную длину, проблему можно решить с помощью описанного ниже подхода. Здесь в пункте меню отображаются первые 10 символов текущего значения системной переменной USERS3 (USERS1-5).

Для увеличения ширины меню нельзя добавлять пробелы в конец имен пунктов, т.к. завершающие пробелы игнорируются при загрузке меню. Пробелы, используемые для увеличения ширины меню, должны находиться исключительно внутри DIESEL-выражений.

В следующем примере одно и то же DIESEL-выражение применено и в имени пункта меню, и в его макросе. Таким образом можно, например, ввести в чертеж текущие значения даты и времени.

Макросы на языке DIESEL можно использовать также для установки пометки на пунктах меню и для перевода их в недоступное состояние. Ниже приведен пример отключения вызова команды СТЕРЕТЬ на время действия всех других команд. После завершения их выполнения пункт возвращается в нормальное состояние.

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


Автор:

Функции языка DIESEL позволяют получать сведения о состоянии программы, выполнять вычисления и выводить информацию на экран.

Каждая функция может иметь не более 10 параметров (в число параметров включается и ее имя).

Возвращает сумму чисел знач1 , знач2 , . знач9 .

Например, если значение текущей 3D высоты равно 5, следующее DIESEL-выражение вернет 15.

Возвращает результат вычитания чисел от знач2 до знач9 из знач1 .

Возвращает произведение чисел знач1 , знач2 , …, знач9 .

Возвращает частное от деления числа знач1 на знач2 , …, знач9 .

Если числа знач1 и знач2 равны, возвращает 1; иначе возвращает 0.

Если число знач1 меньше числа знач2 , возвращает 1; иначе возвращает 0.

Следующее выражение получает текущее значение HPANG; если значение меньше значения, сохраненного в системной переменной USERR1, возвращается 1. Если в USERR1 сохранено значение 10,0, а текущая установка HPANG -- 15,5, следующая строка возвращает 0.

Если число знач1 больше чем знач2 , возвращает 1; иначе возвращает 0.

Если числа знач1 и знач2 не равны, возвращает 1; иначе возвращает 0.

Если число знач1 меньше или равно числу знач2 , строка возвращает 1; в противном случае - 0.

Если число знач1 больше или равно числу знач2 , возвращает 1; иначе возвращает 0.

Возвращает результат побитовой логической операции AND (И) над целыми значениями от знач1 до знач9 .

Возвращает значение угла в заданном формате и с указанной точностью.

Заданное значение представляется как угол в формате, определяемом параметром режим , и с указанной точностью (как в аналогичной функции AutoLISP). Если режим и точность отсутствуют, используются значения, заданные в команде ЕДИНИЦЫ.

  • 0 для градусов
  • 1 для градусов/минут/секунд
  • 2 для градов
  • 3 для радианов
  • 4 для топографических единиц

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

Текущая дата по юлианскому календарю, взятая из параметра время (значение которого можно получить, например, из $(getvar,date) ), форматируется согласно параметру представление ). Параметр представление состоит из строк форматов, которые функция заменяет на значения элементов даты и времени. Символы, не интерпретируемые как строки форматов, копируются в результат $(edtime) буквально. Возможные значения строк форматов приводятся в следующей таблице.

  • D — 5
  • DD — 05
  • DDD — суб
  • DDDD — суббота
  • М — 9
  • MO — 09
  • MON — сен
  • MONTH — сентябрь
  • YY — 98
  • YYYY — 1998
  • H — 4
  • HH — 04
  • MM — 53
  • SS — 17
  • MSEC — 506
  • AM/PM — AM
  • am/pm — am
  • A/P — A
  • a/p — a

Фразу AM/PM следует обязательно вводить полностью; если использовать только AM , буква A будет интерпретирована буквально, а буква M вернет номер месяца.

Если в шаблоне представления обнаружен элемент AM/PM , фразы H и HH форматируются согласно 12-часовой шкале (12:00-12:59 1:00-11:59), а не по 24-часовой (00:00-23:59).

В следующем примере текущие значения даты и времени равны значениям из предыдущего. Заметим, что запятая должна быть заключена в кавычки, иначе она будет расценена как разделитель аргументов.

Полученная в результате строка выглядит так:

Суб, 5 сен 1998 – 4:53am

Если аргумент время равен 0, вместо него берутся дата и время входа в самый внешний макрос. Это позволяет исключить затраты времени на множественные вызовы функции $(getvar,date) , и вместе с тем гарантирует, что строки, составленные из нескольких макросов $(edtime) , используют одинаковое время.

Если строки знач1 и знач2 совпадают, возвращает 1; иначе возвращает 0.

Следующее выражение получает имя текущего слоя; если имя совпадает со значением строки, сохраненным в системной переменной USERS1 (USERS1-5), возвращается 1. Допустим, в USERS1 сохранена строка "PART12" и текущий слой носит то же имя.

Прим.: Системные переменные USERS1-5 недоступны в AutoCAD LT.

Полученная в результате строка выглядит так:

Передает строку стр в вычислитель DIESEL-выражений и возвращает результат ее вычисления.

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

Возвращает значение переменной среды перем .

Если переменная с указанным именем не определена, функция возвращает пустую строку.

Возвращает значение системной переменной перем .

Вычисление выражений по условию.

Если условие не равно нулю, вычисляется и возвращается выражение истина . Иначе вычисляется и возвращается выражение ложь . Ветвь, не удовлетворяющая условию , не вычисляется вообще.

Возвращает заданный номером элемент строки-списка.

Подразумевается, что аргумент строка содержит одно или несколько значений, разделенных запятыми (т.е. принятыми для макросов стандартными разделителями). Аргумент номер выбирает одно из значений для возврата (считается, что первый элемент строки имеет номер 0). Функция часто применяется для извлечения координат X, Y или Z точки, полученной из функции $(getvar) .

В приложениях ее можно использовать также для извлечения аргументов, переданных в виде строк-списков в системных переменных USERS1-5.

Прим.: Системные переменные USERS1-5 недоступны в AutoCAD LT.

Вычисляет и возвращает аргумент, выбранный по его номеру .

Если значение номер равно 0, nth возвращает арг0 и т. д. Следует обратить внимание на различия между функциями $(nth) и $(index) : $(nth) возвращает один из аргументов функции, тогда как $(index) извлекает одно из значений из строки с разделением запятыми, переданной как единый аргумент. Аргументы, не выбранные значением номер , не вычисляются.

Возвращает результат побитовой логической операции OR (ИЛИ) над целыми значениями от знач1 до знач9 .

Возвращает вещественное значение в заданном формате и с указанной точностью.

Заданное значение представляется как вещественное число в формате, определяемом параметром режим и с указанной точностью. Если режим и точность отсутствуют, используются значения, заданные в команде ЕДИНИЦЫ.

Возвращает длину строки в символах.

Возвращает подстроку строки , начиная с символа начало , имеющую заданную длину .

Символы в строке нумеруются, начиная с 1. Если длина отсутствует, функция возвращает всю оставшуюся часть строки.

Возвращает строку , преобразованную в верхний регистр по правилам текущей кодовой страницы.

Возвращает результат побитовой логической операции XOR (ИСКЛЮЧАЮЩЕЕ ИЛИ) над целыми значениями от знач1 до знач9 .


Владимир Свет

DIESEL

1. Строка состояния.

DIESEL и AutoCAD LT

Язык программирования DIESEL был впервые введен AutoCAD R12. DIESEL это аббревиатура от Direct Interpretively Evaluated String Expression Language. В вольном переводе можно объяснить как прямая интерпретация содержания текстовой строки. Это язык текстовой строки. Результат обработки строки также выводится в виде строки и может быть воспринят AutoCAD дословно. Если DIESEL выдал слово "Line", AutoCAD поймет это слово дословно, то есть воспроизведет команду Line (Отрезок).

Выражения DIESEL всегда предваряются специальным знаком $. (Этим знаком обозначается американская денежная единица ? доллар). Откройте окно Customize (Адаптация) и посмотрите на запись макроса стандартных команд Copy (Копировать), Move (Перенести) и некоторых других. Здесь можно увидеть типичные выражения DIESEL. Как и в языке LISP, количество открытых и закрытых скобок должно быть равным. Элементы выражения здесь разделяются, в отличие от LISP, запятой, а не пробелом, что похоже на выражение функции калькулятора.

Введем при помощи DIESEL новые данные в строку состояния ? Status Line. Эта строка расположеня в самой нижней части экрана AutoCAD. Ее левая часть по умолчанию не заполнена, поэтому ничего необычного не видно. Этой частью строки управляет системная переменная Modemacro.

Наберите на клавиатуре:

В левой части строки состояния появилась эта надпись, рис.1. Теперь она будет напоминать о ваших обязанностях до тех пор, пока AutoCAD не будет закрыт, даже если вы погуляли со своей собакой. Или, пока вы не напишите в стрoке состояния что-нибудь другое.

Испытаем способности DIESEL в математике - попросим его сложить два числа, 3 и 8.

Вызываем Modemacro

В маленьком окошке в левой части строки появилось число 11. Также уверенно DIESEL может выполнять вычитание, умножение и деление, используя для этого символы, соответственно, " - ", " * ", " / ". Количество аргументов в математических выражениях не должно превышать 9. Этот талант DIESEL может быть использован. А пока продолжим упражнения со стрoкой состояния, потому что из нее можно извлечь определенную пользу.

Рассмотрим одну из функций DIESEL Getvar. Введите в командной строке: В ответ на приглашение наберите:

В левой части строки состояния вы увидите имя текущего текстового стиля. Измените его (падающее меню Format -> Text Style…(Формат->Текстовые стили. ), или введите Style (Стиль) в командной строке). В строке состояния текстовой стиль обновился. Значит, эта строка живая. Она может отражать текущие изменения системных переменных. Добавим сюда и высоту текста. Если используется несколько текстовых стилей и разные высоты текста, удобно иметь на экране текущие установки. Действительно, в панели инструментов Object Properties (Свойства объектов) есть четыре окошка, где показаны текущие значения Layer (Слой), Color (Цвет), Linetype (Тип линии), Lineweight (Вес линии). В панели инструментов Dimension (Размеры) и некоторых других также есть такие окошки, в которых можно контролировать текущие установки. А для текстового стиля такого окошка нет. Но мы его получили в строке состояния.

Вызовите Modemacro

Заполним командную строку:

Пробел между двумя выражениями можно не ставить, но тогда оба значения вызываемых системных переменных, имя текстового стиля и высота текста, сольются. Нажмите <Enter>. В строке состояния теперь вышли текущие значения текстового стиля и высоты текста.

В AutoCAD 2004 есть новая (по сравнению с предыдущими версиями) панель инструментов Styles (Стили), в которой можно контролировать текстовые и размерные стили.

При помощи системной переменной Modemacro можно вложить в строку состояния любую информацию, находящуюся в системных переменных. Чуть позже мы воспользуемся этим неожиданным открытием, а пока вернемся к нашим Homerun.

(Далее читатель продолжает тему, начатую в предыдущих главах на базe сквозного примера под названием Homerun. Мы здесь опустим часть текста. Скажем только, что, используя несложные выражения DIESEL, можно учесть коэффициент масштабирования и, имея в библиотеке всего один внемасштабный элемент, вставлять его в чертежи любого масштаба. В примере есть также полилиния, ширина которой автоматически настраивается под нужный масштаб и текстовой стиль, универсальный для любого масштаба. Ниже будет создан также универсальный размерный стиль. Пользователи AutoCAD LT, где DIESEL работает, получают мощный инструмент для расширения возможностей системы)

2. Перевод объекта в текущий слой

В полной версии AutoCAD, в меню Express есть команда Laycur. Она переводит объекты в текущий слой. Для AutoCAD LT эта команда недоступна, но мы попытаемся найти ей замену. Изменить слой объекту означает изменить его свойство. Для этого служит команда Properties (Окносв), вызывающая соответствующее диалоговое окно. Можно ли воспользоваться командой Properties (Окносв) с командной строки и без вызова диалогового окна? В главе 12 будут показаны несколько способов открытия диалогового окна Properties (Свойства). Один из них это набор на клавиатуре аббревиатуры Ch. (Это сокращение показано на рис. 1.8 и 1.9). Но сокращение Ch произошло от команды Change (Изменить). Есть и такая не часто употребляемая в AutoCAD команда. Набор на клавиатуре Change или, что то же, -Ch вызывает в командной строке (и без выхода диалогового окна!) запрос: Нас интересуют именно свойства, поэтому вводим P. Далее появляются новые опции:

Вот и ключ к решению проблемы. Можно поменять некоторые свойства объекта, в том числе слой, с командной строки и без выхода диалогового окна, а значит провести это изменение автоматически.

Остается ввести имя текущего слоя, которое хранится в системной переменной Clayer. При помощи функции DIESEL Getvar можно извлечь это имя, если воспользоваться выражением:

Код команды, переводящий единичный объект в текущий слой, получается таким: Для перевода ряда объектов в текущий слой можно поступить двояко: Или: (В предыдущих главах достаточно подробно рассказывается, как собираются макрокоманды. Здесь, в отрывке, смысл вышеприведенных кодов могут показаться непонятным. Но введите любую из этих записей в окно "Macro associated with this button" диалогового окна Customize (Адаптация), и новая кнопка будет работать.)

Разница между [6] и [7] заключается в следующем. В первом случае при выделении объекта он тут же переводится в текущий слой, но команда Pan (Пан), если ее необходимо применить для выделения следующего объекта, превращается в менее удобную команду -Pan (-Пан). Подробнее об этом говорилось в разделе 3.2. Кроме того, для выхода из команды, надо нажимать клавишу <Esc>.

Во втором случае команда Pan (Пан) работает традиционно, но выбор объектов следует заканчивать стандартным нажатием ПК мыши.

При извлечении при помощи функции DIESEL Getvar текстовых строк, как в этом случае, есть одно существенное ограничение: в строке не должно быть пробелов. Если в имени слоя, которое является текстовой строкой (String), есть пробел, команда не будет работать. Поэтому надо заменить все пробелы в именах слоев, например, знаком подчеркивания "_". Интересно, что при вводе строк, имеющих пробелы, в стоку состояния при помощи Modemacro, они входят туда без ограничений.

3. Длина дуги

Иногда возникает необходимость узнать длину дуги. В этом случае проще всего обратиться к команде List (Список) или Properties (Окносв). Но что делать, если надо проставить размер длины дуги? Ведь в стандартном наборе панели инструментов Dimension (Размеры) команды для измерения длины дуги нет. Можно поступить таким образом: измерить угол, образованный дугой, при помощи команды Dimangular (Рзмугловой), проставить угловой размер (в градусах) и затем полученный размерный текст отредактировать, заменив на результат измерения, выданный командой List (Список). В принципе, это несложно сделать вручную, для чего даже не надо выписывать на бумажку длину дуги с текстового окна AutoCAD Text Window (Текстовое окно AutoCAD), которое вызывается клавишей <F2>. Достаточно воспользоваться "горячими клавишами" <Ctrl> + <C> и перенести результат в окно редактирования текста, где нажать <Ctrl> + <V>. Здесь может появиться небольшая ручная работа по округлению результата, если не требуется точность, заложенная в диалоговом окне Drawing Units (Чертежные единицы).

  • Каким-то образом получить сведения о длине дуги
  • Ввести эти сведения в окно редактирования размерного текста вместо значения углового размера.

Вторая задача, в свою очередь, порождает сопутствующую: надо добиться того, чтобы окно радактора текста не появлялось на экране. Будем решать задачи по мере их появления.

Итак, где взять длину дуги? Раз она показана в справочном окне AutoCAD Text Window (Текстовое окно AutoCAD) при взятии команды List (Список), значит, хранится в какой-то системной переменной. Эта переменная называется Perimeter. Справочная система Help выдает по этой переменной следующие сведения:

Тип - Real, реальное число. Сохраняет последнее значение периметра, подсчитанное командами Area (Площадь), DBlist (База данных) и List (Список). Оказывается, к дуге, если последняя выполнена полилинией, можно применить команду Area (Площадь) При этом подсчитывается площадь, образованная собственно дугой и условной линией, соединяющей начальную и конечную точку этой дуги, а также длина дуги. Команда List (Список) выдает эти же сведения, также как и команда DBlist, но последняя выдает информацию обо всех объектах чертежа и вызывать ее для получения длины одного только объекта неразумно.

Таким образом, если взять команду List (Список), выделив искомую дугу, но превращенную предварительно в полилинию, в системную переменную Perimeter зайдет значение ее длины. Отсюда несложно создать логику кода:

  1. Превращение дуги в полилинию командой Pedit (Полред)
  2. Команда List (Cписок), или Area (Площадь)
  3. Команда Dimangular (Рзмугловой)
  4. Редактирование размерного текста
  5. Возврзщение полилинии в дугу
  • А если дуга уже была выполнена полилинией? Тогда действие по п.5 несанкционировано превратит ее в простую дугу.
  • Команда List (Список) вызовет текстовое окно AutoCAD Text Window (Текстовое окно AutoCAD), которое будет мелькать на экране, раздражая глаз.
  • При редактировании размерного текста диалоговое окно редактора текста не должно выводиться на экран.

Последнее препятствие обойти несложно: команда Dimangular (Рзмугловой) имеет опцию Text (Текст) применение которой позволяет работать в командной строке, без вывода на экран редактора текста. Мелькание окна AutoCAD Text Window (Текстовое окно AutoCAD) также можно решить, если заглянуть вперед, в раздел 15.5. А как же быть с полинией? Не создавать же две отдельные кнопки, одну для измерения простых дуг, а другую для дуг, выполненных полилинией. Существует функция под названием If, перевод которой "если". Логика этой функции, применительно к нашей задаче, такова: если это простая дуга, надо перевести ее в полилинию, измерить и затем возвратить обратно в дугу. Если это полилиния, измерить ее и оставить таковой. Задача серьезно усложняется и, чтобы не залезать глубоко в дебри языков программирования, попробуем поискать другое решение. Не найдется ли другой команды, кроме List (Список) или Area (Площадь) выдающей длину дуги и независимой от того, является ли дуга полилинией или нет? Система помощи Help, увы, помочь не смогла. Из предложенных ею трех команд ни одна не подошла. Но чертежник-практик может припомнтиь, что при применении команды Lengthen (Увеличить), в командной строке появляется измеренное значение длины объекта. Ну конечно, если длину объекта надо изменить, то предварительно пользователь имеет право увидеть ее существующее значение! Проверьте команду на примере простой дуги и дуги полилинии. В обоих случаях в командой строке есть текущая длина дуги. Если команду прервать клавишей <Enter> или , значение длины дуги все равно успеет войти в системную переменную Perimeter. И не надо усложнять задачу и вводить функцию If (Если). А вот система помощи Help подкачала. К перечню из трех команд, после которых меняется значение системной переменной Perimeter, следовало бы добавить и четвертую команду Lengthen (Удлинить). Не помешало бы и примечание, что для команд Area, DBlist или List надо, чтобы измеряемый объект был полилинией (или сплайном), а для команды Lengthen безразлично, полилиния это, или простая линия, или дуга.

Может быть, в Autodesk прочитают эту книгу и исправят оплошность к выходу следующей версии.

  1. Команда Lengthen (Удлинить). После выделения дуги, команда прерывается нажатием
  2. Команда Dimangular (Рзмугловий), в которой на запрос выбора объекта можно ввести символ @ (последняя, использованная командой Lengthen (Удлинить), точка). Здесь же вводится опция Text (Текст), позволяющая вписать значение нового текста в командной строке без вызова редактора текста
  3. Ввод нового текста, полученного из системной переменной Perimeter, при помощи известной функции DIESEL Getvar.

Опять препятствие. Но загрублять результат мы уже научились. В разделе 8.7 была рассмотрена….


Новые возможности AutoCAD 2008 - действительно взаимные связи между AutoCAD и Excel.

Много лет мы имеем возможность вставлять таблицы MS Excel в AutoCAD как связанные OLE-объекты так, что при обновлении таблицы Excel обновляется и OLE-объект. Но OLE-объекты ограничены по своим возможностям и не являются реальными объектами AutoCAD. Вы можете масштабировать, вращать и перемещать объекты OLE как единое целое, но редактирование их содержимого в AutoCAD невозможно, и получение желательной высоты текста ,к примеру, представляет собой довольно сложную задачу, связанную с подбором. С появлением в AutoCAD подержки таблиц появилась надежда что мы сможем вставлять в чертеж файлы Excel как таблицы AutoCAD.

Но, к сожалению, долгое время эта возможность была реализована не в полной мере. После вставки таблицы не сохраняли связь с исходным файлом Excel, так что если файл Excel изменялся, вам приходилось бы удалять ранее вставленную таблицу AutoCAD и повторно вставлять обновленный файл Excel. Этот процесс можно было назвать утомительным в лучшем случае.

И наконец AutoCAD 2008 предоставил нам поддержку действительно связанных таблиц в AutoCAD. Вы можете вставлять таблицы Excel в AutoCAD как табличные объекты, модифицировать или обновить их в Excel, и они обновляться в AutoCAD! Далее - больше. Вы можете обновлять эти же самые таблицы внутри AutoCAD и они обновляться в связанных таблицах Excel также (если вы хотите это, конечно). Давайте рассморим поддержку таблиц в AutoCAD 2008 более подробно.

В открытой в Excel электронной таблице выберем с помощью мыши ячейки, которые мы хотим переместить в AutoCAD и скопируем эти ячейки в буфер обмена. Теперь мы готовы вставить электронную таблицу в AutoCAD как табличный объект AutoCAD.

Не используйте стандартную команду Paste, так как это возвратит нас к меньше-интеллектуальному процесс прошлого. Необходимо использовать команду Paste Special, находящуюся в меню Edit. Выберите опцию Paste Link. Для этой опции доступны два параметра (см. рисунок ниже): Microsoft Excel Worksheet - вставляет файл Excel как объект OLE (что не очень желательно), и AutoCAD Entities - вставляет файл Excel как объект AutoCAD (в этом случае мы получаем таблицу AutoCAD, связанную с таблицей Excel).



Используйте опцию Paste Special для того чтобы
вставить связанный файл Excel как табличный объект AutoCAD.

Для чтобы выполнить ту же самую задачу вы также можете использовать новую команду Datalink. Эта команда не содержится ни в каких меню, но Вы можете найти ее в Dashboard в панели управления Таблиц Tables. Тут же вы обнаружите новый Datalink-менеджера. Просто выберите опцию чтобы создать новый канал связи с Excel, и вы выполните ту же задачу (см рис. ниже).



Команда Datalink находится в Dashboard на панели Tables control.



Вы также можете использовать команду Datalink
чтобы вставлять связанные файлы Excel.

Хорошим подходом является создание связи всего листа таблицы в пределах файла. В этом случае нет необходимости вручную выделить требуемые ячейки. После назначения имени вашему каналу связи, у вас будет запрошен файл Excel. Здесь, Вы можете связать с таблицей AutoCAD определенный лист или явный диапазон ячеек в пределах электронной таблицы.



После указания имени для канала связи, выберите файл Excel, который вы желаете связать.

Небольшая стрелка в нижнем правом углу диалогового окна, показанного на рисунке выше, открывает доступ к множеству полезных опций. Ни одна из этих опций не отображается когда вы используете простую методику Paste Special, описанную ранее, но вы можете обратиться к этим опциям в любом время позже.



Выбор кнопки в виде направленной вправо стрелки предоставляет дополнительные опции для организации связи между таблицами.

Среди опций, доступ к которым открывает "волшебная стрелка" можно отметить следующие:
- преобразование типов данных в текст AutoCAD или сохранение формульной информации,
- разрешение или запрет изменения данных в электронных таблицах Excel из AutoCAD.

По умолчанию, связанные таблицы вставляются заблокированными, т.е. вы можете изменить файл Excel и обновить после этого информацию в AutoCAD, но не наоборот. Такое значение по умолчанию предохраняет CAD-проектировщиков от случайного изменения файл Excel. Вы должны выбрать опцию "Allow writing to source file" прежде, чем Вы сможете записывать данные в оригинальный файл Excel.

Важной также является информация, размещенная в подразделе "Cell formatting". В большинстве случаев вы используете форматирование таблицы в Excel, чтобы определять, как таблица должна отображаться в AutoCAD (иначе используется текущий табличный стиль). В дальнейшем вы однако можете захотеть сделать некоторые модификации в отображении таблицы в AutoCAD (высоту текста, границы, и т.д.), и сохранить эти изменения в дальнейшем. В этом случае выберите опцию "Start with Excel formatting, do not update".



AutoCAD сообщает, когда данные связанных документов обновились.

Если вы желаете обновить информацию в AutoCAD из связанной таблицы, просто кликните мышью по ссылке, показанной на рисунке выше.

Что делать, если вы хотите изменить электронную таблицу Excel из AutoCAD? Если ваша таблица все еще заблокирована, что вы можете проверить, перемещаясь с ячейки на ячейку, просто выберите ячейки, которые вы хотите изменить и затем выберите опцию "Unlocked" из контекстного меню.



Выберите Unlocked из контекстного меню,
если вы хотите сделать изменения в исходном файле.

После завершения изменений в таблице AutoCAD, вы можете обновить и связанную электронную таблицу Excel. Подсветите требуемый файл и выберите "Write Data Links to External Source." Желательно перед выполнением этой операции закрыть Excel чтобы перестраховаться.



Выберите "Write Data Links to External Source" из контекстного меню
чтобы внести изменения в связанную электронную таблицу Excel.

Читайте также: