Специфікація – КОМПАС в DELPHI

Інтерфейс ksSpcDocument описує документ-специфікацію Цей інтерфейс є головним при роботі зі специфікацією Отримати його можна двома способами

Перший спосіб За допомогою методу SpcDocument () інтерфейсу KompasObject Даний метод повертає інтерфейс специфікації ksSpcDocument, але саму специфікацію він не створює і не відкриває

Другий спосіб За допомогою методу SpcActiveDocument () інтерфейсу KompasObject Даний метод повертає інтерфейс ksSpcDocument для поточного документа-специфікації З цим методом слід бути обережним: якщо в програмі КОМПАС не відкрите жодної специфікації, то метод SpcActiveDocument () поверне значення нуль

Інтерфейс ksSpcDocument має всього одну властивість reference, яке не представляє для нас особливого інтересу, і кілька методів, призначення основних з яких ми розглянемо нижче

Для відкриття існуючого документа-специфікації використовується метод ksOpenDocument інтерфейсу ksSpcDocument Ось прототип цього методу

ksOpenDocument(

const nameDoc: WideString / / Шлях до документа

regim: Smallint           / / Режим відкриття

): WordBool

Параметр nameDoc являє собою повний шлях і найменування файлу з відкривається специфікацією

Параметр regim задає режим відкриття специфікації Допустимі значення цього параметра представлені нижче

0 – видимий режим

1 – невидимий режим

3&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp – Видимий режим без синхронізації зі складальним кресленням

4&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp – Невидимий режим без синхронізації зі складальним кресленням

У тому випадку, якщо специфікація не повязана ні з яким складальним кресленням, то значення 3 еквівалентно значенням нуль, а значення 4 – одиниці

У разі успіху метод ksOpenDocument повертає значення TRUE

Нижче наводиться ключовий фрагмент вихідного тексту програми, в якій демонструється відкриття існуючої специфікації

var

kompas: KompasObject SpcDocument: ksSpcDocument

begin

/ / Підключаємося до компаса

kompas:=KompasObject(CreateOleObject(KompasApplication5))

/ / Отримуємо інтерфейс документа-специфікації

SpcDocument:=ksSpcDocument(kompasSpcDocument())

/ / Відкриваємо існуючу специфікацію SpcDocumentksOpenDocument (D: \ Study \ Спеціфікаціяspw, 0) kompasVisible: = true

end

Для створення нового документа-специфікації використовується метод ksCreateDocument інтерфейсу ksSpcDocument Даний метод приймає всього один параметр – інтерфейс параметрів документа ksDocumentParam (див главу 3)

У разі успіху метод ksCreateDocument повертає значення TRUE, а створений документ-специфікація стає поточним

Нижче наводиться ключовий фрагмент вихідного тексту програми, в якій демонструється створення нового документа-специфікації

var

kompas: KompasObject SpcDocument: ksSpcDocument DocumentParam: ksDocumentParam SheetPar: ksSheetPar

str: string

begin

/ / Підключаємося до компаса

kompas:=KompasObject(CreateOleObject(KompasApplication5))

/ / Отримуємо інтерфейс параметрів документа

DocumentParam:=ksDocumentParam(kompasGetParamStruct(ko_DocumentParam)) DocumentParamInit()

DocumentParamtype_:=4 //lt_DocSpc

DocumentParamregime:=0 / / Візуальний режим

/ / Отримуємо інтерфейс параметрів аркуша SheetPar:=ksSheetPar(DocumentParamGetLayoutParam()) SheetParInit()

/ / Вказуємо бібліотеку стилів

str:=kompasksSystemPath(0)+\graphiclyt; SheetParlayoutName:=str

/ / Отримуємо інтерфейс специфікації

SpcDocument:=ksSpcDocument(kompasSpcDocument())

/ / Створюємо специфікацію

SpcDocumentksCreateDocument(DocumentParam) kompasVisible:=true

end

Для того щоб закрити документ-специфікацію використовується метод ksCloseDocument () У разі успіху він повертає значення TRUE

З цим методом слід бути гранично обережним, так як він не питає у користувача про збереження документа Тому, якщо ви з його допомогою закриваєте специфікацію, до якої вносилися зміни, то ваші зміни можуть бути втрачені

Нижче наводиться ключовий фрагмент програми, яка демонструє

роботу цього методу

var

kompas: KompasObject SpcDocument: ksSpcDocument

begin

/ / Підключаємося до компаса

kompas:=KompasObject(CreateOleObject(KompasApplication5))

//Отримуємо інтерфейс специфікації

SpcDocument:=ksSpcDocument(kompasSpcDocument())

/ / Відкриваємо існуючу специфікацію

SpcDocumentksOpenDocument (D: \ Study \ Спеціфікаціяspw, 0)

/ / Робимо КОМПАС видимим, щоб користувач побачив специфікацію

kompasVisible:=true

/ / Чекаємо 2 секунди

Sleep(2000)

/ / Закриваємо специфікацію

SpcDocumentksCloseDocument()

end

У даному прикладі спочатку відкривається існуюча специфікація, потім вікно системи КОМПАС робиться видимим, щоб користувач міг побачити відкриту специфікацію Після всього цього, після закінчення 2 секунд, специфікація закривається

Для збереження специфікації використовується метод ksSaveDocument інтерфейсу ksSpcDocument Як єдиний параметр йому передається рядок з повним шляхом і імям файлу, Якщо як єдиного параметра передати значення NULL, то специфікація збережеться в поточному файлі

У разі успіху метод ksSaveDocument повертає значення TRUE Нижче наводиться ключовий фрагмент вихідного тексту програми,

яка демонструє роботу цього методу

var

kompas: KompasObject SpcDocument: ksSpcDocument

begin

/ / Підключаємося до компаса

kompas:=KompasObject(CreateOleObject(KompasApplication5))

/ / Отримуємо інтерфейс специфікації

SpcDocument:=ksSpcDocument(kompasSpcDocument())

/ / Відкриваємо існуючу специфікацію

SpcDocumentksOpenDocument (D: \ Study \ Спеціфікаціяspw, 0)

/ / Зберігаємо специфікацію

SpcDocumentksSaveDocument (D: \ Study \ Спеціфікація2spw)

kompasVisible:=true

end

У даному прикладі спочатку відкривається існуюча специфікація, після чого вона зберігається в новому файлі «Спеціфікація2spw»

Редагування основного напису в документі-специфікації здійснюється за допомогою вже розглянутого нами інтерфейсу ksStamp (див главу 5) Для отримання цього інтерфейсу використовується метод GetStamp () інтерфейсу ksSpcDocument

Нижче наводиться ключовий фрагмент вихідного тексту програми демонструє редагування основного напису в документі-специфікації

var

kompas: KompasObject SpcDocument: ksSpcDocument Stamp : ksStamp

TextItemParam: ksTextItemParam

begin

/ / Підключаємося до компаса

kompas:=KompasObject(CreateOleObject(KompasApplication5))

/ / Отримуємо інтерфейс специфікації

SpcDocument:=ksSpcDocument(kompasSpcDocument())

/ / Відкриваємо існуючу специфікацію

SpcDocumentksOpenDocument (D: \ Study \ Спеціфікаціяspw, 0)

/ / Отримуємо інтерфейс основного напису

Stamp:=ksStamp(SpcDocumentGetStamp())

/ / Отримуємо інтерфейс рядка

TextItemParam:=ksTextItemParam(kompasGetParamStruct(ko_TextItemParam))

/ / Відкриваємо основний напис для редагування

StampksOpenStamp () StampksColumnNumber (1) TextItemParams: = Специфікація;

StampksTextLine(TextItemParam)

/ / Закриваємо основний напис StampksCloseStamp() kompasVisible:=true

end

На малюнку нижче показаний результат роботи цієї програми

Для роботи з багатосторінковими специфікаціями в інтерфейсі KsSpcDocument передбачено два методи

Перший, ksGetSpcDocumentPagesCount () повертає кількість аркушів

в документі-специфікації З цим методом все просто

Другий, GetStampEx згідно документації КОМПАС, він повертає інтерфейс ksStamp (див главу 5) основного напису заданого аркуша Номер листа (нумерація з 1) передається в якості єдиного параметра даного методу Ось з ним не все так просто

По-перше, реалізований даний метод не у всіх версіях компас Наприклад, в КОМПАС 8 його немає

По-друге, працює він якось дивно Справа в тому, що, як показує експеримент (перевіряв на КОМПАС 13), при зміні основного напису будь-якого з листів, синхронно змінюються основні написи на всіх інших аркушах специфікації

Виходить, що метод GetStampEx, принципово нічим не відрізняється від розглянутого раніше методу GetStamp

Джерело: Норсеев Сергій, «розробка програм під КОМПАС У DELPHI»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*