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

Программирование для CATIA.

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

Сообщение Artem » 07 сен 2009 08:39

Здравствуйте уважаемые камрады. При создании линии и использовании
CATI2DLine - HRESULT SetLineData(const double *pRootPoint, const double *pDirection) после закрытия и открытия чертежа линия возвращается на место своего создания.Это лечится?
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: 2DLine возврат в место создания

Сообщение booSter » 07 сен 2009 10:56

"Апдэйт" "скетчу" или "въю" перед сохранением/закрытием делается ?
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: 2DLine возврат в место создания

Сообщение Artem » 07 сен 2009 12:52

И програмно и вручную делал, и Dispatch(CATCreate/CATModify) делал.....Еще заметил - если редактировать линию, то в меню редактора хоть и новые координаты стоят - но если нажать cancel также в место создания возвращается....После ок и если мышью подвигать то все окей
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: 2DLine возврат в место создания

Сообщение booSter » 07 сен 2009 13:06

А линия не связана ли с точками (CATI2DPoint) по концам ?
Если да, то нужно менять параметры концевых точек, а линия сама перестроится при "апдэйте".

Ещё один нюансик:
Перед тем, как что-либо начать менять в "скетче" нужно вызывать OpenEdition, а после завершения редактирования CloseEdition и после этого вызывать CATISpecObject#Update на "скетче". OpenEdition и CloseEdition определены в CATISketchEditor, а CATISketch прямой его наследник.
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: 2DLine возврат в место создания

Сообщение Artem » 07 сен 2009 13:20

Линию делаю в виде чертежа без привязки к точкам.
Код: Выделить всё
   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);

- вот это вот тоже не помогает(((((..........Кстати подобная же функция для текста работает замечательно
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: 2DLine возврат в место создания

Сообщение booSter » 08 сен 2009 11:41

Во ещё мысль для "обкуривания" :pioneer1: :

В случае если редактирование "дравинга" происходит под транзакцией (т.е. во время исполнения "стэйт комманды" (CATStateCommand) с включенным "анду" (Undo/Redo)) и транзакция по завершении команды откатывается (т.е. "стэйт комманда" завершается переходом в "кансел стэйт" CATStateCommand#CATGetCancelState()) то редактируемый документ возвращается (по возможности) в исходное состояние (т.е. состояние до запуска "стэйт комманды"), чем, собственно, этот спец-эффект можно отчасти объяснить.
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: 2DLine возврат в место создания

Сообщение Artem » 08 сен 2009 15:42

OpenEdition/CloseEdition и даже saveedition вообще никак-вылетает.....Хмм ну может быть это из-за того откуда вызывается изменение положения -из диспатча модельевентса другого обьекта-при изменении положения этого обьекта линия автоматом двигается за ним.....Может метода конечно и в корне не правильная-но с текстом прокатывает на ура....и с линией работала -пока не попробовал закрыть/открыть документ...
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: 2DLine возврат в место создания

Сообщение Artem » 18 сен 2009 09:26

Думал пройду по ключам - найду х/у и задам их вручную. Два ключа типа Х и У не нашел ни у точки, ни у линии,зато у обоих есть лист с даблами (какой то там data... 100% оно - данные меняются при изменении координат).Толи они чисто на оутпут, толи механизмы обновления работают как то не так(вызывается вроде нормально) -ну не работает и баста((((...
Сделал свой элемент на основе 2DLine....переопределил CATIModelEvents - в диспатче задаю данные для 2х tk_double(x/y), а в гетдиспатче - который при загрузке документа вызывается, их возвращаю на место...вот какое-то такое извращение получилось....
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14


Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2