• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Методом 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.



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

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

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 засунуть?


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

//Создаю прямоугольник
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;

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

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

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