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

Изучаем 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 пользователей

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




  • Сообщения

    • Ветерок
      Вообще-то, это не рисование, а банальная начертательная геометрия. Или её теперь не проходят в школе?
    • Kelny
      Вероятно разблокировку делает патч с официального сайта, но не смотря на то что позиционируется для профкарт, вероятно делает описанное в видео и с другими картами:  
    • Alexey8107
      Их официальный номер пока еще работает . На нем сейчас пока еще стоит переадресация. В общем не знаю что за организация, завтра займусь наверное этим. На словах и сервисный инженер у них катается по стране. Что-то мне подсказывает сервисники остались теже . Вобщем в ближайшее время займусь, гляну по реквизитам что за организация.
    • Fedor
      "Какой эмпирико-нормативный опыт есть у человечества"  подробно этим занимались в зубчатых передачах. Но единой теории усталости не существует. Надо смотреть буквари по Деталям машин.   https://elima.ru/books/?id=3934   Вот хорошая книжка ... 
    • Борман
      При циклике вообще-то надо минимум и максимум знать. Есть ли вообще циклическая нагрузка ? В остальном Газпромовская нормативка копирует атомные нормы.   Запасы только свои, а не атомные.
    • gudstartup
      что наглухо вышел физически или ошибки в разделах? если логически то можно r-studio поковырять образ может параметры удастся  вытащить
    • gudstartup
      это как вы с ним свяжитесь? в россии представительство фанука закрыто - никакой поддержки нет и поставок тоже если покупать то через китайцев. значит руководство фанука в этот раз оказалось правым.
    • andrei_shevchenko
      Добрый день коллеги! Сделал имитационную модель в plant simulation, сейчас я ищу способы продемонстрировать модель в виртуальной реальности, и для этой цели мне было бы очень интересно, если бы я мог напрямую подключить omniverse к Siemens plant simulation. Я видел, что коннектор был представлен на одном из вебинаров nvidia, поэтому мне было интересно, может ли кто-нибудь рассказать мне о нем подробнее? И как его скачать? Ниже приведена ссылка на вебинар (начинается в 18:29, чтобы ознакомиться с частью, посвященной omniverse connector для моделирования установок и процессов). https://www.nvidia.com/en-us/on-demand/session/gtcfall21-a31571/   При создании своего сервера Nucleus, выходит ошибка  Error: [621cc28f-0997-4faf-beeb-cce360d80d81] Cannot prepare file for download, the server has returned HTTP403 for signed URL https://asset.launcher.omniverse.nvidia.com/nucleus-workstation/2023.2.3/windows-x86_64/package.zip?Expires=1717549893&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9hc3NldC5sYXVuY2hlci5vbW5pdmVyc2UubnZpZGlhLmNvbS9udWNsZXVzLXdvcmtzdGF0aW9uLzIwMjMuMi4zL3dpbmRvd3MteDg2XzY0L3BhY2thZ2UuemlwIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzE3NTQ5ODkzfX19XX0_&Signature=I5XhGkOGlBif-bh82r~Iny5AWZ9fGxngRTZ0dSVlr4lsv-rbmDBlqHjCqtf~Z-TVrdIlLFCshOT4X7u-OekeVJiTnjJCWQLPuxR31Cf8npT3KUrgtSACPsv0XaA2IyW1XEmWTJbVbaPEYGdsqjhXnbvhGrOvLikeqfR0c767zIgY5nrPn2yrO3WTj-9DuWUlk5OnsKMQkvhYmc7xObOToQrmveOQltxHrgjZHoSP9RDtSXv07kwUJKnDFF56PkXLFTjb1c3l16nmJTAUkwcWiOLnAQGtsYvS7TTX35RgIsqq-rRx5bi51efYKfd75vodPKJe~ObTTMEsMyvwsaPfSQ__&Key-Pair-Id=K13PD0MHC2KFRP Так же видел возможность, когда на AnyLogic делали модель, через стороннее API подключали к Unreal Engine, может стоит попробовать реализовать эту задачу таким образом? Но информации о том, как это делали не нашёл. Вот статья об этом: https://stackoverflow.com/questions/73695807/co-simulation-anylogic-and-unreal-engine?newreg=aa00b11ef29c4eef952c09083c9bfb90  
    • Павлуха
      Публикатор конфигураций не пробовали?
    • malvi.dp
      Да, в эскизе можете эту линию жёстко зафиксировать нужными вам размерами. А при создании плоскости нужно выбрать ещё и вторую ссылку для позиционирования. Это может быть плоскость "спереди" с взаимосвязью перпендикулярности.  
×
×
  • Создать...