Формат креслення КОМПАС DELPHI

Інтерфейс ksSheetOptions задає параметри оформлення Отримати даний інтерфейс за допомогою вже знайомого нам методу GetParamStruct інтерфейсу KompasObject, для цього в якості параметра цього методу потрібно передати константу ko_SheetOptions Так ми зможемо отримати сам інтерфейс, але він не буде привязаний до якого-небудь кресленням Тобто це буде абсолютно порожній інтерфейс Як отримати параметри креслення

Для цього використовується метод ksGetDocOptions інтерфейсу ksDocument2D Ось прототип цього методу:

ksGetDocOptions(optionsType: Integer const param: IDispatch): Integer

У нього два параметри:

optionsType – Тип налаштування Це числовий параметр, який говорить про те, які саме налаштування креслення ми хочемо отримати

param – Інтерфейс, в який будуть записані читаються настройки креслення Тип цього інтерфейсу залежить від параметра OptionsType

У разі успішного читання параметрів метод повертає значення 1, а в

разі помилки значення 0

Для того щоб ми могли отримати параметри креслення у вигляді інтерфейсу ksSheetOptions, параметр optionsType має дорівнювати SHEET_OPTIONS_EX Але тут є одна заковика Справа в тому, що заголовні файли Компаса не містять в собі опису цієї константи Тому її чисельне значення (4) нам потрібно вказувати самим

Для установки параметрів креслення використовується інший метод інтерфейсу ksDocument2D ksSetDocOptions Ось його прототип:

ksSetDocOptions(optionsType: Integer const param: IDispatch): Integer

Як бачите, він має точно такий же прототип, як і метод ksGetDocOptions Дійсно єдина різниця між ними полягає в тому, що один читає поточні параметри креслення, а другий встановлює нові параметри

Що ж з отриманням інтерфейсу будемо вважати, що розібралися Тепер поговоримо про сам інтерфейсі ksSheetOptions Ось його властивості:

layoutName – Рядок з імям бібліотеки оформлення

sheetType – Ознака стандартності листа креслення Якщо значення даної властивості false, то лист креслення має стандартний розмір (A0, A1, A2, A3, A4 або A5) Якщо ж значення даної властивості true, то лист креслення має довільний, встановлюваний користувачем формат

shtType – Ціле число, яке задає тип основного напису креслення Тепер обговоримо ці властивості докладніше

Про поле sheetType ми ще поговоримо в наступному розділі, коли говоритимемо про інтерфейс ksStandartSheet

Тепер про полях layoutName і shtType Чесно кажучи, я не відразу зрозумів, що конкретно там має бути вказано Але потім до мене

дійшло Для того щоб зрозуміти їх призначення запустіть додаток КОМПАС і створіть в ньому який-небудь новий документ Тепер відкрийте Менеджер документа (меню «Сервіс / Менеджер документа» або на панелі інструментів) Зявиться приблизно таке вікно:

Ну так от, поле layoutName задає імя бібліотеки з колонки

«Бібіліотека1 оформлень» Тобто для даного прикладу там має бути вказано значення graphiclyt.

Тепер з приводу поля shtType Клацніть двічі по значенню в колонці «Оформлення», при цьому має зявитися приблизно таке вікно:

1 Опечатки у всіх бувають

Поле shtType зберігає в собі значення колонки «Номер» відповідне потрібного нам стилю оформлення Наприклад, для стилю «Креслення конструк Перший лист ГОСТ 2104-68 »(виділений на зображенні вище) в цьому полі повинно зберігатися значення 1

Тепер перейдемо до методів інтерфейсу ksSheetOptions Їх усього два:

GetSheetParam()     – Використовується для отримання інтерфейсу ksStandartSheet, про який ми поговоримо в наступному розділі

Init() – Скидає значення властивостей інтерфейсу

Прийшов час розглянути невеликий приклад Нижче приводиться невеликий фрагмент програми, в якому наводиться приклад роботи з інтерфейсом ksSheetOptions:

const

SHEET_OPTIONS_EX=4

…………………

var

kompas: KompasObject Document2D: ksDocument2D SheetOptions: ksSheetOptions

…………………

begin

…………………

/ / Отримуємо інтерфейс ksSheetOptions

SheetOptions:=ksSheetOptions(kompasGetParamStruct(ko_SheetOptions))

/ / Отримуємо поточні параметри креслення

Document2DksGetDocOptions(SHEET_OPTIONS_EX, SheetOptions)

/ / Ми використовуємо стандартний формат аркуша

SheetOptionssheetType:=false

/ / Вказуємо номер стилю, який нам потрібен

SheetOptionsshtType:=1

/ / Встановлюємо нові параметри креслення

Document2DksSetDocOptions(SHEET_OPTIONS_EX, SheetOptions)

Уважний читач може запитати: «як змінити формат аркуша» Дійсно, інтерфейс ksSheetOptions не надає можливість вказати формат аркуша (A0, A1, A2 і тд) Для цих цілей може бути використаний інтерфейс ksStandartSheet

Даний інтерфейс може бути отриманий з інтерфейсу ksSheetOptions Для цього використовується метод GetSheetParam останнього

GetSheetParam(type_: WordBool): IDispatch

Параметр type_ – задає ознака формату листа Якщо даний параметр дорівнює false то використовується стандартний формат аркуша, в іншому випадку використовується довільний формат аркуша

Звертаю вашу увагу на те, що значення даного параметра має збігатися зі значення поля sheetType інтерфейсу ksSheetOptions (див

попередній розділ)

Залежно від значення параметра type_ дана функція повертає або інтерфейс ksStandartSheet (type_ = false), який описує параметри стандартного аркуша, або інтерфейс ksSheetSize (type_ = true), який описує параметри листа довільного розміру (розглядати його ми не будемо), або nil, у разі помилки

Взагалі щодо даного методу в документації говориться буквально наступне: «залишилася для сумісності зі старими бібліотеками» Однак знайти інший спосіб (більш сучасний) роботи з інтерфейсом ksStandartSheet мені так і не вдалося

Тепер поговоримо про сам інтерфейсі Ось його властивості:

direct – задає орієнтацію аркуша Якщо значення цієї властивості дорівнює false, то лист розташовується вертикально, якщо ж воно дорівнює true, то горизонтально

format – формат аркуша Здається наступним чином: 0 – A0, 1 – A1, 2 – A2, 3 – A3 і так далі

multiply – кратність формату

Метод у даного інтерфейсу всього один: Init (), який скидає значення всіх властивостей інтерфейсу

Нижче наводиться фрагмент програми, в якому демонструється робота з цим інтерфейсом:

const

……………

var

SHEET_OPTIONS_EX = 4

Document2D: ksDocument2D SheetOptions: ksSheetOptions StahdartSheet: ksStandartSheet

………………

begin

………………

/ / Ми працюємо з листом стандартного розміру

SheetOptionssheetType:=false

/ / Повчати інтерфейс ksStandartSheet

StandartSheet:=ksStandartSheet(SheetOptionsGetSheetParam(false))

/ / Встановлюємо аркуш формату A3

StandartSheetformat:=3

/ / Встановлюємо горизонтальний напрямок листа

StandartSheetdirect:=true

/ / Встановлюємо кратність рівну одиниці

StandartSheetmultiply:=1

/ / Встановлюємо нові налаштування креслення

Document2DksSetDocOptions(SHEET_OPTIONS_EX, SheetOptions)

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

var

kompas: KompasObject Document2D: ksDocument2D DocumentParam: ksDocumentParam SheetOptions: ksSheetOptions StandartSheet: ksStandartSheet

begin

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

kompas:=KompasObject(CreateOleObject(KompasApplication5))

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

DocumentParam:=ksDocumentParam(kompasGetParamStruct(ko_DocumentParam))

/ / Тип документа – креслення

DocumentParamtype_:=ksDocumentDrawing

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

Document2D:=ksDocument2D(kompasDocument2D)

/ / Створюємо новий документ

Document2DksCreateDocument(DocumentParam)

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

SheetOptions:=ksSheetOptions(kompasGetParamStruct(ko_SheetOptions))

/ / Отримуємо параметри документа

Document2DksGetDocOptions(SHEET_OPTIONS_EX, SheetOptions)

/ / Стандартний лист

SheetOptionssheetType := false

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

StandartSheet:=ksStandartSheet(SheetOptionsGetSheetParam(false))

/ / Формат А3

StandartSheetformat:=3

/ / Орієнтація аркуша

StandartSheetdirect:=true

/ / Тип рамки і соновном написи

SheetOptionsshtType:=1

/ / Встановлюємо нові параметри документа

Document2DksSetDocOptions(SHEET_OPTIONS_EX, SheetOptions)

kompasVisible:=true

end

На малюнку нижче показаний порожній креслення з рамкою побудований цією програмою

Наведений вище фрагмент коду добре працює на старих версіях компаси (перевіряв на 8 версії), а от на більш нових він не працює (перевіряв на 11версіі) У них замість інтерфейсу ksSheetOptions потрібно використовувати інтерфейс ksSheetPar, який виконує ту ж саму роль, що й замінний їм інтерфейс

Отримати інтерфейс ksSheetPar можна за допомогою методу

GetLayoutParam () інтерфейсу ksDocumentParam Розглянемо властивості інтерфейсу ksSheetPar

layoutName – Повний шлях до бібліотеки оформлення (graphiclyt)

shtType – Тип основного напису і рамки креслення Аналогічний властивості shtType інтерфейсу ksSheetOptions

Тепер розглянемо методи інтерфейсу ksSheetPar

GetSheetParam() – Повертає інтерфейс параметрів аркуша документа Якщо використовується стандартний аркуш документа, тоді повертається інтерфейс ksStandartSheet Якщо ж використовується не стандартний лист, тоді повертається інтерфейс ksSheetSize (його розглядати ми не будемо)

Init() – Обнуляє значення всіх властивостей інтерфейсу У разі успіху повертає значення TRUE

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

var

kompas: KompasObject Document2D: ksDocument2D DocumentParam: ksDocumentParam StandartSheet: ksStandartSheet SheetPar    : ksSheetPar

str: string

begin

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

kompas:=KompasObject(CreateOleObject(KompasApplication5))

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

DocumentParam:=ksDocumentParam(kompasGetParamStruct(ko_DocumentParam)) DocumentParamtype_:=1  / / Стандартний креслення

DocumentParamregime := 0/ / Видимий режим редагування

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

SheetPar := ksSheetPar(DocumentParamGetLayoutParam())

/ / Формуємо шлях до бібліотеки оформлення str:= kompasksSystemPath(0)+\graphiclyt; SheetParlayoutName := str

SheetParshtType := 1 / / Тип основного напису

/ / Отримуємо інтерфейс параметрів стандартного аркуша StandartSheet := ksStandartSheet(SheetParGetSheetParam()) StandartSheetdirect := true / / Штамп уздовж довгої сторони StandartSheetformat:=3     / / Формат А3

StandartSheetmultiply := 1 / / Масштаб

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

Document2D:=ksDocument2D(kompasDocument2D)

/ / Створюємо документ

Document2DksCreateDocument(DocumentParam)

kompasVisible:=true

end

Тут для отримання повного шляху до файлу graphicly використовується метод ksSystemPath Даний метод при передачі йому як параметр нульового значення повертає повний шлях до подкаталогу «sys» каталогу Компас Більш докладний опис цього методу дивися в документації компас

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

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


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

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

Ваш отзыв

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

*

*