Страница 1 из 1
2DLine возврат в место создания

Добавлено:
07 сен 2009 08:39
Artem
Здравствуйте уважаемые камрады. При создании линии и использовании
CATI2DLine - HRESULT SetLineData(const double *pRootPoint, const double *pDirection) после закрытия и открытия чертежа линия возвращается на место своего создания.Это лечится?
Re: 2DLine возврат в место создания

Добавлено:
07 сен 2009 10:56
booSter
"Апдэйт" "скетчу" или "въю" перед сохранением/закрытием делается ?
Re: 2DLine возврат в место создания

Добавлено:
07 сен 2009 12:52
Artem
И програмно и вручную делал, и Dispatch(CATCreate/CATModify) делал.....Еще заметил - если редактировать линию, то в меню редактора хоть и новые координаты стоят - но если нажать cancel также в место создания возвращается....После ок и если мышью подвигать то все окей
Re: 2DLine возврат в место создания

Добавлено:
07 сен 2009 13:06
booSter
А линия не связана ли с точками (CATI2DPoint) по концам ?
Если да, то нужно менять параметры концевых точек, а линия сама перестроится при "апдэйте".
Ещё один нюансик:
Перед тем, как что-либо начать менять в "скетче" нужно вызывать OpenEdition, а после завершения редактирования CloseEdition и после этого вызывать CATISpecObject#Update на "скетче". OpenEdition и CloseEdition определены в CATISketchEditor, а CATISketch прямой его наследник.
Re: 2DLine возврат в место создания

Добавлено:
07 сен 2009 13:20
Artem
Линию делаю в виде чертежа без привязки к точкам.
- Код: Выделить всё
r = Line2D->get_StartPoint(Point1);
r = Line2D->get_EndPoint(Point2);
r = Point1->SetData(XY[0],XY[1]);
r = Point2->SetData(XY[0]+4,XY[1]+5);
- вот это вот тоже не помогает(((((..........Кстати подобная же функция для текста работает замечательно
Re: 2DLine возврат в место создания

Добавлено:
08 сен 2009 11:41
booSter
Во ещё мысль для "обкуривания"

:
В случае если редактирование
"дравинга" происходит под транзакцией (т.е. во время исполнения
"стэйт комманды" (CATStateCommand) с включенным
"анду" (Undo/Redo)) и транзакция по завершении команды откатывается (т.е.
"стэйт комманда" завершается переходом в
"кансел стэйт" CATStateCommand#CATGetCancelState()) то редактируемый документ возвращается (по возможности) в исходное состояние (т.е. состояние до запуска
"стэйт комманды"), чем, собственно, этот спец-эффект можно отчасти объяснить.
Re: 2DLine возврат в место создания

Добавлено:
08 сен 2009 15:42
Artem
OpenEdition/CloseEdition и даже saveedition вообще никак-вылетает.....Хмм ну может быть это из-за того откуда вызывается изменение положения -из диспатча модельевентса другого обьекта-при изменении положения этого обьекта линия автоматом двигается за ним.....Может метода конечно и в корне не правильная-но с текстом прокатывает на ура....и с линией работала -пока не попробовал закрыть/открыть документ...
Re: 2DLine возврат в место создания

Добавлено:
18 сен 2009 09:26
Artem
Думал пройду по ключам - найду х/у и задам их вручную. Два ключа типа Х и У не нашел ни у точки, ни у линии,зато у обоих есть лист с даблами (какой то там data... 100% оно - данные меняются при изменении координат).Толи они чисто на оутпут, толи механизмы обновления работают как то не так(вызывается вроде нормально) -ну не работает и баста((((...
Сделал свой элемент на основе 2DLine....переопределил CATIModelEvents - в диспатче задаю данные для 2х tk_double(x/y), а в гетдиспатче - который при загрузке документа вызывается, их возвращаю на место...вот какое-то такое извращение получилось....