Skip to main content
1-Visitor
April 21, 2017
Solved

Load a model in a session

  • April 21, 2017
  • 4 replies
  • 14168 views

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?

Best answer by sjuraj

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();

4 replies

15-Moonstone
April 22, 2017

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

16-Pearl
April 22, 2017

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

ddhini1-VisitorAuthor
1-Visitor
April 24, 2017

Can you please explain it through coding?

16-Pearl
April 24, 2017

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

ddhini1-VisitorAuthor
1-Visitor
April 26, 2017

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.

ddhini1-VisitorAuthor
1-Visitor
April 26, 2017

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.

15-Moonstone
April 26, 2017

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();

ddhini1-VisitorAuthor
1-Visitor
April 26, 2017

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

15-Moonstone
April 26, 2017

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

ddhini1-VisitorAuthor
1-Visitor
April 26, 2017

Thank you so much for your help skvarka juraj