Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создание САПР на базе продуктов Autodesk


Информационный Канал Subscribe.Ru


Информационная рассылка сайта CadDev.Narod.Ru

(с) 2004, Калугин Сергей Сергеевич

Сегодня в выпуске

Обновление на сайте, список претендентов!
Создание приложений для AutoCAD. Использование расширенных данных.
Пример использования расширенных данных на Object Pascal (Delphi).

Обновление на сайте, список претендентов

Обновление на сайте http://caddev.narod.ru!

Обновлена страничка «Лекции»
С неё можно скачать материалы, которые были розданы на лекции по основам параметрического проектирования.

Обновлен список претендентов на «автомат»

Список претендентов (по состоянию на 02/03/2004)

АВ -01

  1. Котова Е.
  2. Демчишин А.
  3. Пашкевич А.
  4. Токарев А.
  5. Сидоренко А.
  6. Панас Ю.
  7. Буфан П.
  8. Беренок Н.
  9. Федотов А.
  10. Шараевский Т.
  11. Пацера Е.
  12. *Мандес-Монсанто О.
  13. Савельева А.
  14. Свинарский А.
  15. *Осецкий В.
  16. *Фжевский А.

АВ-02

  1. Падерно А.
  2. Сегеда Д.
  3. *Ралло С.
  4. *Хижняк Р.
  5. Бондарчук Ю.
  6. *Пукай К.
  7. Костюченко И.
  8. Устыменко Н.
  9. Должиков Г.
  10. Сидорка А.
  11. Чернышов А.
  12. Мирошник Д.
  13. Мирошник А.
  14. Цибульский Е.
  15. Степанчук А.
  16. *Гольденберг
  17. *Лазебников
  18. *Шурбований

АВ-03

  1. Перерва В.
  2. Давыдов Д.
  3. Мищенко В.
  4. Кононенко А.
  5. Кульчицкий А.
  6. Куклев Е.
  7. Солодкий Д.
  8. Чечель А.
  9. Подрезов А.
  10. Иванов А.
  11. Осипчук С.
  12. Гармаш К.
  13. Бугаев В.
  14. Елисеев Е.
  15. *Перерва И
  16. *Тищенко А.
  17. *Ткач П.
  18. *Цукренко Ю.

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

Использование расширенных данных

К любому примитиву чертежа можно добавлять расширенные данные, т.е. текстовые или числовые данные, которые желательно хранить вместе с геометрией (например, марки материалов, наименования узлов, секций и т.п.). Обычно наличие такой информации позволяет разрабатывать программы связи с базами данных. Расширенные данные связываются с именем определенного приложения. У одного графического примитива могут быть данные нескольких приложений, которые располагаются последовательно в определенной структуре.

В том случае, когда расширенные данные присоединены к примитиву, то в базе чертежа они следуют за обычными данными. Для расширенных данных отведено пространство (нужно вспомнить DXF-коды) начиная с 1000 по 1071.

Строковые константы
1000. Строковые константы в расширенных данных могут быть длиной не более 255 знаков (256-й знак зарезервирован под символ с кодом 0).

Имя приложения
1001 (тоже строковая константа). Используется только для указания имени приложения, длиной не более 31 знака (если код 1001 попадает внутрь списка, организуемого с помощью DXF-кодов 1002, то он интерпретируется как обычная строковая константа, а не имя приложения). Имя приложения должно состоять только из латинских букв, цифр и символов $, -, _.

Название слоя
1003. Название слоя, с которым связываются расширенные данные.

Метка в базе чертежа
1005. Метка объекта в базе чертежа

3D точка
1010. Три вещественных числа, обозначающие координату точки в 3-х мерном пространстве.

Вещественное число
1040. Вещественное число.

Короткое целое число
1070. 16-битовое целое число (со знаком или без знака).

Длинное целое число
1071. 32-битовое целое число. Если присвоить значение в группе 1071 как короткое целое число или вещественное число, то оно будет преобразовано в длинное целое число. Если присвоит, например строковую константу, то оно преобразуется в 32-битный нуль (0L).
ObjectARX всегда трактует группы 1071 как длинные целые.

Существуют и другие группы специальных расширенных данных:

Управляющая строка
1002. Расширенными данными можно управлять используя скобки "{" и "}". С помощью группы 1002 можно формировать в расширенных данных списковые структуры. Они должны начинаться открывающей скобкой с кодом 1002, затем должны идти данные, включаемые в список, а закрывающая скобка с кодом 1002 завершает оформление списка.

Двоичные данные
1004. Двоичные данные длиной не более 127 байтов. Обрабатываются только в ObjectARX.

3-х мерная точка положения в МСК
1011. Трехмерная точка интерпретируется как положение в МСК. Такая точка перемещается, масштабируется, поворачивается, и симметрируется одновременно с родительским примитивом рисунка.

3-х мерная точка перемещения
1012. Такая точка не перемещается, не масштабируется и не растягивается одновременно с родительским примитивом, но участвует вместе с ним в операциях масштабирования, поворота и симметрирования.

3-х мерная точка направления
1013. Трехмерная точка интерпретируется как направление в МСК. Учавствует в операциях поворота и симметрирования. Вектор с координатами, взятыми из группы с кодом 1013, является нормализованным, т.е. единичной длинны.

Расстояние
1041. Вещественное число, интерпретируемое как расстояние. Оно масштабируется одновременно с родительским примитивом.

Коэффициент масштаба
1042. Вещественное число, интерпретируемое как коэффициент масштаба. Масштабируется одновременно с родительским примитивом.

Пример использования расширенных данных на Object Pascal (Delphi).

function AcPoint(x, y, z: double) : OleVariant;
begin
   Result := VarArrayCreate([0, 2], varDouble);
   Result[0] := x; Result[1] := y; Result[2] := z;
end;

procedure CadDev_XDataExample;
const
   appid = 'MYAPPID';
var
   AcadApplication, Objects, vaPoint, vaType, vaData: OleVariant;
   i : integer;
begin
   
   // Получаем ссылку на откытый AutoCAD 2004 или запускаем новый
   AcadApplication := GetActiveOleObject('AutoCAD.Application.16');

   // Получаем множество выбранных объектов
   Objects := AcadApplication.ActiveDocument.SelectionSets.Add('XDATAEXAMPLE');
   Objects.SelectOnScreen;

   // Регестрируем приложение
   AcadApplication.ActiveDocument.RegisteredApplications.Add(appid);

   // Создаем гркппы кодов и массивы данных
   vaType := VarArrayCreate([0, 4], varSmallInt);
   vaData := VarArrayCreate([0, 4], varVariant);

   // Создаем вариантый массив 3D точки
   vaPoint := AcPoint(4.0, 6.0, 0.0);

   // Заполняем массив
   vaType[0] := 1001; // Название приложения должно быть вначале
   vaData[0] := appid;

   vaType[1] := 1070; // Целочисленное
   vaData[1] := 99;

   vaType[2] := 1040; // Вещественное
   vaData[2] := 2.5;

   vaType[3] := 1000; // Строка
   vaData[3] := 'Здавствуй яблочко!';

   vaType[4] := 1010; // 3D точка
   vaData[4] := vaPoint;

   // К каждому объекту в выбранных объктах
   // присоеденим расширенные данные XData


   For i := 0 to Objects.Count - 1 do
      Objects.Item(i).SetXData(vaType, vaData);

   Objects.Delete;

end;


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное