how to use the saveas4 function

Discussion in 'SolidWorks' started by syshieley, Apr 4, 2006.

  1. syshieley

    syshieley Guest

    Dear all

    i am new to the solidworks API...
    currently i can draw a cylinder with the dll...and after the drawing i
    want to save the part as STL format...
    i looked into the API help file and found maybe saveas4 can be used.
    but some errors when compiling...
    cannot figure out where is the problems

    void MenuItemCB(void)
    {
    LPMODELDOC pModelDoc;//define pModelDoc pointer
    TheApplication->GetSWApp()->get_IActiveDoc(&pModelDoc);//obtain
    pModelDoc pointer
    LPPARTDOC pPartDoc;// define pPartDoc pointer
    pModelDoc->QueryInterface(IID_IPartDoc,(LPVOID *)&pPartDoc);//obtain
    pPartDoc pointer

    VARIANT_BOOL retval;//define retval
    pModelDoc->SelectByID(auT("Front"),auT("PLANE"),0,0,0,&retval);

    pModelDoc->InsertSketch();//enter sketching drawing

    double P1[3];// defind and evaluate p1 & p2
    P1[0]=0;
    P1[1]=0;
    P1[2]=0;
    double P2[3];
    P2[0]=0;
    P2[1]=0.1;
    P2[2]=0;
    pModelDoc->ICreateCenterLine ( P1, P2 );//draw the center line through
    P1, P2
    pModelDoc->ClearSelection();//clear selection

    LPSKETCHSEGMENT retval2;//define retval2
    pModelDoc->ICreateLine2 ( 0, 0, 0, 0.03, 0, 0, &retval2 );//draw line
    pModelDoc->ICreateLine2 ( 0.03, 0, 0, 0.03, 0.09, 0, &retval2 );//draw
    line
    pModelDoc->ICreateLine2 ( 0.03, 0.09, 0, 0, 0.09, 0, &retval2);
    pModelDoc->ICreateLine2 ( 0, 0.09, 0, 0, 0, 0, &retval2 );//draw line
    pModelDoc->InsertSketch();//quit sketch

    VARIANT_BOOL retvala;//define retvala
    VARIANT_BOOL retvalb;//define retvalb
    VARIANT_BOOL retvalc;//define retvalc
    VARIANT_BOOL retvald;//define retvald
    VARIANT_BOOL retvale;//define retvale
    VARIANT_BOOL retvalf;


    pModelDoc->SelectByID(auT("Line2"), auT("SKETCHSEGMENT"),0,
    0,0,&retvala);//
    pModelDoc->SelectByID(auT("Line3"), auT("SKETCHSEGMENT"),0,
    0,0,&retvalb);
    pModelDoc->SelectByID(auT("Line4"),
    auT("SKETCHSEGMENT"),0,0,0,&retvalc);
    pModelDoc->SelectByID(auT("Line5"),
    auT("SKETCHSEGMENT"),0,0,0,&retvald);
    pModelDoc->SelectByID(auT("Point2"),
    auT("SKETCHPOINT"),0,0,0,&retvale); //


    pPartDoc->FeatureRevolve (6.28318530718, 0, 0, 0);//

    pModelDoc->BlankSketch ( );//
    pModelDoc->ShowNamedView2(auT("*Isometric"),7);//
    pModelDoc->ViewZoomtofit2();//

    ////////the above codes are used to draw the cylinder and clear the
    sketch

    pModelDoc->SaveAs4("Cylinder.stl", swSaveAsCurrentVersion,
    swSaveAsOptions_SaveReferenced, &retvalf);
    /////this want to be added to save the part as STL format...
    but the compiling errors is that error C2039: 'SaveAs4' : is not a
    member of 'IModelDoc'
    what is the problem?
    and also i am not sure if it is right to define the parameters in the
    saveas4 as swSaveAsCurrentVersion, swSaveAsOptions_SaveReferenced,
    &retvalf);

    thanks for all the help
     
    syshieley, Apr 4, 2006
    #1
  2. syshieley

    syshieley Guest

    i am using visual C++6.0
     
    syshieley, Apr 4, 2006
    #2
  3. syshieley

    Brian Guest

    Running a simple record macro that accomplishes largely the same thing,
    SW auto inserts "Part.SaveAs2", which brings up a dialog box asking whether
    to export the selected body, or all bodies. Once confirmed, the stl is
    exported. Not having looked through the formatting for the command, it may
    be possible to auto-set the option, so that one does not have to contend
    with the dialog box.
    --
    Brian Hokanson
    Starting Line Products

     
    Brian, Apr 4, 2006
    #3
  4. syshieley

    syshieley Guest

    according to one of google friends's reply, i used MODELDOC2 other than
    MODELDOC, the problem solved...thanks so much
    finally i used the function as below:
    pModelDoc->SaveAs4(auT("D:\\Cylinder\\Cylinder.stl"), 0, 1, NULL, NULL,
    &retvalf);

    it works

    thanks
     
    syshieley, Apr 5, 2006
    #4
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.