Главная » Delphi, OLE, САПР » Основная надпись КОМПАС в DELPHI

0

Строка или спецсимвол (ksTextItemParam)

Интерфейс    ksTextItemParam    служит    для

задания    строки    или

спецсимвола1.   Получить

этот

интерфейс   можно

с   помощью   метода

GetParamStruct    интерфейса     KompasObject.     Для    этого     в     качестве

единственного параметра данному методу нужно передать значение константы ko_TextItemParam. Рассмотрим свойства интерфейса ksTextItemParam.

iSNumb – номер спецсимвола или нуль, в том случае, если задается строка. Допустимые номера спецсимволов перечислены в таблице ниже (см. файл NUmbSymb.frw, поставляемый вместе с системой КОМПАС).

1 Вообще говоря данный интерфейс может быть использован и для задания других компонент текста. Но с назначением альтернативных компонент я так и не разобрался.

Здесь буква α имеет номер 51, а буква β номер 52.

s – строка. Если интерфейс ksTextItemParam используется для задания спецсимвола, то данная строка выводится после спецсимвола.

type_1 – определяет для описания чего используется интерфейс. Если ksTextItemParam описывает строку, то значением данного свойства должно быть значение нуль. Если же интерфейс ksTextItemParam описывает спецсимвол, то значением данного свойства должно быть равно константе SPECIAL_SYMBOL2 (17).

Теперь рассмотрим методы интерфейса ksTextItemParam.

GetItemFont() – возвращает интерфейс параметров шрифта ksTextItemFont (рассматривать этот интерфейс мы не будем).

SetItemFont  –  устанавливает  новый  интерфейс  параметров  шрифта ksTextItemFont. Устанавливаемый интерфейс передается в качестве значения единственного параметра. В случае успеха метод возвращает значение TRUE.

Init() – инициализирует нулями свойства интерфейса. В случае успеха возвращает значение TRUE.

Основная надпись (ksStamp)

Основная надпись описывается интерфейсом ksStamp. Получить его можно с помощью метода GetStamp() интерфейса ksDocument2D. Данный метод возвращает интерфейс основной надписи, или nil в случае ошибки.

У интерфейса ksStamp всего одно свойство reference. Оно содержит числовой идентификатор основной надписи.

Рассмотрим методы интерфейса ksStamp.

ksClearStamp – очистить основную надпись или отдельную ячейку. Вот прототип данного метода:

ksClearStamp(numb: Integer): Integer;

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

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

Важно отметить, что все ячейки основной пронумерованы особым образом. Их адресация осуществляется посредством этих номеров. Но к этому мы еще вернемся ниже, а пока продолжим рассмотрение методов интерфейса ksStamp.

1      В документации данное свойство описывается как type (без знака подчеркивания на конце), но в заголовочных файлах оно представлено именно как type_ (со знаком подчеркивания на конце).

2      К сожалению,  данная константа не представлена в заголовочном файле КОМПАС, поэтому в скобках указано ее фактическое значение.

ksCloseStamp() – закрыть основную надпись. Фактически это означает выйти из режима редактирования основной надписи. Данный метод не имеет входных параметров. В случае успеха возвращает единицу, а в случае ошибки нуль.

ksColumnNumber – Сделать ячейку текущей. При этом в качестве единственного параметра данного метода передается номер ячейку, которую следует сделать текущей. В случае успеха возвращает единицу, а в случае ошибки нуль.

ksGetStampColumnText – возвращает текст указанной ячейки основной налписи. Номер ячейки, текст которой мы хотим узнать передается в качестве единственного параметра данного метода. Метод  возвращает интерфейс массива строк ksDynamicArray (он рассматривается в главе 22) типа TEXT_LINE_ARR, или NULL (nil) в случае ошибки.

ksOpenStamp() – открыть основную надпись. Фактически это означает войти в режим редактирования основной надписи. Не имеет входных параметров, в случае успеха возвращает ноль, в случае неудачи нуль.

ksSetStampColumnText    –    устанавливает    текст    в    ячейке.    Ниже

приводится прототип этого метода.

ksSetStampColumnText(numb: Integer;          //номер ячейки

const textArr: IDispatch //устанавливаемый текст

): Integer;

Устанавливаемый текст задается в виде массива ksDynamicArray (см. главу 22).

В случае успеха метод возвращает значение 1, а в случае ошибки – значение нуль.

ksTextLine – записать в текущую ячейку строку. При этом текущая ячейка устанавливается методом ksColumnNumber. Вот прототип этого метода:

ksTextLine(const textItem: IDispatch): Integer;

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

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

– нуль.

Теперь подробнее о нумерации ячеек.

Все ячейки в основной надписи пронумерованы. Посредством этих осуществляется их адресация. Самих номеров ячеек в документации КОМПАС нет, единственное там есть отсылка  к ГОСТу, описывающему основную надпись (ГОСТ 2.104-68 и ГОСТ 2.104-2006). Также порядок нумерации ячеек (правда не всех) основной надписи можно посмотреть на странице http://www.propro.ru/graphbook/eskd/eskd/GOST/2_104.htm. На рисунке ниже приводится нумерация ячеек основной надписи формы 2:

Пример

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

Var

kompas: KompasObject; Document2D: ksDocument2D; TextItemParam: ksTextItemParam; Stamp: ksStamp;

……………

Begin

……………

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

TextItemParam:=ksTextItemParam(kompas.GetParamStruct(ko_TextItemParam));

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

Stamp:=ksStamp(Document2D.GetStamp());

//Входим в режим редактирования основной надписи

Stamp.ksOpenStamp();

//Заполняем основную надпись Stamp.ksColumnNumber(1); TextItemParam.s:=’Деталь'; Stamp.ksTextLine(TextItemParam);

Stamp.ksColumnNumber(2); TextItemParam.s:=’Обозначение чертежа'; Stamp.ksTextLine(TextItemParam);

Stamp.ksColumnNumber(3); TextItemParam.s:=’Сталь 45′; Stamp.ksTextLine(TextItemParam);

Stamp.ksColumnNumber(110); TextItemParam.s:=’Норсеев С.А.'; Stamp.ksTextLine(TextItemParam);

//Выходим из режима редактирования основной надписи.

Stamp.ksCloseStamp();

Если  все  сделано  правильно,  то  на  выходе  вы  получите  основную надпись такого вида:

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

По теме:

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