Методом addcut у интерфейса ICutViewParam в Delphi.

Автор Простой_инженер, 04.07.20, 18:55:10

« предыдущая - следующая »

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

Простой_инженер

Добрый день! Хочу программно создать местный разрез на виде, но мне не ясен один параметр у метода AddCut.

фрагмент из справки:

HRESULT AddCut( BSTR Name,
long umber,
double X,
double Y,
BOOL ModelCut,
IDrawingObject * Contour,  - ИМЕННО ЭТОТ ПАРАМЕТР МНЕ НЕ ЯСЕН И Я НЕ ПОЙМУ ОТ КУДА ЕГО БРАТЬ!!!
IView * View,
long * Index );

суть в следующем. я программно создал два вида детали (произвольный и проекционный). на проекционном виде создал прямоугольник IRectangle. его я хочу использовать как контур для ограничения выреза, но я не знаю как этот графический объект IRectangle засунуть в параметр, у которого тип IDrawingObject.


Sabahs


Простой_инженер

Благодарю! Но возникла снова проблема. Прямоугольник, который я создавал имеет следующий код:

prymoygolnik:=ksRectangleParam(kompas.GetParamStruct(ko_RectangleParam));
prymoygolnik.x:=-10;
prymoygolnik.y:=-200;
prymoygolnik.height:=400;
prymoygolnik.width:=80;
prymoygolnik.style:=1;
z:=Document2D.ksRectangle(prymoygolnik,0);

z - это указатель на прямоугольник. а как теперь по этому указателю мне его в тип IRectangle засунуть?

Sabahs


Простой_инженер

//Создаю прямоугольник
prymoygolnik:=ksRectangleParam(kompas.GetParamStruct(ko_RectangleParam));
prymoygolnik.x:=-10;
prymoygolnik.y:=-200;
prymoygolnik.height:=400;
prymoygolnik.width:=80;
prymoygolnik.style:=1;
z:=Document2D.ksRectangle(prymoygolnik,0);

//Добавляю его DrawingObject
DrawingContainer:=View as IDrawingContainer;
Rectangles:=DrawingContainer.Rectangles;
Rectangle:=Rectangles.Rectangle[z];
DrawingObject:=Rectangle as IDrawingObject;
DrawingObject.Update;

//View - вид, в котором необходимо сделать вырез. Так же этот вид остается активным.
//View1 - вид, в котором проходит секущая плоскость по координатам x=0, y=0.
View1:=Views.Get_ViewByNumber(1); //View:=Views.Get_ViewByNumber(2) - Наш вид, в котором происходит вырез имеет индекс 2
View1.Update;

CutViewParam:=View as ICutViewParam;
t:=CutViewParam.AddCut('Разрез',1,0,0,true,DrawingObject,View1);
if t=-1 then showmessage('нет') else showmessage('да');
View.Update;

на выходе получаю НЕТ. почему?

Sabahs

У меня строит, координаты сечения должны быть в координатах системного вида.
ICutViewParam.png

Простой_инженер