C++调用Python脚本上传三维模型至Sketchfab网站

文章标题有点乱,感觉就是一堆乱七八糟的名词堆砌,实际上还有个MFC没有加上去。

所以本文的三个中心就是:

1.C++调用Python、

2.使用网站API、

3.程序在MFC下执行

一、C++调用Python

1.环境:

项目属性中配置Python的头文件夹和库文件夹

#include <Python.h>

#pragma commet(lib,"python27.lib")

2.调用方式

方法其实有好几种,此处我只列举了两种。

第一种是最粗暴的办法,直接逐行调用Python脚本,谈不上C++和Python进行交互。

第二种是调用Python脚本中的模块,C++为模块传递参数。

        Py_Initialize();//调用Py_Initialize()进行初始化
	///方法一:逐行执行字符串
	char szFile[] = "test.py";
	FILE* fp = fopen(szFile, "r");

	if (fp && PyRun_SimpleString("execfile('test1.py')") != 0)
	{
		fclose(fp);
		printf("PyRun_SimpleFile(%s)failed!", szFile);
		return -1;
	}
	Py_Finalize();
	///方法二:调用Python的API
	PyRun_SimpleString("import sys");
	PyRun_SimpleString("print '---import sys---'");
	PyRun_SimpleString("sys.path.append('./')");
	PyObject *pArgs = PyTuple_New(5);
	PyTuple_SetItem(pArgs, 0, Py_BuildValue("s", "./data/test.ply")); //file_path
	PyTuple_SetItem(pArgs, 1, Py_BuildValue("s", "1013_3")); //model_name
	PyTuple_SetItem(pArgs, 2, Py_BuildValue("s", "这是今天的第三次测试")); //model_description
	PyTuple_SetItem(pArgs, 3, Py_BuildValue("s", "feibai"));//model_tag
	PyTuple_SetItem(pArgs, 4, Py_BuildValue("s", "gaming"));//model_categlorie
	PyObject* pModule = 0;
	PyObject*pFunc = 0;
	pModule = PyImport_ImportModule("test1");//调用的Python文件名
	pFunc = PyObject_GetAttrString(pModule,"upload");//调用的函数名
	PyEval_CallObject(pFunc, pArgs);//调用函数,NULL表示参数为空

	Py_Finalize();//调用Py_Finalize,和Py_Initialize相对应的.

3.一些坑

Python脚本不要命名成test.py,因为Python内部有test模块,会发生调用冲突。

4.MFC下如何调用

上面的代码是控制台下的方式,放到MFC里面实际上没有什么本质变化,只是传递参数的时候,CString转成char*就可以了。方法是使用WideCharToMultiByte函数:

        CString fileinfo = filePath;
	int len = WideCharToMultiByte(CP_ACP, 0, fileinfo, -1, NULL, 0, NULL, NULL);
	char *filepathTmp = new char[len + 1];

5.控件和变量的绑定

双击控件以添加事件:

        model_tag.GetString();
	UpdateData();

此时model_tag这个变量的值就是在图形界面输入的值了。

二、使用网站API

我要上传三维模型到网站Sketchfab.com,这网站需要翻墙。

听说这个网站是三维设计师的天堂,就像对于程序员的github。

注册一个账号,给一个API TOKEN,这个TOKEN是唯一的,可以调用网站给的API(Python写的)来上传模型到自己的账号。上传到公共区免费,私人空间需要缴50刀。

好了,不打广告了。

适当修改Python脚本,参数放在upload函数里面。

具体怎么调用第一步已经说了。

三、MFC下执行



在网页上查看,有了。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值