js_ext_comx_cascade_io.cc 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675
  1. #include <comx_napi.hxx>
  2. #include <type_cast.hxx>
  3. using namespace KMAS::type;
  4. #include <map>
  5. #include <set>
  6. #include <string>
  7. #include <vector>
  8. using namespace std;
  9. // Open Cascade library.
  10. #include <BRepBuilderAPI_MakeEdge.hxx>
  11. #include <BRepBuilderAPI_MakeFace.hxx>
  12. #include <BRepBuilderAPI_MakeWire.hxx>
  13. #include <BRepPrimAPI_MakeBox.hxx>
  14. #include <BRepPrimAPI_MakeCone.hxx>
  15. #include <BRepPrimAPI_MakeCylinder.hxx>
  16. #include <BRepPrimApI_MakeSphere.hxx>
  17. #include <BRep_Tool.hxx>
  18. #include <Standard_TypeDef.hxx>
  19. #include <TopTools_HSequenceOfShape.hxx>
  20. #include <TopTools_ListIteratorOfListOfShape.hxx>
  21. #include <TopoDS.hxx>
  22. #include <TopoDS_Edge.hxx>
  23. #include <TopoDS_Face.hxx>
  24. #include <TopoDS_Wire.hxx>
  25. #include <gp_Pln.hxx>
  26. #include <gp_Pnt.hxx>
  27. #include <BRepTools.hxx>
  28. #include <IGESControl_Controller.hxx>
  29. #include <IGESControl_Reader.hxx>
  30. #include <IGESControl_Writer.hxx>
  31. #include <Interface_Static.hxx>
  32. #include <STEPControl_Controller.hxx>
  33. #include <STEPControl_Reader.hxx>
  34. #include <STEPControl_Writer.hxx>
  35. #include <STEPConstruct.hxx>
  36. #include <STEPConstruct_Styles.hxx>
  37. #include <StepVisual_StyledItem.hxx>
  38. #include <TColStd_HSequenceOfTransient.hxx>
  39. #include <XSControl_TransferReader.hxx>
  40. #include <XSControl_WorkSession.hxx>
  41. // #include <BRepMesh.hxx>
  42. #include <Poly_Triangulation.hxx>
  43. #include <TShort_Array1OfShortReal.hxx>
  44. #include <TopExp_Explorer.hxx>
  45. #include <IGESCAFControl_Reader.hxx>
  46. #include <Quantity_Color.hxx>
  47. #include <STEPCAFControl_Reader.hxx>
  48. #include <TDF_ChildIterator.hxx>
  49. #include <TDF_Label.hxx>
  50. #include <TDocStd_Document.hxx>
  51. #include <XCAFApp_Application.hxx>
  52. #include <XCAFDoc_ColorTool.hxx>
  53. #include <XCAFDoc_ColorType.hxx>
  54. #include <XCAFDoc_DocumentTool.hxx>
  55. #include <XCAFDoc_ShapeTool.hxx>
  56. // Model IO Begin
  57. #include <ModelIO/ModelIO.h>
  58. // Model IO End
  59. string ReadSTEPEx(const Standard_CString &aFileName, ModelIO &readStep) {
  60. readStep.Read(aFileName, GeomSTP);
  61. readStep.Perform();
  62. string ret_val = readStep.GetJson();
  63. return ret_val;
  64. }
  65. string ReadIGESEx(const Standard_CString &aFileName, ModelIO &readIgs) {
  66. readIgs.Read(aFileName, GeomIGS);
  67. readIgs.Perform();
  68. string ret_val = readIgs.GetJson();
  69. return ret_val;
  70. }
  71. string ReadBREPEx(const Standard_CString &aFileName, ModelIO &readBRep) {
  72. readBRep.Read(aFileName, GeomBREP);
  73. readBRep.Perform();
  74. string ret_val = readBRep.GetJson();
  75. return ret_val;
  76. }
  77. string ReadSTLEx(const Standard_CString &aFileName, ModelIO &readStl) {
  78. readStl.Read(aFileName, GeomSTL);
  79. readStl.Perform();
  80. string ret_val = readStl.GetJson();
  81. return ret_val;
  82. }
  83. string ReadGLTFEx(const Standard_CString &aFileName, ModelIO &readGltf) {
  84. readGltf.Read(aFileName, GeomGLTF);
  85. readGltf.Perform();
  86. string ret_val = readGltf.GetJson();
  87. return ret_val;
  88. }
  89. bool WriteSTEPEx(const Standard_CString &aFileName, ModelIO &model) {
  90. return model.Write(aFileName, GeomSTP);
  91. }
  92. bool WriteIGESEx(const Standard_CString &aFileName, ModelIO &model) {
  93. return model.Write(aFileName, GeomSTP);
  94. }
  95. bool WriteBREPEx(const Standard_CString &aFileName, ModelIO &model) {
  96. return model.Write(aFileName, GeomBREP);
  97. }
  98. bool WriteSTLEx(const Standard_CString &aFileName, ModelIO &model) {
  99. return model.Write(aFileName, GeomSTL);
  100. }
  101. bool WriteGLTFEx(const Standard_CString &aFileName, ModelIO &model) {
  102. return model.Write(aFileName, GeomGLTF);
  103. }
  104. bool ReadIGES(const Standard_CString &aFileName,
  105. TopTools_HSequenceOfShape &aHSequenceOfShape) {
  106. // aHSequenceOfShape.Clear();
  107. IGESControl_Reader Reader;
  108. Standard_Integer status = Reader.ReadFile(aFileName);
  109. if (status != IFSelect_RetDone) {
  110. return false;
  111. }
  112. Reader.TransferRoots();
  113. TopoDS_Shape aShape = Reader.OneShape();
  114. aHSequenceOfShape.Append(aShape);
  115. return true;
  116. }
  117. bool SaveIges(const std::string &igesFile,
  118. TopTools_HSequenceOfShape &aHSequenceOfShape) {
  119. IGESControl_Controller::Init();
  120. IGESControl_Writer igesWriter;
  121. for (int index = 1; index <= aHSequenceOfShape.Length(); ++index) {
  122. TopoDS_Shape shape = aHSequenceOfShape.ChangeValue(index);
  123. igesWriter.AddShape(shape);
  124. }
  125. igesWriter.ComputeModel();
  126. return igesWriter.Write(igesFile.c_str());
  127. }
  128. bool ReadSTEP(const Standard_CString &aFileName,
  129. TopTools_HSequenceOfShape &aHSequenceOfShape) {
  130. // aHSequenceOfShape.Clear();
  131. // create additional log file
  132. STEPControl_Reader aReader;
  133. IFSelect_ReturnStatus status = aReader.ReadFile(aFileName);
  134. if (status != IFSelect_RetDone)
  135. return false;
  136. aReader.WS()->TransferReader()->TransientProcess()->SetTraceLevel(
  137. 1); // increase default trace level
  138. Standard_Boolean failsonly = Standard_False;
  139. aReader.PrintCheckLoad(failsonly, IFSelect_ItemsByEntity);
  140. // Root transfers
  141. Standard_Integer nbr = aReader.NbRootsForTransfer();
  142. aReader.PrintCheckTransfer(failsonly, IFSelect_ItemsByEntity);
  143. for (Standard_Integer n = 1; n <= nbr; n++) {
  144. /*Standard_Boolean ok =*/aReader.TransferRoot(n);
  145. }
  146. // Collecting resulting entities
  147. Standard_Integer nbs = aReader.NbShapes();
  148. if (nbs == 0) {
  149. return false;
  150. }
  151. for (Standard_Integer i = 1; i <= nbs; i++) {
  152. aHSequenceOfShape.Append(aReader.Shape(i));
  153. }
  154. return true;
  155. }
  156. // STEPControl_AsIs
  157. bool SaveSTEP(const std::string &aFileName,
  158. TopTools_HSequenceOfShape &aHSequenceOfShape) {
  159. // CREATE THE WRITER
  160. STEPControl_Writer aWriter;
  161. IFSelect_ReturnStatus status;
  162. for (Standard_Integer i = 1; i <= aHSequenceOfShape.Length(); i++) {
  163. status = aWriter.Transfer(aHSequenceOfShape.Value(i),
  164. STEPControl_AsIs);
  165. if (status != IFSelect_RetDone)
  166. return false;
  167. }
  168. status = aWriter.Write(aFileName.c_str());
  169. return true;
  170. }
  171. bool SaveBREP(const std::string &aFileName,
  172. TopTools_HSequenceOfShape &aHSequenceOfShape) {
  173. // CREATE THE WRITER
  174. std::filebuf aFileBuf;
  175. std::ostream aStream(&aFileBuf);
  176. if (!aFileBuf.open(aFileName, ios::out)) {
  177. return false;
  178. }
  179. for (Standard_Integer i = 1; i <= aHSequenceOfShape.Length(); i++) {
  180. BRepTools::Write(aHSequenceOfShape.Value(i), aStream);
  181. }
  182. return true;
  183. }
  184. bool OpenBREP(const std::string &aFileName,
  185. TopTools_HSequenceOfShape &aHSequenceOfShape) {
  186. TopoDS_Face aShape;
  187. std::filebuf aFileBuf;
  188. std::istream aStream(&aFileBuf);
  189. if (!aFileBuf.open(aFileName, ios::in)) {
  190. return false;
  191. }
  192. BRep_Builder aBuilder;
  193. BRepTools::Read(aShape, aStream, aBuilder);
  194. aHSequenceOfShape.Append(aShape);
  195. return true;
  196. }
  197. ////////////////////////////////////////////////////////////////////////////
  198. // system pre-define segment, please don't modify the following codes.
  199. JS_EXT_DATA_DECLARE()
  200. ///////////////////////////////////////////////////////////////////////////
  201. // implement ImportIgesEx function
  202. //#define GETFACEHASHCODES_FUNC_USAGE \
  203. // "GetFaceHashCodes Usage: var res = comx.occio.GetFaceHashCodes(db);"
  204. // JS_EXT_FUNC_BEGIN(GetFaceHashCodes, 1, GETFACEHASHCODES_FUNC_USAGE) {
  205. // unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  206. //
  207. // ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  208. // string ret_val = rDB.GetFaceHashCodes();
  209. //
  210. // JS_EXT_FUNC_ASSIGN_RET(ret_val);
  211. // }
  212. // JS_EXT_FUNC_END()
  213. std::vector<int> splitAndConvertToInt(const std::string& input,
  214. char delimiter) {
  215. std::vector<int> result;
  216. std::stringstream ss(input);
  217. std::string token;
  218. // ʹ�� std::getline �ָ��ַ���
  219. while (std::getline(ss, token, delimiter)) {
  220. // ת��Ϊ���������ӵ� vector
  221. try {
  222. int number = std::stoi(token); // ת��Ϊ����
  223. result.push_back(number);
  224. }
  225. catch (const std::invalid_argument& e) {
  226. std::cerr << "Invalid number: " << token << std::endl;
  227. }
  228. catch (const std::out_of_range& e) {
  229. std::cerr << "Number out of range: " << token
  230. << std::endl;
  231. }
  232. }
  233. return result;
  234. }
  235. #define GETCOMPONMENTSTEP_FUNC_USAGE \
  236. "GetComponentStep Usage: var res = comx.occio.GetComponentStep(id, path);"
  237. JS_EXT_FUNC_BEGIN(GetComponentStep, 3, GETCOMPONMENTSTEP_FUNC_USAGE) {
  238. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  239. int id = JS_EXT_PARA(int, 1);
  240. string path = JS_EXT_PARA(string, 2);
  241. ModelIO& rDB = (*(ModelIO*)((void*)ullDB));
  242. //rDB.CreateComponentStpById(id, path.c_str());
  243. // JS_EXT_FUNC_ASSIGN_RET(ret_val);
  244. }
  245. JS_EXT_FUNC_END()
  246. #define GETFACEBREP_FUNC_USAGE \
  247. "GetFaceBrep Usage: var res = comx.occio.GetFaceBrep(id, path);"
  248. JS_EXT_FUNC_BEGIN(GetFaceBrep, 3, GETFACEBREP_FUNC_USAGE) {
  249. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  250. string StringID = JS_EXT_PARA(string, 1);
  251. string path = JS_EXT_PARA(string, 2);
  252. vector<int> Id = splitAndConvertToInt(StringID, ',');
  253. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  254. rDB.CreateBrepById(Id, path.c_str());
  255. // JS_EXT_FUNC_ASSIGN_RET(ret_val);
  256. }
  257. JS_EXT_FUNC_END()
  258. #define GETFACEPOINT_FUNC_USAGE \
  259. "GetFacePoint Usage: var res = comx.occio.GetFacePoint(id);"
  260. JS_EXT_FUNC_BEGIN(GetFacePoint, 2, GETFACEPOINT_FUNC_USAGE) {
  261. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  262. int id = JS_EXT_PARA(int, 1);
  263. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  264. double x = 0;
  265. double y = 0;
  266. double z = 0;
  267. rDB.CreateCenterById(id, x, y, z);
  268. string ret_val =
  269. "point:" + to_string(x) + " " + to_string(y) + " " + to_string(z);
  270. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  271. }
  272. JS_EXT_FUNC_END()
  273. ///////////////////////////////////////////////////////////////////////////
  274. // implement ImportIgesEx function
  275. #define IMPORTIGESEX_FUNC_USAGE \
  276. "ImportIgesEx Usage: var res = comx.occio.ImportIgesEx(db, " \
  277. "filename);"
  278. JS_EXT_FUNC_BEGIN(ImportIgesEx, 2, IMPORTIGESEX_FUNC_USAGE) {
  279. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  280. string strFilename = JS_EXT_PARA(string, 1);
  281. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  282. string ret_val = ReadIGESEx(strFilename.c_str(), rDB);
  283. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  284. }
  285. JS_EXT_FUNC_END()
  286. ///////////////////////////////////////////////////////////////////////////
  287. // implement ImportStepEx function
  288. #define IMPORTSTEPEX_FUNC_USAGE \
  289. "ImportStepEx Usage: var res = comx.occio.ImportStepEx(db, " \
  290. "filename);"
  291. JS_EXT_FUNC_BEGIN(ImportStepEx, 2, IMPORTSTEPEX_FUNC_USAGE) {
  292. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  293. string strFilename = JS_EXT_PARA(string, 1);
  294. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  295. string ret_val = ReadSTEPEx(strFilename.c_str(), rDB);
  296. //cout << 11 << endl;
  297. //rDB.modelTrees = ret_val;
  298. //cout << rDB.modelTrees << endl;
  299. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  300. }
  301. JS_EXT_FUNC_END()
  302. //////////////////////////////////////////////////////////////////////////
  303. // implement ImportBRepEx function
  304. #define IMPORTBREPEX_FUNC_USAGE \
  305. "ImportBRepEx Usage: var res = comx.occio.ImportBRepEx(db, " \
  306. "filename);"
  307. JS_EXT_FUNC_BEGIN(ImportBRepEx, 2, IMPORTBREPEX_FUNC_USAGE) {
  308. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  309. string strFilename = JS_EXT_PARA(string, 1);
  310. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  311. string ret_val = ReadBREPEx(strFilename.c_str(), rDB);
  312. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  313. }
  314. JS_EXT_FUNC_END()
  315. //////////////////////////////////////////////////////////////////////////
  316. // implement ImportStlEx function
  317. #define IMPORTSTLEX_FUNC_USAGE \
  318. "ImportStlEx Usage: var res = comx.occio.ImportStlEx(db, " \
  319. "filename);"
  320. JS_EXT_FUNC_BEGIN(ImportStlEx, 2, IMPORTSTLEX_FUNC_USAGE) {
  321. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  322. string strFilename = JS_EXT_PARA(string, 1);
  323. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  324. string ret_val = ReadSTLEx(strFilename.c_str(), rDB);
  325. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  326. }
  327. JS_EXT_FUNC_END()
  328. //////////////////////////////////////////////////////////////////////////
  329. // implement ImportGltfEx function
  330. #define IMPORTGLTFEX_FUNC_USAGE \
  331. "ImportGltfEx Usage: var res = comx.occio.ImportGltfEx(db, " \
  332. "filename);"
  333. JS_EXT_FUNC_BEGIN(ImportGltfEx, 2, IMPORTGLTFEX_FUNC_USAGE) {
  334. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  335. string strFilename = JS_EXT_PARA(string, 1);
  336. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  337. string ret_val = ReadGLTFEx(strFilename.c_str(), rDB);
  338. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  339. }
  340. JS_EXT_FUNC_END()
  341. ///////////////////////////////////////////////////////////////////////////
  342. // implement ExportIges function
  343. #define EXPORTIGESEX_FUNC_USAGE \
  344. "ExportIgesEx Usage: var res = comx.occio.ExportIgesEx(db, " \
  345. "filename);"
  346. JS_EXT_FUNC_BEGIN(ExportIgesEx, 2, EXPORTIGESEX_FUNC_USAGE) {
  347. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  348. string strFilename = JS_EXT_PARA(string, 1);
  349. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  350. bool ret_val = WriteIGESEx(strFilename.c_str(), rDB);
  351. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  352. }
  353. JS_EXT_FUNC_END()
  354. ///////////////////////////////////////////////////////////////////////////
  355. // implement ExportStep function
  356. #define EXPORTSTEPEX_FUNC_USAGE \
  357. "ExportStepEx Usage: var res = comx.occio.ExportStepEx(db, " \
  358. "filename);"
  359. JS_EXT_FUNC_BEGIN(ExportStepEx, 2, EXPORTSTEPEX_FUNC_USAGE) {
  360. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  361. string strFilename = JS_EXT_PARA(string, 1);
  362. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  363. bool ret_val = WriteSTEPEx(strFilename.c_str(), rDB);
  364. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  365. }
  366. JS_EXT_FUNC_END()
  367. ///////////////////////////////////////////////////////////////////////////
  368. // implement ExportBRep function
  369. #define EXPORTBREPEX_FUNC_USAGE \
  370. "ExportBRepEx Usage: var res = comx.occio.ExportBRepEx(db, " \
  371. "filename);"
  372. JS_EXT_FUNC_BEGIN(ExportBRepEx, 2, EXPORTBREPEX_FUNC_USAGE) {
  373. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  374. string strFilename = JS_EXT_PARA(string, 1);
  375. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  376. cout << "ExportBRepEx" << endl;
  377. bool ret_val = WriteBREPEx(strFilename.c_str(), rDB);
  378. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  379. }
  380. JS_EXT_FUNC_END()
  381. ///////////////////////////////////////////////////////////////////////////
  382. // implement ExportStl function
  383. #define EXPORTSTLEX_FUNC_USAGE \
  384. "ExportStlEx Usage: var res = comx.occio.ExportStlEx(db, " \
  385. "filename);"
  386. JS_EXT_FUNC_BEGIN(ExportStlEx, 2, EXPORTSTLEX_FUNC_USAGE) {
  387. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  388. string strFilename = JS_EXT_PARA(string, 1);
  389. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  390. bool ret_val = WriteSTLEx(strFilename.c_str(), rDB);
  391. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  392. }
  393. JS_EXT_FUNC_END()
  394. ///////////////////////////////////////////////////////////////////////////
  395. // implement ExportStl function
  396. #define EXPORTGLTFEX_FUNC_USAGE \
  397. "ExportGltfEx Usage: var res = comx.occio.ExportGltfEx(db, " \
  398. "filename);"
  399. JS_EXT_FUNC_BEGIN(ExportGltfEx, 2, EXPORTGLTFEX_FUNC_USAGE) {
  400. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  401. string strFilename = JS_EXT_PARA(string, 1);
  402. ModelIO &rDB = (*(ModelIO *)((void *)ullDB));
  403. bool ret_val = WriteGLTFEx(strFilename.c_str(), rDB);
  404. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  405. }
  406. JS_EXT_FUNC_END()
  407. ///////////////////////////////////////////////////////////////////////////
  408. // implement ImportIges function
  409. #define IMPORTIGES_FUNC_USAGE \
  410. "ImportIges Usage: var res = comx.occio.ImportIges(db, filename);"
  411. JS_EXT_FUNC_BEGIN(ImportIges, 2, IMPORTIGES_FUNC_USAGE) {
  412. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  413. string strFilename = JS_EXT_PARA(string, 1);
  414. TopTools_HSequenceOfShape &rDB =
  415. (*(TopTools_HSequenceOfShape *)((void *)ullDB));
  416. string ret_val = type_cast<string>(ReadIGES(strFilename.c_str(), rDB));
  417. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  418. }
  419. JS_EXT_FUNC_END()
  420. ///////////////////////////////////////////////////////////////////////////
  421. // implement ImportStep function
  422. #define IMPORTSTEP_FUNC_USAGE \
  423. "ImportStep Usage: var res = comx.occio.ImportStep(db, filename);"
  424. JS_EXT_FUNC_BEGIN(ImportStep, 2, IMPORTSTEP_FUNC_USAGE) {
  425. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  426. string strFilename = JS_EXT_PARA(string, 1);
  427. TopTools_HSequenceOfShape &rDB =
  428. (*(TopTools_HSequenceOfShape *)((void *)ullDB));
  429. string ret_val = type_cast<string>(ReadSTEP(strFilename.c_str(), rDB));
  430. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  431. }
  432. JS_EXT_FUNC_END()
  433. ///////////////////////////////////////////////////////////////////////////
  434. // implement ExportIges function
  435. #define EXPORTIGES_FUNC_USAGE \
  436. "ExportIges Usage: var res = comx.occio.ExportIges(db, filename);"
  437. JS_EXT_FUNC_BEGIN(ExportIges, 2, EXPORTIGES_FUNC_USAGE) {
  438. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  439. string strFilename = JS_EXT_PARA(string, 1);
  440. TopTools_HSequenceOfShape &rDB =
  441. (*(TopTools_HSequenceOfShape *)((void *)ullDB));
  442. string ret_val = type_cast<string>(SaveIges(strFilename, rDB));
  443. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  444. }
  445. JS_EXT_FUNC_END()
  446. ///////////////////////////////////////////////////////////////////////////
  447. // implement ExportStep function
  448. #define EXPORTSTEP_FUNC_USAGE \
  449. "ExportStep Usage: var res = comx.occio.ExportStep(db, filename);"
  450. JS_EXT_FUNC_BEGIN(ExportStep, 2, EXPORTSTEP_FUNC_USAGE) {
  451. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  452. string strFilename = JS_EXT_PARA(string, 1);
  453. TopTools_HSequenceOfShape &rDB =
  454. (*(TopTools_HSequenceOfShape *)((void *)ullDB));
  455. string ret_val = type_cast<string>(SaveSTEP(strFilename, rDB));
  456. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  457. }
  458. JS_EXT_FUNC_END()
  459. ///////////////////////////////////////////////////////////////////////////
  460. // implement SaveBrep function
  461. #define SAVEBREP_FUNC_USAGE \
  462. "SaveBrep Usage: var res = comx.occio.SaveBrep(db, filename);"
  463. JS_EXT_FUNC_BEGIN(SaveBrep, 2, SAVEBREP_FUNC_USAGE) {
  464. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  465. string strFilename = JS_EXT_PARA(string, 1);
  466. TopTools_HSequenceOfShape &rDB =
  467. (*(TopTools_HSequenceOfShape *)((void *)ullDB));
  468. string ret_val = type_cast<string>(SaveBREP(strFilename, rDB));
  469. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  470. }
  471. JS_EXT_FUNC_END()
  472. ///////////////////////////////////////////////////////////////////////////
  473. // implement OpenBrep function
  474. #define OPENBREP_FUNC_USAGE \
  475. "OpenBrep Usage: var res = comx.occio.OpenBrep(db, filename);"
  476. JS_EXT_FUNC_BEGIN(OpenBrep, 2, OPENBREP_FUNC_USAGE) {
  477. unsigned long long ullDB = JS_EXT_PARA(unsigned long long, 0);
  478. string strFilename = JS_EXT_PARA(string, 1);
  479. TopTools_HSequenceOfShape &rDB =
  480. (*(TopTools_HSequenceOfShape *)((void *)ullDB));
  481. string ret_val = type_cast<string>(OpenBREP(strFilename, rDB));
  482. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  483. }
  484. JS_EXT_FUNC_END()
  485. ///////////////////////////////////////////////////////////////////////////
  486. // implement Plus function
  487. #define PLUS_FUNC_USAGE "Plus Usage: var res = comx.occio.Plus(left, right);"
  488. JS_EXT_FUNC_BEGIN(Plus, 2, PLUS_FUNC_USAGE) {
  489. // para_type p0 = JS_EXT_PARA(para_type, 0);
  490. double left = JS_EXT_PARA(double, 0);
  491. double right = JS_EXT_PARA(double, 1);
  492. string ret_val = type_cast<string>(left + right);
  493. JS_EXT_FUNC_ASSIGN_RET(ret_val);
  494. }
  495. JS_EXT_FUNC_END()
  496. // 0x4cc0c89c-0x0090-0x47e3-0xb7-0x63-0xc1-0xaf-0xf1-0xe7-0x99-0x4e
  497. // please don't modify or delete the previous line codes.
  498. ////////////////////////////////////////////////////////////////////////////
  499. // please set your js.ext namespace in the following codes.
  500. #define JS_EXT_NS "comx.occio"
  501. ////////////////////////////////////////////////////////////////////////////
  502. // entry segment, please replace your function name in the following codes.
  503. JS_EXT_ENTRY_BEGIN()
  504. JS_EXT_ENTRY(ImportIgesEx)
  505. JS_EXT_ENTRY(ImportStepEx)
  506. JS_EXT_ENTRY(ImportBRepEx)
  507. JS_EXT_ENTRY(ImportStlEx)
  508. JS_EXT_ENTRY(ImportGltfEx)
  509. JS_EXT_ENTRY(ExportIgesEx)
  510. JS_EXT_ENTRY(ExportStepEx)
  511. JS_EXT_ENTRY(ExportBRepEx)
  512. JS_EXT_ENTRY(ExportStlEx)
  513. JS_EXT_ENTRY(ExportGltfEx)
  514. JS_EXT_ENTRY(ImportIges)
  515. JS_EXT_ENTRY(ImportStep)
  516. JS_EXT_ENTRY(ExportIges)
  517. JS_EXT_ENTRY(ExportStep)
  518. JS_EXT_ENTRY(SaveBrep)
  519. JS_EXT_ENTRY(OpenBrep)
  520. JS_EXT_ENTRY(Plus)
  521. JS_EXT_ENTRY(GetFaceBrep)
  522. JS_EXT_ENTRY(GetFacePoint)
  523. JS_EXT_ENTRY(GetComponentStep)
  524. JS_EXT_ENTRY_END()
  525. JS_EXT_MAIN_BEGIN(JS_EXT_NS, 20)
  526. JS_EXT_FUNC_REG(ImportIgesEx)
  527. JS_EXT_FUNC_REG(ImportStepEx)
  528. JS_EXT_FUNC_REG(ImportBRepEx)
  529. JS_EXT_FUNC_REG(ImportStlEx)
  530. JS_EXT_FUNC_REG(ImportGltfEx)
  531. JS_EXT_FUNC_REG(ExportIgesEx)
  532. JS_EXT_FUNC_REG(ExportStepEx)
  533. JS_EXT_FUNC_REG(ExportBRepEx)
  534. JS_EXT_FUNC_REG(ExportStlEx)
  535. JS_EXT_FUNC_REG(ExportGltfEx)
  536. JS_EXT_FUNC_REG(ImportIges)
  537. JS_EXT_FUNC_REG(ImportStep)
  538. JS_EXT_FUNC_REG(ExportIges)
  539. JS_EXT_FUNC_REG(ExportStep)
  540. JS_EXT_FUNC_REG(SaveBrep)
  541. JS_EXT_FUNC_REG(OpenBrep)
  542. JS_EXT_FUNC_REG(Plus)
  543. JS_EXT_FUNC_REG(GetFaceBrep)
  544. JS_EXT_FUNC_REG(GetFacePoint)
  545. JS_EXT_FUNC_REG(GetComponentStep)
  546. JS_EXT_MAIN_END()