Главная » Delphi, OLE, САПР » Раздел и объекты спецификации – КОМПАС в DELPHI

0

Интерфейс ksSpecification

Работа со спецификацией осуществляется посредством интерфейса ksSpecification. Получить его можно с помощью метода  GetSpecification() интерфейса ksSpcDocument.

Интерфейс ksSpecification не имеет свойств. Рассматривать все его методы мы не будем. В этой и следующей главе мы рассмотрим лишь основные его методы, используемые при работе со спецификациями.

Создание объекта и раздела спецификации

Создание раздела спецификации практически ничем не отличается от создания объекта спецификации. Существует два вида объектов спецификации: базовый и вспомогательный.

Согласно     документации     КОМПАС:     «для     базовых     объектов

предусмотрена возможность автоматического заполнения колонок, сортировки внутри раздела, подключения графических объектов из сборочного чертежа, отключения показа объекта в таблице и т.д.»

В отношении вспомогательных объектов там  же сказано буквально следующее: «в отличие от базового для вспомогательного объекта не предусмотрены сервисные функции, выполнение которых обеспечивает спецификация. Вспомогательные объекты не сортируются автоматически, не учитываются при расчете и простановке позиций».

Хорошо, но при чем тут раздел спецификации? Дело в том, что раздел спецификации создается автоматически при создании какого-либо объекта внутри этого раздела. То есть, для того, чтобы создать раздел спецификации нам нужно создать объект внутри этого раздела.

Для создания объекта спецификации (как базового, так и вспомогательного) используется метод ksSpcObjectCreate интерфейса ksSpecification. Вот прототип этого метода.

ksSpcObjectCreate(

const nameLib: WideString;//имя библиотеки стилей styleNumb: Integer;      //номер стиля спецификации secNumb: Integer;         //номер раздела

subSecNumb: Integer;     //номер подраздела

numb: Double;             //зависит от типа объекта typeObj: Smallint        //тип создаваемого объекта

): Integer

Теперь подробнее.

Имя библиотеки стилей представляет собой полный путь к библиотеке стилей graphic.lyt.

Номер стиля спецификации задает ее внешний вид. Для того чтобы лучше понять, что это за номер сделайте следующее: откройте в программе

КОМПАС  любую спецификацию  и  откройте  пункт  меню  «Сервис/Стили спецификаций». При этом перед вами появится окно как на рисунке ниже.

Видите колонку «Номер», в левой части окна? В параметре styleNumb указывается именно этот номер.

secNumb  определяет  номер  создаваемого  раздела.  В  таблице  ниже представлены номера всех разделов спецификации.

Номер раздела1

Наименование раздела

5

Документация

10

Комплексы

15

Сборочные единицы

20

Детали

25

Стандартные изделия

30

Прочие изделия

35

Материалы

40

Комплекты

При   попытке   создания   объекта   с   неверным   номером   раздела, выводится сообщение об ошибке1:

1 Данные номера не представлены в документации КОМПАС и получены мною эксперименальным образом. Хотя они совпадают на КОМПАС 8 и КОМПАС 11, гарантировать, что они совпадут и на других версиях КОМПАСа я не могу.

subSecNumb – номер подраздела. Используется для организации иерархии в спецификации. Мы будем указывать в нем значение нуль.

numb – при создании базового объекта, в нем указывается тип атрибута. Поскольку мы не используем атрибуты, то мы в этом параметре будем указывать значение нуль. При создании вспомогательного объекта в

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

typeObj – тип создаваемого объекта. Если значение данного параметра равно нуль, то создается базовый объект, если же значение данного параметра равно единице, то создается вспомогательный объект (о нем в следующей главе).

В случае успеха метод ksSpcObjectCreate возвращает значение 1.

После того как объект (базовый или вспомогательный) создан, он автоматически открывается для редактирования. Для того чтобы закрыть его, используется метод ksSpcObjectEnd() интерфейса ksSpecification. Данный метод не имеет входных параметров. В случае успеха он возвращает числовой идентификатор созданного объекта.

Пример

Ниже приводится ключевой фрагмент исходного текста программы, демонстрирующей создание разделов спецификации.

var

kompas: KompasObject; SpcDocument: ksSpcDocument; Specification: ksSpecification; str: string;

……………………

Begin

……………………

//Формируем путь к бибилиотеке стилей

str:=kompas.ksSystemPath(0)+’\graphic.lyt';

//Получаем интерфейс ksSpecification

Specification:=ksSpecification(SpcDocument.GetSpecification());

//Cоздаем раздел "Документация" Specification.ksSpcObjectCreate(str,1,5,0,0,1); Specification.ksSpcObjectEnd();

//Создаем раздел "Детали"

1 Такое поведение может быть различным на разных системах КОМПАС.

Specification.ksSpcObjectCreate(str,1,20,0,0,1); Specification.ksSpcObjectEnd(); kompas.Visible:=true;

end;

На рисунке ниже показан результат работы этой программы.

Здесь,  мы  создавали  вспомогательные  объекты.  На  рисунке  ниже показан тот же пример, но с использованием базовых объектов.

Единственное, что мы изменили в коде программы, это значения параметров typeObj в методах ksSpcObjectCreate со значения 1, на значение нуль.

Как  видно,  в  случае  базовых  объектов  система  КОМПАС  сама заполнила значения в колонках «Поз.» и «Кол.».

Источник: Норсеев Сергей, «РАЗРАБОТКА ПРИЛОЖЕНИЙ ПОД КОМПАС В DELPHI»

По теме:

  • Комментарии