Штрихування. Спосіб другий – КОМПАС в DELPHI

У даному способі побудови штрихування заштриховуєш область задається інакше Тут ця область повинна реально існувати на кресленні, і вона повинна бути замкнута Для отримання числового ідентифікатора області використовується метод ksMakeEncloseContours інтерфейсу ksDocument2D Ось прототип цього методу:

ksMakeEncloseContours(

gr: Integer / / Ідентифікатор групи

x: Double y: Double / / Координати точки всередині контуру

): Integer

З параметрами x і y питань не виникає Вони задають координати довільної точки всередині замкнутого контуру, ідентифікатор якого ми хочемо отримати А от призначення параметра gr не так очевидно

Метод ksMakeEncloseContours повертає числовий ідентифікатор не якогось одного окремо взятого геометричного обєкта, а цілої групи геометричних обєктів, що становлять замкнутий контур Параметр gr визначає числовий ідентифікатор групи геометричних обєктів, підмножиною якої повинні бути обєкти групи, ідентифікатор

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

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

У разі успіху метод ksMakeEncloseContours повертає числовий ідентифікатор замкнутого контуру, а в разі помилки – нуль

Інтерфейс ksHatchParam використовується для завдання параметрів штрихування Отримати його можна за допомогою методу GetParamStruct інтерфейсу KompasObject для цього в якості єдиного параметра йому потрібно передати константу ko_HatchParam Розглянемо властивості цього інтерфейсу

ang – Кут нахил ліній штрихування до горизонталі

ksMakeEncloseContours інтерфейсу ksDocument2D

Сolor – Колір ліній штрихування у форматі BGR1 Колір прдставляет у вигляді комбінації трьох кольорів синього, зеленого і червоного Тобто значення цієї властивості $ 0000FF дає червоний колір ліній штриховок, $ 00FF00 – зелений, $ FF0000 – синій

sheeting – Відповідно до документації «тип кута штрихування» Але на практиці ігнорується

step – Крок штрихування Тобто мінімальна відстань між штриховими лініями

style – Стиль штрихування Обговорювалося в попередньому розділі

width – Відповідно до документації «ширина смуги штрихування» Але на практиці ігнорується

x і y – Відповідно до документації «координати базової точки штрихування» Але на практиці ігнорується За аналогією з попередньою главою ми, в якості значень цих властивостей будемо вказувати координати довільної точки, що належить заштриховуєш області

Метод у інтерфейсу ksHatchParam всього один – Init () Даний метод не має вхідних параметрів Все що він робить – це обнуляє всі властивості

даного інтерфейсу і, у разі успіху, повертає значення true

Для побудови штрихування використовується метод ksHatchByParam інтерфейсу ksDocument2D Даний метод в якості єдиного параметра приймає інтерфейс параметрів штрихування ksHatchParam У разі успіху він повертає числовий ідентифікатор побудованої штрихування, а в разі помилки – нуль

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

var

kompas: KompasObject Document2D: ksDocument2D

RectangleParam: ksRectangleParam

HatchParam: ksHatchParam GroupID: integer

…………………

Begin

…………………

/ / Будуємо прямокутник, який будемо заштриховувати

RectangleParam:=ksRectangleParam(kompasGetParamStruct(ko_RectangleParam)) RectangleParamx:=100

RectangleParamy:=100

1 Зверніть увагу, BGR а не звичний RGB

RectangleParamang:=0 RectangleParamheight:=10 RectangleParamwidth:=10 RectangleParamstyle:=1 Document2DksRectangle(RectangleParam, 0)

/ / Отримуємо ідентифікатор контуру, який будемо заштриховувати

GroupID:=Document2DksMakeEncloseContours(0,101,101)

/ / Отримуємо інтерфейс параметрів штрихування HatchParam:=ksHatchParam(kompasGetParamStruct(ko_HatchParam)) HatchParamang := 45

HatchParamboundaries := GroupID

HatchParamcolor :=

 

Отримання ідентифікатора замкнутого контуру

У даному способі побудови штрихування заштриховуєш область задається інакше. Тут ця область повинна реально існувати на кресленні, і вона повинна бути замкнута. Для отримання числового ідентифікатора області використовується метод ksMakeEncloseContours інтерфейсу ksDocument2D. Ось прототип цього методу:

ksMakeEncloseContours(

gr: Integer; / / Ідентифікатор групи

x: Double; y: Double / / Координати точки всередині контуру

): Integer;

З параметрами x і y питань не виникає. Вони задають координати довільної точки всередині замкнутого контуру, ідентифікатор якого ми хочемо отримати. А от призначення параметра gr не так очевидно.

Метод ksMakeEncloseContours повертає числовий ідентифікатор не якогось одного окремо взятого геометричного об’єкта, а цілої групи геометричних об’єктів, що становлять замкнутий контур. Параметр gr визначає числовий ідентифікатор групи геометричних об’єктів, підмножиною якої повинні бути об’єкти групи, ідентифікатор

якою ми хочемо отримати. Тобто, він дозволяє обмежити область пошуку геометричних об’єктів, які можуть утворювати бажаний для нас контур.

Якщо в цьому параметрі передається нуль, тоді система КОМПАС нічим не обмежується в своєму пошуку об’єктів для замкнутого контуру, крім об’єктів, що належать поточним увазі.

У разі успіху метод ksMakeEncloseContours повертає числовий ідентифікатор замкнутого контуру, а в разі помилки – нуль.

Параметри штрихування (ksHatchParam)

Інтерфейс ksHatchParam використовується для завдання параметрів штрихування. Отримати його можна за допомогою методу GetParamStruct інтерфейсу KompasObject для цього в якості єдиного параметра йому потрібно передати константу ko_HatchParam. Розглянемо властивості цього інтерфейсу.

ang – Кут нахил ліній штрихування до горизонталі.

ksMakeEncloseContours інтерфейсу ksDocument2D.

Сolor – Колір ліній штрихування у форматі BGR1. Колір прдставляет у вигляді комбінації трьох кольорів синього, зеленого і червоного. Тобто значення цієї властивості $ 0000FF дає червоний колір ліній штриховок, $ 00FF00 – зелений, $ FF0000 – синій.

sheeting – Відповідно до документації «тип кута штрихування». Але на практиці ігнорується.

step – Крок штрихування. Тобто мінімальна відстань між штриховими лініями.

style – Стиль штрихування. Обговорювалося в попередньому розділі.

width – Відповідно до документації «ширина смуги штрихування». Але на практиці ігнорується.

x і y – Відповідно до документації «координати базової точки штрихування». Але на практиці ігнорується. За аналогією з попередньою главою ми, в якості значень цих властивостей будемо вказувати координати довільної точки, що належить заштриховуєш області.

Метод у інтерфейсу ksHatchParam всього один – Init (). Даний метод не має вхідних параметрів. Все що він робить – це обнуляє всі властивості

даного інтерфейсу і, у разі успіху, повертає значення true.

Побудова штрихування

Для побудови штрихування використовується метод ksHatchByParam інтерфейсу ksDocument2D. Даний метод в якості єдиного параметра приймає інтерфейс параметрів штрихування ksHatchParam. У разі успіху він повертає числовий ідентифікатор побудованої штрихування, а в разі помилки – нуль.

Приклад

Нижче наводиться вихідний код програми, яка демонструє побудову штрихування даними метод.

var

kompas: KompasObject; Document2D: ksDocument2D;

RectangleParam: ksRectangleParam;

HatchParam: ksHatchParam; GroupID: integer;

…………………

Begin

…………………

/ / Будуємо прямокутник, який будемо заштриховувати

RectangleParam:=ksRectangleParam(kompas.GetParamStruct(ko_RectangleParam)); RectangleParam.x:=100;

RectangleParam.y:=100;

1 Зверніть увагу, BGR а не звичний RGB.

RectangleParam.ang:=0; RectangleParam.height:=10; RectangleParam.width:=10; RectangleParam.style:=1; Document2D.ksRectangle(RectangleParam, 0);

/ / Отримуємо ідентифікатор контуру, який будемо заштриховувати

GroupID:=Document2D.ksMakeEncloseContours(0,101,101);

/ / Отримуємо інтерфейс параметрів штрихування HatchParam:=ksHatchParam(kompas.GetParamStruct(ko_HatchParam)); HatchParam.ang := 45;

HatchParam.boundaries := GroupID;

HatchParam.color := $000000; / / Колір ліній – чорний

HatchParam.sheeting:= 0; HatchParam.step:=1; HatchParam.style:=0; / / Метал HatchParam.width:=0; HatchParam.x:=101; HatchParam.y:=101;

/ / Будуємо саму штрихування

Document2D.ksHatchByParam(HatchParam); kompas.Visible:=true;

end;

Зверніть увагу на те, що тут ми один раз будуємо прямокутник, який область, яку ми хочемо заштрихувати. У першому методі (див. попередню главу) ми змушені були будувати його двічі.

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

Який спосіб краще

На перший погляд може здатися, що перший спосіб побудови штрихування простіше, ніж другий: у ньому не потрібно визначати ніяких інтерфейсів, досить викликати метод ksHatch і визначити область, яку слід заштрихувати. Але, на мій погляд, це помилкова думка.

Якщо вам потрібно заштрихувати невелику область (наприклад, простий прямокутник) то так, набагато простіше використовувати перший спосіб, ніж другий.

Але, якщо вам потрібно заштрихувати якусь складну область (що складається, наприклад, з декількох десятків геометричних об’єктів) то

будувати їх мінімум два рази (перший – сама побудова цих об’єктів і, другий – для завдання області штрихування) недоцільно. У цьому випадку краще підходить другий спосіб.

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

/ / Колір ліній – чорний

HatchParamsheeting:= 0 HatchParamstep:=1 HatchParamstyle:=0 / / Метал HatchParamwidth:=0 HatchParamx:=101 HatchParamy:=101

/ / Будуємо саму штрихування

Document2DksHatchByParam(HatchParam) kompasVisible:=true

end

Зверніть увагу на те, що тут ми один раз будуємо прямокутник, який область, яку ми хочемо заштрихувати У першому методі (див попередню главу) ми змушені були будувати його двічі

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

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

Якщо вам потрібно заштрихувати невелику область (наприклад, простий прямокутник) то так, набагато простіше використовувати перший спосіб, ніж другий

Але, якщо вам потрібно заштрихувати якусь складну область (що складається, наприклад, з декількох десятків геометричних обєктів) то

будувати їх мінімум два рази (перший – сама побудова цих обєктів і, другий – для завдання області штрихування) недоцільно У цьому випадку краще підходить другий спосіб

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

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


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

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

Ваш отзыв

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

*

*