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

Помогите разобраться с Pro/toolkit


AlexVk

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

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

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


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

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

Вот например у меня возник конкретный вопрос, хочу просто добавить пункт меню в ProE руководствуюсь примером pt_install_test, перетащил все ресурсы папки text в сою папку и сделал следующий код:

-----------------------------------------------------------------------------------------

#include <stdio.h>

extern "C"{

#include <ProToolkit.h>

#include <Pro2dEntdef.h>

#include <ProANSI.h>

#include <ProAnalysis.h>

#include <ProAnimate.h>

#include <ProArray.h>

#include <ProAsmcomp.h>

#include <ProAsmcompR20.h>

#include <ProAsmcomppath.h>

#include <ProAssembly.h>

#include <ProAutodrill.h>

#include <ProAxis.h>

#include <ProCabling.h>

#include <ProCavitylayout.h>

#include <ProCavlayrule.h>

#include <ProChamfer.h>

#include <ProClCmd.h>

#include <ProClcmdElem.h>

#include <ProCollect.h>

#include <ProColor.h>

#include <ProComm.h>

#include <ProConst.h>

#include <ProContour.h>

#include <ProContourdata.h>

#include <ProCopyGeom.h>

#include <ProCore.h>

#include <ProCsys.h>

#include <ProCsysdata.h>

#include <ProCurve.h>

#include <ProCurvedata.h>

#include <ProDatumdata.h>

#include <ProDimension.h>

#include <ProDisplist.h>

#include <ProDrawing.h>

#include <ProDtlattach.h>

#include <ProDtlentity.h>

#include <ProDtlgroup.h>

#include <ProDtlitem.h>

#include <ProDtlnote.h>

#include <ProDtlsymdef.h>

#include <ProDtlsyminst.h>

#include <ProDtmAxis.h>

#include <ProDtmCrv.h>

#include <ProDtmCrvSketch.h>

#include <ProDtmCsys.h>

#include <ProDtmPln.h>

#include <ProDtmPnt.h>

#include <ProDwgtable.h>

#include <ProEdge.h>

#include <ProEdgedata.h>

#include <ProElemId.h>

#include <ProElement.h>

#include <ProElempath.h>

#include <ProExpldstate.h>

#include <ProExtdata.h>

#include <ProExtobj.h>

#include <ProExtobjCB.h>

#include <ProExtobjDisp.h>

#include <ProExtobjRef.h>

#include <ProExtobjSel.h>

#include <ProExtrude.h>

#include <ProFaminstance.h>

#include <ProFamtable.h>

#include <ProFeatForm.h>

#include <ProFeatIntr.h>

#include <ProFeatType.h>

#include <ProFeature.h>

#include <ProFemMesh.h>

#include <ProFemObjects.h>

#include <ProFixture.h>

#include <ProFlatSrf.h>

#include <ProForeignCurve.h>

#include <ProGeomitem.h>

#include <ProGeomitemdata.h>

#include <ProGraphic.h>

#include <ProGroup.h>

#include <ProGtol.h>

#include <ProHardware.h>

#include <ProHole.h>

#include <ProImm.h>

#include <ProImportfeat.h>

#include <ProIntf3Dexport.h>

#include <ProIntfData.h>

#include <ProIntfimport.h>

#include <ProItemerr.h>

#include <ProJlink.h>

#include <ProLayer.h>

#include <ProLayerR19.h>

#include <ProMaterial.h>

#include <ProMdl.h>

#include <ProMdlChk.h>

#include <ProMenu.h>

#include <ProMenuBar.h>

#include <ProMessage.h>

#include <ProMfg.h>

#include <ProMfgdb.h>

#include <ProMfgoper.h>

#include <ProModFeat.h>

#include <ProMode.h>

#include <ProModelitem.h>

#include <ProMoldbase.h>

#include <ProNcseq.h>

#include <ProNcseqElem.h>

#include <ProNote.h>

#include <ProNotify.h>

#include <ProObjects.h>

#include <ProParameter.h>

#include <ProParamval.h>

#include <ProPart.h>

#include <ProPattern.h>

#include <ProPecktable.h>

#include <ProPiping.h>

#include <ProPoint.h>

#include <ProPrint.h>

#include <ProProcstep.h>

#include <ProQuilt.h>

#include <ProQuiltdata.h>

#include <ProRefInfo.h>

#include <ProRelSet.h>

#include <ProReplace.h>

#include <ProRevolve.h>

#include <ProRib.h>

#include <ProRmdt.h>

#include <ProRule.h>

#include <ProScope.h>

#include <ProSecConstr.h>

#include <ProSecdim.h>

#include <ProSecdimType.h>

#include <ProSecerror.h>

#include <ProSection.h>

#include <ProSelection.h>

#include <ProSheetmetal.h>

#include <ProShrinkwrap.h>

#include <ProSimprep.h>

#include <ProSimprepdata.h>

#include <ProSizeConst.h>

#include <ProSkeleton.h>

#include <ProSolid.h>

#include <ProStdSection.h>

#include <ProSurface.h>

#include <ProSurfacedata.h>

#include <ProSweep.h>

#include <ProTool.h>

#include <ProToolElem.h>

#include <ProToolinput.h>

#include <ProToolkitDll.h>

#include <ProUI.h>

#include <ProUICascadebutton.h>

#include <ProUICheckbutton.h>

#include <ProUICmd.h>

#include <ProUIDialog.h>

#include <ProUIInputpanel.h>

#include <ProUILabel.h>

#include <ProUILayout.h>

#include <ProUIList.h>

#include <ProUIMenubar.h>

#include <ProUIMenupane.h>

#include <ProUIMessage.h>

#include <ProUIOptionmenu.h>

#include <ProUIProgressbar.h>

#include <ProUIPushbutton.h>

#include <ProUIRadiogroup.h>

#include <ProUISlider.h>

#include <ProUISpinbox.h>

#include <ProUITab.h>

#include <ProUITable.h>

#include <ProUITextarea.h>

#include <ProUIThumbwheel.h>

#include <ProUdf.h>

#include <ProUtil.h>

#include <ProUvStat.h>

#include <ProValue.h>

#include <ProVerstamp.h>

#include <ProView.h>

#include <ProWcell.h>

#include <ProWchar.h>

#include <ProWeld.h>

#include <ProWindows.h>

#include <ProWorkspace.h>

#include <ProWstring.h>

#include <ProXsec.h>

static wchar_t MSGFIL[] = {'m','s','g','_','u','s','e','r','.','t','x','t','\0'};

static uiCmdAccessState TestAccessDefault(uiCmdAccessMode access_mode)

{

return (ACCESS_AVAILABLE);

}

ProError ProTestInstallationCheck();

// Эти 2 функции всегда должны быть определены

// в Pro/TOOLKIT программе

int user_initialize(int argc,char *argv[],char *proe_vsn,char *build,wchar_t err_buff[]);

void user_terminate();

}

int user_select_menu(); // объявляем функции

static ProName dev_msg;

// эта функция вызывается когда загружается приложение

int user_initialize(int argc,char *argv[],char *proe_vsn,char *build,wchar_t err_buff[])

{

int menu_id;

uiCmdCmdId cmd_id;

ProError status;

printf("\nUser_initialize working now");

printf("\n%s - %s", proe_vsn, build);

status = ProCmdActionAdd("-Install Test",

(uiCmdCmdActFn)user_select_menu,

uiProe2ndImmediate, TestAccessDefault,

PRO_B_TRUE, PRO_B_TRUE, &cmd_id);

printf("\nstatus = %d",status);

if (status != PRO_TK_NO_ERROR) printf("\nERROR");

status = ProMenubarmenuPushbuttonAdd(

"File", "-Install Test", "-Install Test Label", "Install Test Help",

"File.psh_rename", PRO_B_TRUE, cmd_id, MSGFIL);

printf("\nstatus = %d",status);

if (status != PRO_TK_NO_ERROR) printf("\nERROR");

return(0);

}

// эта функция вызывается когда приложение останавливается

void user_terminate()

{

printf("\nUser_terminate working now");

return;

}

// эта функция вызывается когда пользователь щелкает по кнопке

int user_select_menu()

{

printf("\nuser_evaluate working now");

// выводим сообщение

ProMessageDisplay( MSGFIL, "USER %0s", "Testing." );

// и прокручиваем одну линию списка сообщений

ProMessageClear();

return 0;

}

int main(int argc, char* argv[])

{

printf("\nmain working now");

fprintf(stderr, "\n\tWelcome to Pro/TOOLKIT - The \"pt_install_test\" program\n");

ProToolkitMain(argc, argv);

return (0);

}

-----------------------------------------------------------------------------------------

Все нормально откомпелировалось и запустилось но меню так и не добавилось, насколько я понял подключение к ProE произошло успешно, запустилась функция user_initialize в которой я и пытаюсь добавить меню, ошибка как я понял появляется в функции ProMenubarmenuPushbuttonAdd потому что она возвращает -4, подскажите что я делаю не так? :g:

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

подскажите что я делаю не так?

<{POST_SNAPBACK}>

Комментарии в программе пишешь не информативные и мало. В таком ключе разбираться в приведенном куске кода будет только отчаянный фанатик.
Ссылка на сообщение
Поделиться на других сайтах

Да там по сути только 2 функции ProCmdActionAdd() и ProMenubarmenuPushbuttonAdd() в функции user_initialize() которая вызывается автоматически при запуске приложения асинхронно с ProE, и 2-я функция выдает ошибку..... Я думаю для человека который когда-либо работал с ProToolKit понять данный код не составит никакого труда, тут есть такие????? :unsure:

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

<noindex>Тут</noindex> есть такие.

Если Вам тяжело с языком, посмотрите - там среди форумчан есть наши соотечественники (некто apilikov, в частности). Свяжитесь с ним, может, он поможет?

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

А зачем искать кого-то ? Создать на Mcad тему на русском языке и все дела. Кто откликнулся тот и наш !

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

www.mcadcentral.com - ссылка точно правильная, у меня сайт этот не открывается :g:

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

Только что ткнул в слово Тут из 26-го поста и сразу попал на тот форум. Так что ссылка правильная. Может что админы обрезали или настройки браузера неправильные?

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

Что касается кода я разобрался, в нем все правильно просто не совсем правильно был прописан путь к папке Text ну да ладно это все позади теперь есть у меня мои пункты меню и функции вызывающиеся при их нажатии, и хочу я чтобы при нажатии добавился параметр но никак не получается, может кто чем помочь может?

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

Итак, функция добавления параметра у меня получилась, работает вроде нормально, никакого диалога с пользователем, название и значение параметра задается прямо в коде программы, а вот собственно и он (код):

// эта функция вызывается когда пользователь щелкает по кнопке -param_add

int user_param_add()

{

//объявление переменных

ProError status;

ProMdl model;

ProModelitem p_modelitem;

ProParameter new_param;

ProName name;

ProMdlType mdltype;

ProParamvalue new_value;

ProParamvalueType new_value_type;

void* p_value;

wchar_t Value[] = {'H','E','L','L','O','\0'}; //значение параметра

wchar_t Name1[] = {'G','S','K','B','\0'}; //название параметра

//выводим сообщение, что функция начала работу

printf("\nparam add working now");

//задаем тип параметра - строковый

new_value_type = PRO_PARAM_STRING;

//задаем значение параметра

p_value = &Value;

//берем данные текущей открытой модели

status = ProMdlCurrentGet(&model);

printf("\nstatus = %d",status);

//берем данные о типе текущей модели деталь/сборка

status = ProMdlTypeGet(model, &mdltype);

printf("\nstatus = %d",status);

//задаем атрибуты модели

p_modelitem.owner = model;

if (mdltype == PRO_MDL_ASSEMBLY) p_modelitem.type = PRO_ASSEMBLY;

else p_modelitem.type = PRO_PART;

status = ProParamvalueSet( &new_value, p_value, new_value_type );

printf("\nstatus = %d",status);

//создаем параметр

status = ProParameterCreate(&p_modelitem, Name1, &new_value, &new_param);

printf("\nstatus = %d",status);

//выводим сообщение в строку состояния

ProMessageDisplay( MSGFIL, "USER %0s", "Add param" );

// и прокручиваем одну линию списка сообщений

ProMessageClear();

return 0;

}

А теперь внимание вопрос! Хочу написать еще 2 таким же по редактированию и удалению параметра, к примеру с таким же названием (GSKB), но что-то не выходит, поможет мне кто-нибудь? Вопрос конкретен до безумия, хотябы с удалением помогите, функция для удаления ProParameterDelete(ProParameter *param), тип ProParameter это следующая структура:

typedef struct proparameter

{

ProType type;

ProName id;

ProParamowner owner;

} ProParameter;

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

P.S. Всем кто отзовется большое спасибо!

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

Удаление параметра вроде как получилось, вот функция:

int user_param_delete()

{

//объявление переменных

ProError status;

ProParameter param;

ProMdl model;

ProModelitem p_modelitem;

ProMdlType mdltype;

wchar_t Name1[] = {'G','S','K','B','\0'}; //название параметра

//выводим сообщение, что функция начала работу

printf("\nparam delete working now");

//берем данные текущей открытой модели

status = ProMdlCurrentGet(&model);

printf("\nstatus = %d",status);

//берем данные о типе текущей модели деталь/сборка

status = ProMdlTypeGet(model, &mdltype);

printf("\nstatus = %d",status);

//задаем атрибуты модели

p_modelitem.owner = model;

if (mdltype == PRO_MDL_ASSEMBLY) p_modelitem.type = PRO_ASSEMBLY;

else p_modelitem.type = PRO_PART;

//инициализация параметра

ProParameterInit(&p_modelitem, Name1, &param);

//удаляем параметр

status = ProParameterDelete(&param);

printf("\nstatus = %d",status);

// выводим сообщение

ProMessageDisplay( MSGFIL, "USER %0s", "Delete param" );

// и прокручиваем одну линию списка сообщений

ProMessageClear();

return 0;

}

А вот по редактированию (изменению значения параметра) есть вопросик, вот то, что я написал:

int user_param_edit()

{

//объявление переменных

ProError status;

ProParameter param;

ProMdl model;

ProModelitem p_modelitem;

ProMdlType mdltype;

ProParamvalue NewValue;

wchar_t Name1[] = {'G','S','K','B','\0'}; //название параметра

ProLine Value[] = {'H','E','L','L','O','1','\0'}; //значение параметра

//выводим сообщение, что функция начала работу

printf("\nparam edit working now");

//берем данные текущей открытой модели

status = ProMdlCurrentGet(&model);

printf("\nstatus = %d",status);

//берем данные о типе текущей модели деталь/сборка

status = ProMdlTypeGet(model, &mdltype);

printf("\nstatus = %d",status);

//задаем атрибуты модели

p_modelitem.owner = model;

if (mdltype == PRO_MDL_ASSEMBLY) p_modelitem.type = PRO_ASSEMBLY;

else p_modelitem.type = PRO_PART;

//инициализация параметра

ProParameterInit(&p_modelitem, Name1, &param);

//заполняем данные нового значения параметра

NewValue.type = PRO_PARAM_STRING;

NewValue.value.s_val = Value;

//задаем параметру новое значение

status = ProParameterValueSet(&param,&NewValue);

printf("\nstatus = %d",status);

// выводим сообщение

ProMessageDisplay( MSGFIL, "USER %0s", "Edit param." );

// и прокручиваем одну линию списка сообщений

ProMessageClear();

return 0;

}

При компиляции ругается на строку «NewValue.value.s_val = Value;» «Error Cannot convert from ProLine[1] to ProLine», не могу понять почему, тип ProLine это wchar_t (typedef wchar_t ProLine[PRO_LINE_SIZE]). Может, кто подскажет как это все распетлять?

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • ak762
      holder - держатель, и так как узел используется для закрепления инструмента, в адаптированном на русский я бы использовал резцедержатель  в конкретном случае похоже sleeve эквивалент collet т.е. цанга получается 5 spindle sleeve holder = 5-ти местный цанговый держатель/резцедержатель
    • ДОБРЯК
      А что еще остается делать. В Ансис точно частоты будут разные, даже не сомневайтесь...
    • ДОБРЯК
      Кроме собственных чисел нужно еще и собственные вектора найти. Вы даже не понимаете задачи. Надо решить квадратное уравнение, чтобы найти два собственных числа и вектора для задачи любой размерности. Такой глупости я еще не слышал. Поэтому и смеюсь над вашими знаниями, которые вы еще в детском саду получили. И этим гордитесь... :=)
    • maxx2000
      прямо по чертежу 1. инструмент 2.гайка цангового патрона типа ER 3. хвостовик цангового патрона 4 многоместный держатель 5. Фиксирующие винты   Открутите гайку цангового патрона и установите в неё цангу нужного размера, накрутите на место; Установите в цангу инструмент и затяните гайку цангового патрона; Ослабьте крепёжные винты на многоместном держателе и отрегулируйте положение инструмента; Затяните фиксирующие винты;
    • Ander
    • ak762
      я бы попросил у заказчика дать конкретную марку применяемого материала и использовать эти данные для расчета судя по данным с MatWeb https://www.matweb.com/search/DataSheet.aspx?MatGUID=08fb0f47ef7e454fbf7092517b2264b2 там разброс механических свойств материала существенный включая зависимость от наполнителя и способа изготовления    
    • Jesse
      потестил со смещённым колесом.. Если коротко, то печаль)) В модальнике прикладываю вращение в разные сторона, частота та же. Пробовал даже "гнуть в разные стороны" - извлекать деформированные модели, когда уск. своб. падения направлено вверх и вниз. В модальниках частота та же, без изменения.. @Борман@AlexKazну что ж, если выкрутиться никак, будем осваивать Ansys. Чё ещё остаётся делать?!)))) Вроде какие-то видосики есть на ютюбе. Спс за овтеты)
    • soldo
      Приветствую всех! Часто искала информацию на форуме, связанную с переводом, но кое-что не могу найти и хочу попросить о помощи. Я перевожу инструкцию для токарного автомата продольного точения и не очень хорошо понимаю все, что связано с креплением инструмента к станку. Конкретно меня интересуют следующие вопросы. Станок оснащен разными инструментальными блоками, есть суппорт с резцами, блок с инструментами для поперечного сверления и т.д.  И есть один блок, который на корявом английском называется 5 spindle sleeve holder, На этом блоке 5 шпинделей и на них можно закрепить инструмент для сверления, нарезания резьбы и растачивания. В названии этого блока фигурируют какие-то втулки (sleeve), предполагаю, что это патроны? Вот, что примерно написано в инструкции по поводу установки инструмента в этом блоке: (1) Ослабьте стопорный винт ② и установите режущий инструмент ① на втулку ③. (2) Затяните стопорный винт ② и закрепите режущий инструмент ① на втулке ③. (3) Ослабьте резьбу ⑤ и вставьте втулку ③ в блок ④ . (4) Переместите втулку ③ в направлении длины и отрегулируйте прямоугольное положение режущего инструмента ①. (5) После регулировки затяните резьбу ⑤ и зафиксируйте втулку ③. Мой вопрос: как можно назвать этот блок и что это за "втулка"?  Прикрепляю ссылку, на ней скриншоты из инструкции с общим видом инструментальной системы, 5-шпиндельного блока и соответствующих инструментов для сверления. https://imgur.com/a/fpBgmLA
    • Snake 60
      @alek77  У меня норм, просто надо соблюсти условия: 1) масштаб вида 1:1 2) масштаб листа 2:1 почему такие условия хз.
    • nicomed
      Пробовал (хотел "накостылить" разрыв линии), но получалась, примерно, такая ерунда, как и у Вас. Брал примеры и с офф сайта, и с сайта Артема.
×
×
  • Создать...