штриховка

Автор Drey, 14.12.05, 18:36:38

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Drey

Допустим рисую кривую nurbs, и мне надо заштриховать область, ограниченную ей и еще несколькими прямыми. Как не перерисовывая опять эту кривую между ksHatch и ksEndObj это сделать? Т.е. как указать штриховке что один из примитивов задается reference?

333

Попробовать использовать ksHatch
там можно передать границу штриховки см pBoundaries
Только возможно нужно будет сделать копию с кривой

333

в автоматизации
ksDocument2D::ksHatchByParam

Drey

Спасибо большое! Научился. Всего то:

   ksHatchParam hpar = (ksHatchParam) kompas.GetParamStruct(ko_HatchParam);
   hpar.Init();
   hpar.SetBoundaries(doc.ksMakeEncloseContours(0, 0.0, points[1][17]-1.0));
   hpar.SetStyle(0);
   hpar.SetAng(45.0);
   hpar.SetStep(3.0);
   hpar.SetWidth(1.0);
   hpar.SetX(nps[0][0]);
   hpar.SetY(nps[1][0]);
   doc.ksHatchByParam(hpar);

Дмитрий22

Добрый день!
Все мы знаем как пользоваться командой штриховка:
doc.ksHatch(0, 45, 2, 0, 0, 0);
doc.ksCircle(30, 30, 20, 1);
doc.ksCircle(30, 30, 10, 1);
doc.ksEndObj();
А если усложнить задачу:
Известна только точка на чертеже с коорд. X , Y  и то что вокруг нее гарантировано существует замкнутый контур.
Вопрос: как построить штриховку из точки, имея эти данные.
Задача сводится к поиску замкнутого контура вокруг точки или есть другой способ? Как, интересно, Компас решает эту задачу?



p3452

Цитата: Дмитрий22 от 18.07.22, 16:26:21Вопрос: как построить штриховку из точки, имея эти данные.
Что значит "штриховку из точки"?

Можно заштриховать Контур внутри, которого находится Точка.

Дмитрий22

Цитата: p3452 от 18.07.22, 17:47:19Что значит "штриховку из точки"?

Можно заштриховать Контур внутри, которого находится Точка.
именно так,
Осталось найти объекты, которые образуют замкнутый контур вокруг точки. Объектов много на чертеже.

Вират Лакх

18.07.22, 19:43:27 #7 Последнее редактирование: 18.07.22, 19:55:47 от Вират Лакх
ksFindObj - Найти ближайший к заданной точке объект вида
ksMakeEncloseContours - Получить указатель на группу объектов, охватывающих заданную точку
ksMakeEncloseContoursEx - Получить указатель на группу объектов, охватывающих заданную точку
ksIsPointInsideContour - Проверить положение точки относительно кривой
+ Благодарностей: 1

Дмитрий22

Добрый!
Сразу не докопал, сейчас разобрался.
ksMakeEncloseContours(0, point.X, point.Y)  -  вот функция которую я искал!
всего лишь по координатам 1 точки создает контур вокруг этой точки.
Дальше все просто,
перебираем все контура смотрим их координаты:
foreach (IContour LS in newDrawingContainer.DrawingContours)никакие ksFindObj и ksIsPointInsideContour не нужны.
Похоже Компас сам пользуется ksMakeEncloseContours, когда строит штриховку.