Перейти к публикации

Изучаем Toolkit


Sergey___1978

Рекомендованные сообщения



Еще не понятно в каких единицах эти кординаты заданы.

Вроде увеличиваешь х на 10, смещается не на 10, а на 4.2.

делаешь х=20, координата 8.4 полуается. Как будто бы пропорции соблюдаются, но в каких это единицах и почему когда х=0 и у=0, в ноль не становится не понятно.

Ссылка на сообщение
Поделиться на других сайтах

Еще не понятно в каких единицах эти кординаты заданы.

Не в процентах от размера листа?

Ссылка на сообщение
Поделиться на других сайтах

Ну даже если и в процентах, то почему когда задаю (0,0,0), то в начало системы координат листа не становится символ.

Кажется я понял его систему. Если формат будет квадратным, то только в таком случае при (0,0,0) будет в начале системы координат.

Будем проверять. Если это так, то сам наверно никогда бы не догадался.

Ссылка на сообщение
Поделиться на других сайтах

Почитайте в документации про системы координат модели, экрана, чертежа (кажется тоже есть). Там есть функции преобразования из одной системы в другую.

Ссылка на сообщение
Поделиться на других сайтах

Почитал и ничего не понял, зачем надо так все усложнять. Как я понял это 13 глава справки.

Ссылка на сообщение
Поделиться на других сайтах

Глава

Core: Coordinate Systems and Transformations

Я, честно говоря, сам плохо понимаю эту тему, каким-то чудесным образом, методом научного тыка добился нужного результата. Кажется я там инвертировал матрицу системы координат, вобщем пробуйте...

Ссылка на сообщение
Поделиться на других сайтах

Именно с простановкой символов был результат или в чем то другом?

Что-то у меня чудесным образом не получается ничего сделать пока.

Будем ждать чудес.

Ссылка на сообщение
Поделиться на других сайтах

Короче повозился я с этими матрицами и векторами и понял только одно. А оно мне надо вообще? Все равно для каждого формата координаты будут разными, так проще подогнать их один раз для каждого формата хотя бы с точностью до сотых и решен вопрос. Символ попадет в нужное мне на форматке место.

Ссылка на сообщение
Поделиться на других сайтах

Не знаю на счет Toolkit,. НО что касается чертежей и форматов. То нулевая точка в них (форматах) вещь задаваемая. Так что очень сильно зависит где ее задать. У меня она например задана в нижнем левом углу формата...

Ссылка на сообщение
Поделиться на других сайтах

Именно с простановкой символов был результат или в чем то другом?

Что-то у меня чудесным образом не получается ничего сделать пока.

Будем ждать чудес.

Вставлял таблицу.

Чудес не надо ждать, их надо натворить :smile:

ProDrawingSheetTrfGet(*p_drawing, 1, sheet_size, transform);

ProUtilMatrixInvert(transform, transform_invert);

status = UserConfigoptGet("TOOL_TABLE_POSITION", str_coords, options);

if (status == PRO_TK_E_NOT_FOUND)

return (-1);

sscanf(str_coords, "%lf %lf", &drw_point[0], &drw_point[1]);

ProPntTrfEval(drw_point, transform_invert, scn_point);

status = ProDwgtableRetrieve(*p_drawing, w_table_name, exec_path_dir, 0, scn_point, NULL, NULL, p_tool_table);

Ссылка на сообщение
Поделиться на других сайтах

Чудеса, да и только, все заработало, спасибейше огромное VIKTOR.

Вся загвоздка и правда только в этой строке заключалась:

ProUtilMatrixInvert(transform, transform_invert);

Когда нашел пример для установки таблицы на чертеж по координатам сразу стало все понятно как трансформировать координаты.

Ссылка на сообщение
Поделиться на других сайтах

Еще вопрос по примеру с таблицей.

Пытаюсь скомпилировать пример из тулкита. Компилятор ругается на эти строки:

/*--------------------------------------------------------------------*\

Get the root solid, and the transform from the root to the

component owning the csys

\*--------------------------------------------------------------------*/

if (csys_comppath.table_num>0)

{

solid = csys_comppath.owner;

ProAsmcomppathTrfGet(&csys_comppath, PRO_B_FALSE, trf);

}

else

{

solid = csys_geom.owner;

ProUtilMatrixCopy(NULL, trf);

}

а конкретно на: solid = csys_geom.owner;

Пишет:

.\ex1.cpp(1028) : error C2440: '=' : cannot convert from 'ProMdl' to 'ProSolid'

Conversion from 'void*' to pointer to non-'void' requires an explicit cast

Это же пример, неужели там ошибка?

Ссылка на сообщение
Поделиться на других сайтах

Попробуй неявное перевод

solid = (ProSolid)csys_geom.owner

Например

error = ProModelitemInit((ProMdl)drawing,,,,,,,

еще

error = ProDwgtableRetrieve((ProDrawing)drawing,

w_name, w_path, ver, point,(ProSolid) mdl, NULL, &table);

точно не помню но в чертежах подобное преобразование применял из солида в чертеж.

Ссылка на сообщение
Поделиться на других сайтах

Не могу понять почему?

Применяю вот такую команду для удаления листа чертежа:

ProDrawingSheetDelete(drawing1,del_sheet);

Все нормально удаляется, но если на данном листе что-то выделено, прое вылетает в аут.

Что это может быть?

Полный код функции такой:

int Format_Del_Sheet()

{

ProDrawing drawing1;

int del_sheet=0;

ProMdlCurrentGet((ProMdl*)&drawing1);

ProDrawingCurrentSheetGet(drawing1,&del_sheet);

ProDrawingSheetDelete(drawing1,del_sheet);

return(0);

}

Ссылка на сообщение
Поделиться на других сайтах

Еще один вопрос над которым бьюсь уже не один день.

Имеем сборку из нескольких деталей.

Параметры подсборок и деталей, которые принадлежат им самим научился читать и записывать, а вот с параметрами компонентов сборки, которые принадлежат сборке (локальные параметры) что-то ничего не получается.

Может кто сталкивался?

Ссылка на сообщение
Поделиться на других сайтах

Еще один вопрос над которым бьюсь уже не один день.

Имеем сборку из нескольких деталей.

Параметры подсборок и деталей, которые принадлежат им самим научился читать и записывать, а вот с параметрами компонентов сборки, которые принадлежат сборке (локальные параметры) что-то ничего не получается.

Может кто сталкивался?

Надо для сборки использовать

ProSolidFeatVisit

Фильтр

extern "C" ProError CompFilter (ProFeature *feature, ProAppData app_data)

{

ProError status;

ProFeattype ftype;

/*----------------------------------------------------------------*\

Get the feature type

\*----------------------------------------------------------------*/

status = ProFeatureTypeGet (feature, &ftype);

/*----------------------------------------------------------------*\

If the feature is an assembly component,

return NO ERROR,

else

return CONTINUE

\*----------------------------------------------------------------*/

if (ftype == PRO_FEAT_COMPONENT)

return (PRO_TK_NO_ERROR);

return (PRO_TK_CONTINUE);

}

Ну а когда пробегаем по списку элементов проверяем и зачитываем или создаем

ProModelitemInit(p_asm_par, feature->id, PRO_FEATURE, &p_modelitem);

ProAsmcompMdlGet (feature , &mdl);

ProMdlDataGet (mdl, &mdldata);

wcscpy(full_name, mdldata.name);

wcscat(full_name, L".");

wcscat(full_name, mdldata.type);

if (wcscmp(full_name, name_component)==0)

{

value.type = PRO_PARAM_STRING;

wcscpy(value.value.s_val, val_poz);//передаем номер позиции

param.type = PRO_PARAMETER;

param.owner.who.model = &p_asm_par;

status = ProParameterInit (&p_modelitem, name_param, &param);

if (status == PRO_TK_E_NOT_FOUND)

{

status = ProParameterCreate (&p_modelitem, wname_par, &value, &param);

}

else

{

status = ProParameterValueSet (&param, &value);

}

///////////////////////////////////////

}

Если для конткретного компонента то тут нужен будет CID - идентификатор компонента.

Если CID известен то вот

extern "C" DllExport void AllComponentVisit(char* name_comp, char* poz, char* name_par, char* component_CID)

{

ProError err;

ProMdl model;

ProName w_name_comp;

ProName w_name_par;

ProName w_value_par;

ProModelitem component;

ProParameter param;

ProParamvalue p_value;

int comp_id;

ProMode mode;

ProDrawing drawing;

ProMdlType mdl_type;

comp_id = atoi(component_CID);

ProStringToWstring(w_name_comp, name_comp);

ProStringToWstring(w_name_par, name_par);

ProStringToWstring(w_value_par, poz);

err = ProModeCurrentGet(&mode);

if (mode == PRO_MODE_DRAWING)

{

err = ProMdlCurrentGet((ProMdl*)&drawing);

err = ProDrawingCurrentsolidGet(drawing, (ProSolid*)&model);

ProSolid *solids = NULL;

int num;

err = ProDrawingSolidsCollect (drawing, &solids);

if (err == PRO_TK_NO_ERROR)

{

err = ProArraySizeGet ((ProArray)solids, &num);

asem = solids[0];

err = ProMdlTypeGet (asem, &mdl_type);

if (err != PRO_TK_NO_ERROR || (mdl_type != PRO_MDL_ASSEMBLY))

{

MessageBox(NULL, L"Активная модель чертежа не является сборкой! Невозможно запустить приложение!", L"Предупреждение", MB_OK);

err = ProArrayFree ((ProArray*)&solids);

exit(0);

}

}

}

else

{

err = ProMdlCurrentGet(&model);

}

err = ProFeatureReadonlyUnset((ProSolid)model);

err = ProModelitemInit(model, comp_id, PRO_FEATURE, &component);

err = ProParamvalueSet(&p_value,&w_value_par,PRO_PARAM_STRING);

err = ProParameterInit(&component,w_name_par,&param);

if(err == PRO_TK_E_NOT_FOUND)

{

err=ProParameterCreate(&component,w_name_par,&p_value,&param);

}

if(err == PRO_TK_NO_ERROR)

{

err = ProParameterValueSet(&param, &p_value);

}

err = ProParameterDesignationAdd(&param);

}

Ну код старый если что лишнее - то звиняйте.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Viktor2004
      Данная система подразумевает покупку блока для каждого станка. Монтаж и настройку выездным специалистом. При чем блоки эксклюзивные. Больше такие нигде не продаются. Идет жесткая привязка и зависимость только от одного поставщика. Зачем так усложнять. Думаю есть вариант с подключением каждого станка просто проводом без лишних закупок. Только софт на компьютер
    • Sabadash
      Пилится на станке такое)
    • Sabadash
      Приветствую! В процессе отладки станка Росфрезер HM04STM, имеет автосмену на 12 позиций инструмента HSM Works выбран как основная CAM, так как позволяет завязывать управляющие стратегии напрямую на перестраиваемый исходник геометрии детали, завязанный на cборку в SW Станок модифицирован до 4  осей, на базе волнового редуктора и сервопривода Delta Стойка поддерживает непрерывную обработку под точение микро механики, учимся делать циклоидные сервоприводы. Сейчас в процессе отладки постпроцессора, за основу взят постпроцессор для Mach 3 Mill, так как ранее он использовался под  аналогичную обработку под управлением Rich Auto DSP A18   4 Ось уже работает вдоль Х оси Проблема возникла с некорректной работой дуговой интерполяции. В мануале написано что стойка поддерживает дуговую интерполяцию для каждой из плоскостей.   Однако при запуске сгенерированной УП стойка выдает ошибку недоспустимого радиуса дуги. В мануале так же упомянуто о таком поведении в пункте 5     В постпроцессоре дуговая интерполяция включена, но как ее переключить на описанное в мануале стойки пока не разобрался.   Постпроцессор в поцессе правок. Если кто подскажет пример реализации подобного, буду очень благодарен HM04STM.cps
    • agering53
      Здесь выложена кое какая информация по сетевой системе, о которой я сообщал выше.  1. Универсальная сетевая система IN-DNC: https://www.mediafire.com/file/5reascq3sppdbn1/IinDoc.zip/file 2. Видео ролики для системы IN-DNC: https://www.mediafire.com/file/jwz8wwozj4iig1b/IIN-DNC_Video.rar/file
    • openair1981
    • maxx2000
      @davidovka да её и нет, есть жёсткий тупняк, поиск волшебной кнопки и т.д., и т.п. Просто пора в отпуск.
    • davidovka
      Наверное не понял проблемы, в эскизе квадрат с одним размером
    • maxx2000
      Вот ещё вопрос. Концентрический массив. Почему массив, чтобы потом сделать массив по привязке.  Есть у кого то соображения как?    
    • A_1
      Будет ли выполнена команда GOTO в этом кадре? IF 1>2 AND 5<10 GOTO GLUECK Sinumerik: расширенное программирование  Промокод "ЛЕТО" продолжает действовать на этот курс, а также курсы Программирование станка с системой ЧПУ FANUC (и Sinumerik) Параметрическое программирование станков с ЧПУ FANUC
    • maxx2000
      @davidovka ахахахах, это шедевр. Просто шикарно. У меня просто культурный шок. Осталось допилить до полноценного нестинга 3D моделей и прощайте костыли с кучей прослоек из других программ. 
×
×
  • Создать...