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

Помогите разобраться с 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 пользователей

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




×
×
  • Создать...