22 #ifndef CAD4FE_api_sw_toolh
23 #define CAD4FE_api_sw_toolh
28 #if defined(USING_ATL)
29 #include <atl\atlvcl.h>
31 #include <Atl/atlbase.h>
32 #include <Atl/atlmod.h>
33 #include <SwConst_TLB.h>
34 #define SW_VERSION 2012
35 #include <SldWorks_TLB.h>
36 #include <smartvars.h>
39 using namespace Sldworks_tlb;
44 CAD4FE_COMMON_ITEM
void SW_ExitApp(CComPtr<ISldWorks> & __swApp);
46 CAD4FE_COMMON_ITEM
int SW_OpenDoc(
const CComPtr<ISldWorks> & __swApp,
char *filename, CComPtr<IModelDoc2>& __swModel,
char __configuration[]=
"");
47 CAD4FE_COMMON_ITEM
void SW_CloseDoc(CComPtr<IModelDoc2>& __swModel);
48 CAD4FE_COMMON_ITEM
void SW_CloseDoc(
const CComPtr<ISldWorks> & __swApp,
char *filename);
49 CAD4FE_COMMON_ITEM
void SW_GetActiveDoc(
const CComPtr<ISldWorks> & __swApp, CComPtr<IModelDoc2> &__swModel);
54 CAD4FE_COMMON_ITEM
int SW_Feature_Select(CComPtr<IFeature> __swFeature, CComPtr <ISelectData> __swSelData);
55 CAD4FE_COMMON_ITEM
template <
class T>
57 CAD4FE_COMMON_ITEM
int SW_Feature_Suppress(CComPtr<IModelDoc2> & __swModel, CComPtr<IFeature> & __swFeature);
58 CAD4FE_COMMON_ITEM
void SW_Feature_GetBoundingBox (CComPtr<IModelDoc2> & __swModel, CComPtr<IFeature> & __swFeature,
double __bbox[6]);
60 CAD4FE_COMMON_ITEM
void
63 CAD4FE_COMMON_ITEM
void
65 CAD4FE_COMMON_ITEM
void
75 CAD4FE_COMMON_ITEM std::multimap<int, CComPtr < IEdge > >
SW_GetItemEdges(LPUNKNOWN punk_item);
76 CAD4FE_COMMON_ITEM std::multimap<int, CComPtr < IEdge > >
SW_Loop_GetEdges(CComPtr<ILoop2> __swLoop);
77 CAD4FE_COMMON_ITEM std::multimap<int, CComPtr < IEdge > >
SW_Face_GetEdges(CComPtr<IFace2> __swFace);
87 CAD4FE_COMMON_ITEM
void SW_Face_GetBox(CComPtr<IFace2> __swFace,
double __bbox[6]);
96 CComPtr<IRefPlane> & __swRefPlane );
98 CAD4FE_COMMON_ITEM
void
101 CAD4FE_COMMON_ITEM
void SW_Face_GetCenterPoint(CComPtr<IFace2> __swFace, CComPtr<IModelDoc2> __swModel,
double __result[3]);
106 CAD4FE_COMMON_ITEM
int SW_FaceEdge_UVBox (CComPtr <IEdge> edge, CComPtr <IFace2> face,
double startUV[2],
double endUV[2]);
112 CAD4FE_COMMON_ITEM
SW_Surface_Parameterization(CComPtr<ISurface> __swSurface,
double __uRange[2],
double __vRange[2],
int __uBoundType[2],
int __vBoundType[2],
int __uProps[4],
int __vProps[4],
int __numProps[2]);
123 CAD4FE_COMMON_ITEM
int SW_Edge_GetParameters (CComPtr<IEdge> __swEdge,
double *__startUParam,
double *__endUParam,
double *__startPt,
double *__endPt,
double *__startTanDir,
double *__endTanDir,
int *_curveType,
int *_senseFlag);
124 CAD4FE_COMMON_ITEM
int SW_Edge_Select(CComPtr<IEdge> __swEdge, CComPtr <ISelectData> __swSelData);
125 CAD4FE_COMMON_ITEM
void SW_Edge_GetBody(CComPtr<IEdge> __swEdge, CComPtr<IBody2> & __swBody);
126 CAD4FE_COMMON_ITEM
void SW_Edge_EvaluateAtVertex(CComPtr<IEdge> __swEdge, CComPtr<IVertex> __swVertex,
double __point[3],
double __tangent[3]);
138 CAD4FE_COMMON_ITEM
int SW_Curve_Evaluate(CComPtr <ICurve> curve,
double U,
double point[3],
double tangent[3]);
146 CComPtr<IVertex> __swVertex,
154 double __startPnt[3],
156 std::vector<double> & __result);
157 CAD4FE_COMMON_ITEM
void
159 CAD4FE_COMMON_ITEM
void
160 SW_Edge_Tessellate(CComPtr<IEdge> & __swEdge,
double __uStart,
double __uEnd, std::vector<double> & __result);
173 double* __faceNormal,
174 double *__firstPrincipalDirection=NULL,
175 double *__secondPrincipalDirection=NULL,
176 double *__firstPrincipalCurvature=NULL,
177 double *__secondPrincipalCurvature=NULL
180 CAD4FE_COMMON_ITEM
int SW_Face_Select(CComPtr<IFace2> __swFace, CComPtr <ISelectData> __swSelData);
184 void SW_Edge_GetBody(CComPtr<IEdge> __swEdge, CComPtr<IBody2> & __swBody);
205 CAD4FE_COMMON_ITEM
void
206 SW_Body_GetBodyBox(CComPtr<IBody2> __swBody,
double __lowerDiagCorner[3],
double __upperDiagCorner[3]);
216 CAD4FE_COMMON_ITEM
int SW_Edge_Evaluate(CComPtr<IEdge> edge,
double U,
double point[3],
double tangent[3]);
218 CAD4FE_COMMON_ITEM
int SW_Edge_Evaluate_CheckDomain(CComPtr<IEdge> edge,
double StartUParam,
double EndUParam,
double U,
double point[3],
double tangent[3]);
236 CAD4FE_COMMON_ITEM
void SW_GetEdgeBounds(CComPtr<IEdge> __swEdge,
double *__startParam,
double *__endParam);
242 CAD4FE_COMMON_ITEM
void SW_GetEdgeBounds(CComPtr<IEdge> __swEdge,
double *__startParam,
double *__endParam,
double __startPnt[3],
double __endPnt[3]);
253 CAD4FE_COMMON_ITEM
int SW_Surface_Evaluate1(CComPtr<ISurface> surface,
double U,
double V,
double point[3],
double DU[3],
double DV[3],
double normal[3]);
258 CAD4FE_COMMON_ITEM
int SW_Surface_Evaluate1(CComPtr<IFace2> face,
double U,
double V,
double point[3],
double DU[3],
double DV[3],
double normal[3]);
260 CAD4FE_COMMON_ITEM
void
263 CAD4FE_COMMON_ITEM
void
267 double U,
double V,
double evaluatedPoint[3],
268 double DerU[3],
double DerV[3],
double DerUV[3],
double DerUU[3],
double DerVV[3],
270 int *numUDerivs,
int *numVDerivs,
273 double U,
double V,
double evaluatedPoint[3],
274 double DerU[3],
double DerV[3],
double DerUV[3],
double DerUU[3],
double DerVV[3],
276 int *numUDerivs,
int *numVDerivs,
280 double U,
double V,
double evaluatedPoint[3],
281 double DerU[3],
double DerV[3],
double DerUV[3],
double DerUU[3],
double DerVV[3],
283 int *numUDerivs,
int *numVDerivs,
284 long surfIdentity = -516);
296 double nChordTol = 0.000001,
297 double nLengthTol = 0.000001);
301 double __origin[3],
double __normal[3],
double __XVector[3]);
307 CAD4FE_COMMON_ITEM
void
309 double nChordTol = .001,
310 double nLengthTol = .001);
329 CAD4FE_COMMON_ITEM
SW_GetEdgeFaces(CComPtr<IEdge> __swEdge, CComPtr<IFace2> & __swFace1, CComPtr<IFace2> & __swFace2);
353 CComQIPtr <Sldworks_tlb::IEntity> swQIEnt ( __swT );
355 VARIANT_BOOL Append = __append ? 1 : 0;
356 swQIEnt->Select2(Append, __mark, &retval);
364 CAD4FE_COMMON_ITEM
void SW_GetActiveView (CComPtr<IModelDoc2> __swModel, CComPtr<IModelView> & __swModelView);
365 CAD4FE_COMMON_ITEM
bool SW_Face_GetMaterialPropertyValues2(CComPtr<IFace2> __swFace,
double *R,
double *G,
double *B,
double *ambient,
double *diffuse,
double *specular,
double *shininess,
double *transparency,
double *emission);
366 CAD4FE_COMMON_ITEM
bool SW_SelectedEdgeProperties(CComPtr<IModelDoc2> __swModel, CComPtr<IEdge> __swEdge, std::string & __retName,
bool & name_existed_before);
367 CAD4FE_COMMON_ITEM
bool SW_SelectedEdgeProperties(CComPtr<IModelDoc2> __swModel, CComPtr<IEdge> __swEdge,
char * &,
bool & name_existed_before);
368 CAD4FE_COMMON_ITEM
bool SW_SelectedFaceProperties(CComPtr<IModelDoc2> __swModel, CComPtr<IFace2> __swFace,
char * & __retName,
bool & name_existed_before);
369 CAD4FE_COMMON_ITEM
bool SW_SelectedFaceProperties(CComPtr<IModelDoc2> __swModel, CComPtr<IFace2> __swFace, std::string & __retName,
bool & name_existed_before);
370 CAD4FE_COMMON_ITEM
bool SW_Face_NameById(CComPtr<IModelDoc2> __swModel, CComPtr<IFace2> __swFace,
int & __id,
bool & name_existed_before);
371 CAD4FE_COMMON_ITEM
bool SW_Edge_NameById(CComPtr<IModelDoc2> __swModel, CComPtr<IEdge> __swEdge,
int & __id,
bool & name_existed_before);
373 CAD4FE_COMMON_ITEM
void SW_Model_AddConfiguration(CComPtr<IModelDoc2> & __swModel, std::string __strname, CComPtr<IConfiguration> & __result);
375 CAD4FE_COMMON_ITEM
bool SW_SelectedEdgeProperties(CComPtr<IModelDoc2> __swModel, CComPtr<IEdge> __swEdge,
char * & __retName,
bool & name_existed_before);
384 CAD4FE_COMMON_ITEM
int SW_Sketch_Select(CComPtr<ISketch> __swSketch, CComPtr <ISelectData> __swSelData);
386 CAD4FE_COMMON_ITEM
int SW_SketchPoint_Select(CComPtr<ISketchPoint> __swSketchPoint, CComPtr <ISelectData> __swSelData);
387 CAD4FE_COMMON_ITEM
void SW_Model_InsertSplitLine ( CComPtr<IModelDoc2> __swModel, CComPtr<ISketch> __swSketch, CComPtr<IFace2> __swFace,
388 std::map <
int, CComPtr<IFace2> > & __resultFaces );
390 CComPtr<IFace2> __swFace,
double __vertex1coordinates[3],
double __vertex2coordinates[3],
391 std::map <
int, CComPtr<IFace2> > & __resultFaces);
392 CAD4FE_COMMON_ITEM
void
393 SW_Model_CreateRefPlane(CComPtr<IModelDoc2> __swModel,
double __rootPoint[3],
double __normal[3], CComPtr<IRefPlane> & __swRefPlane );
416 CComPtr<T> * __swEnt =
new CComPtr<T>;
418 CComPtr <ISelectionMgr> swSelMgr;
420 __swModel->get_ISelectionManager ( &swSelMgr );
422 CComPtr <IDispatch> pUnk1;
425 swSelMgr->GetSelectedObjectCount(&count);
427 for (
int i=1; i <= count ; i++)
430 if ( S_OK != swSelMgr->GetSelectedObject6 (i, __mark, &pUnk1) )
440 CComQIPtr<T> qiSelectedEnt (pUnk1);
441 CComPtr<T> selectedEnt (qiSelectedEnt);
445 *__swEnt = selectedEnt;
460 CComPtr <ISelectionMgr> swSelMgr;
461 CComPtr<T> * __swEnt =
new CComPtr<T>;
463 __swModel->get_ISelectionManager ( &swSelMgr );
465 CComPtr <IDispatch> pUnk1;
468 swSelMgr->GetSelectedObjectCount(&count);
472 for (
int i=1; i <= count ; i++)
475 if ( S_OK != swSelMgr->GetSelectedObject6 (i, __mark, &pUnk1) )
485 CComQIPtr<T> qiSelectedEnt (pUnk1);
486 CComPtr<T> selectedEnt (qiSelectedEnt);
490 if (counter+1 == __nth)
492 *__swEnt = selectedEnt;
513 LPUNKNOWN iUnk = NULL;
515 hres = __swFeature->IGetDefinition( &iUnk );
516 hres = iUnk->QueryInterface( __uuidof(T), (LPVOID*)&__swFeatData);
525 CAD4FE_COMMON_ITEM
int
528 CAD4FE_COMMON_ITEM CComPtr<IBody2> &
529 SW_Part_GetBody(CComPtr<IPartDoc> __swPart,
int __index, swBodyType_e __swBodyType,
bool __onlyVisibleBodies=
true);
534 CAD4FE_COMMON_ITEM
void
540 CAD4FE_COMMON_ITEM
void SW_Part_FindEdgeById(CComPtr<IPartDoc> __swPart,
int __id, CComPtr <IEdge> & __swEdge);
545 CAD4FE_COMMON_ITEM
void SW_Part_FindFaceById(CComPtr<IPartDoc> __swPart,
int __id, CComPtr <IFace2> & __swFace);
568 CAD4FE_COMMON_ITEM
void
569 SW_RefPlane_GetParams (CComPtr<IRefPlane> __swRefPlane,
double __origin[3],
double __normal[3],
double __XVector[3]);
572 #define FACENAME_FORMAT "F %d "
573 #define FACENAME_STRLEN 64
574 #define EDGENAME_FORMAT "E %d "
575 #define EDGENAME_STRLEN 64
576 #define VERTEXNAME_FORMAT "Vertex %f, %f, %f "
577 #define VERTEXNAME_STRLEN 64
582 bool CAD4FE_COMMON_ITEM
SW_FaceName_Set(CComPtr<IPartDoc> __swPart, CComPtr<IFace2>, std::string &,
bool overwrite_option=
false);
583 bool CAD4FE_COMMON_ITEM
SW_FaceName_Set(CComPtr<IPartDoc> __swPart, CComPtr<IFace2>,
char *,
bool overwrite_option=
false);
585 bool CAD4FE_COMMON_ITEM
SW_FaceName_Get(CComPtr<IPartDoc> __swPart, CComPtr<IFace2>, std::string &);
586 bool CAD4FE_COMMON_ITEM
SW_FaceName_Get(CComPtr<IPartDoc> __swPart, CComPtr<IFace2>,
char **);
589 CAD4FE_COMMON_ITEM
int
591 double __baseDirectionIn[3],
592 CComPtr<IFace2> & __swFace,
double __intrPoint[3],
double __intrPointNorm[3]);
597 CAD4FE_COMMON_ITEM
void
610 bool CAD4FE_COMMON_ITEM
SW_EdgeName_Set(CComPtr<IPartDoc>, CComPtr<IEdge>, std::string &,
bool overwrite_option=
false);
611 bool CAD4FE_COMMON_ITEM
SW_EdgeName_Set(CComPtr<IPartDoc>, CComPtr<IEdge>,
char *,
bool overwrite_option=
false);
613 bool CAD4FE_COMMON_ITEM
SW_EdgeName_Get(CComPtr<IPartDoc>, CComPtr<IEdge>, std::string &);
615 bool CAD4FE_COMMON_ITEM
SW_EdgeName_Get(CComPtr<IPartDoc>, CComPtr<IEdge>,
const char *);
620 bool CAD4FE_COMMON_ITEM
SW_VertexName_Set(CComPtr<IPartDoc>, CComPtr<IVertex>, std::string &,
bool overwrite_option=
false);
621 bool CAD4FE_COMMON_ITEM
SW_VertexName_Set(CComPtr<IPartDoc>, CComPtr<IVertex>,
char *,
bool overwrite_option=
false);
627 bool CAD4FE_COMMON_ITEM
SW_EntityName_Set(CComPtr<IPartDoc>, CComPtr<Sldworks_tlb::IEntity> __swEntity, BSTR & __bstrName,
bool overwrite=
false);
628 bool CAD4FE_COMMON_ITEM
SW_EntityName_Get(CComPtr<IPartDoc>, CComPtr<Sldworks_tlb::IEntity> __swEntity, BSTR & __bstrName);