Skip to main content
1-Visitor
Apr 21, 2017 12:47 PM UTC
Solved

Load a model in a session

I have a Model and i stored in my computer.Ex(C:\Desktop\load.prt)

In my proE session i involved a GUI.Where user can do some works.Here what i want is,I want to load a model that stored in C:\Desktop\load.prt  when user clicks the button .Can please any one tell me how to do this?

sjurajAnswer
15-Moonstone
Apr 24, 2017 6:58 AM UTC

RetrieveModel only puts model into session. However RetrieveModel ignores path. You have to use RetrieveModelWithOpts method instead. Note to use right path to your file. There is no such path as c:/desktop/xxx.prt. Path to desktop is always c:/<user_name>/desktop. This code will load model from path to session and than displays it in the new created window.

ModelDescriptor md = pfcModel.ModelDescriptor_CreateFromFileName("c:/users/<user_name>/desktop/xxx.prt");

RetrieveModelOptions rmo = pfcSession.RetrieveModelOptions_Create();

rmo.SetAskUserAboutReps(false);

Model model = session.RetrieveModelWithOpts(md, rmo);

Window window = session.CreateModelWindow(model);

model.Display();

window.Activate();

43 replies

15-Moonstone
Apr 22, 2017 6:23 AM UTC

You can simply run macro and replace model name in macro string using method session.RunMacro

Translate
16-Pearl
Apr 22, 2017 2:56 PM UTC

Use Retrieve model function to load the model in session

Use Model Descriptor to set the file name

You have to set the location as working directory

Translate
ddhini1-VisitorAuthor
1-Visitor
Apr 24, 2017 4:30 AM UTC

Can you please explain it through coding?

Translate
16-Pearl
Apr 24, 2017 5:03 AM UTC

Models char* _ProMdlRetrieve(wchar_t* FileName, int Type)

{

       char* msg;

       ProError Magizchi;

       ProMdlType modelType;

       switch(Type)

       {

       case 0:

              modelType = PRO_TYPE_UNUSED;

              break;

       case 1:

              modelType = PRO_ASSEMBLY;

              break;

       case 2:

              modelType = PRO_PART;

              break;

       case 3:

              modelType = PRO_DRAWING;

              break;

       case 4:

              modelType = PRO_MDL_3DSECTION;

              break;

       case 5:

              modelType = PRO_2DSECTION;

              break;

       case 6:

              modelType = PRO_LAYOUT;

       case 7:

              modelType = PRO_DWGFORM;

              break;

       case 8:

              modelType = PRO_MFG;

              break;

       case 9:

              modelType = PRO_REPORT;

              break;

       case 10:

              modelType = PRO_MARKUP;

              break;

       case  11:

              modelType = PRO_DIAGRAM;

              break;

       }

       ProMdl p_model;

       Magizchi = ProMdlRetrieve(FileName, modelType, &p_model);

       switch(Magizchi)

       {

       case PRO_TK_NO_ERROR:

              msg = "Model Retrieved";

              break;

       case PRO_TK_BAD_INPUTS:

              msg = "One or more of the input arguments are invalid";

              break;

       case PRO_TK_E_NOT_FOUND:

              msg = "The model was not found in the current directory";

              break;

       case PRO_TK_NO_PERMISSION:

              msg = "The function does not have permission to handle this model";

              break;

       }

       return msg;

}

Now call the method

_ProMdlRetrieve(FileName(wchar_t*), FileType(int))


You can also use out to hold the model data

Translate
ddhini1-VisitorAuthor
1-Visitor
Apr 26, 2017 10:53 AM UTC

But how to load the both drawing and model ? I load the master model into my session by the above code that you suggested.I have a master drawing file also.But i can't able to load it in a new session.

Translate
ddhini1-VisitorAuthor
1-Visitor
Apr 26, 2017 10:55 AM UTC

ModelDescriptor md = pfcModel.ModelDescriptor_CreateFromFileName("C:\\Users\\350154\\Desktop\\javaGUI\\modelgen\\dist\\mastemodels\\xxxx.drw");

  RetrieveModelOptions rmo = pfcSession.RetrieveModelOptions_Create();

  rmo.SetAskUserAboutReps(false);

  Drawing drw = (Drawing) session.RetrieveModelWithOpts(md, rmo);

  Window window = session.CreateModelWindow(drw);

  drw.Display();

  window.Activate();

But its failed to load the drawing file.

Translate
15-Moonstone
Apr 26, 2017 11:22 AM UTC

You have not retrieved the part/asm. This code will open drawing in new activated window.

final String modelName = "test";

final String path = "c:/users/xxx/desktop/";

ModelDescriptor modelMD = pfcModel.ModelDescriptor_CreateFromFileName(

        path + modelName + ".prt");

ModelDescriptor drwMD = pfcModel.ModelDescriptor_CreateFromFileName(

        path + modelName + ".drw");

RetrieveModelOptions rmo = pfcSession.RetrieveModelOptions_Create();

rmo.SetAskUserAboutReps(false);

session.RetrieveModelWithOpts(modelMD, rmo);

Drawing drawing = (Drawing) session.RetrieveModelWithOpts(drwMD, rmo);

Window drwWin = session.CreateModelWindow(drawing);

drawing.Display();

drwWin.Activate();

Translate
ddhini1-VisitorAuthor
1-Visitor
Apr 26, 2017 12:45 PM UTC

Toolkit error is arising.. but don't know why it is arising.

Translate
15-Moonstone
Apr 26, 2017 12:51 PM UTC

Try to solve it. I cant help you more. This works for me.

Translate
ddhini1-VisitorAuthor
1-Visitor
Apr 26, 2017 12:52 PM UTC

Thank you so much for your help skvarka juraj‌

Translate