cloudcompare插件编写教程

一、简介

  首先从cloudcompare(后面简称cc)官网上下载源码,解压后在\plugins\example路径下可以看到名为ExamplePluginExampleIOPluginExampleGLPlugin这三个文件夹,以及一个CMakeLists.txt文件。这三个文件夹都是插件的模板,字面意思上理解,分别是写一般插件、输出输出、显示相关的。
cloudcompare插件编写教程_第1张图片

二、修改为自己的插件

  下面讲一下一般插件ExamplePlugin的编写细则。首先复制一份ExamplePlugin,更改文件夹名字为自己的插件名,这里就命名为myplugin,然后打开CMakeLists.txt,仿照上面三行,赋值一下,改为自己的插件名,如下所示:
cloudcompare插件编写教程_第2张图片
  下面,进入myplugin文件夹,然后把里面的命名为ExamplePlugin的文件都更改为myplugin,如下所示:
cloudcompare插件编写教程_第3张图片
  下面就按照文件顺序进行修改吧,其实整个修改过程并不存在先后顺序,重点只是需要把所有模板的命名都改为自己的插件名而已。在这里,images里面存的是插件的图标图片,可以自己修改图片以及命名,只是后面写路径时候要注意保持一致就好了。

1. CMakeLists.txt

  首先,打开CMakeLists.txt,将第13行的ExamplePlugin改为myplugin,第9行和第11行的命名随意,可改可不改,如下所示:
cloudcompare插件编写教程_第4张图片

2. info.json

  保存,然后打开info.json文件,这个文件主要是写一些插件的描述,这里最重要的是把第4行的":/CC/plugin/ExamplePlugin/images/icon.png"改为自己的插件图标路径和命名":/CC/plugin/myplugin/images/icon.png"。在这里,前面的CC并不是真实的路径,感觉像是宏一类的,会在运行时候自动替换为你当前的绝对路径,所以可以不用管它。然后第3行的name的值是插件在cc里的名字,可以自己随意改动,这里就也命名为myplugin了。其他一些信息可以自己按需要设置,这些信息不会对生成插件造成影响。修改后如下所示:
cloudcompare插件编写教程_第5张图片

3. myplugin.cpp

  下面打开myplugin.cpp,直接在记事本里面,将ExamplePlugin全部替换为myplugin,如下所示:
cloudcompare插件编写教程_第6张图片

4. myplugin.h

  打开myplugin.h,同理,直接将所有的ExamplePlugin全部替换为myplugin,不过,这里还需要改一个地方,第49行,将Example改为myplugin。这是插件的唯一标识,具体描述直接看46-48行就知道了。
cloudcompare插件编写教程_第7张图片

5. myplugin.qrc

  最后,打开myplugin.qrc,将第2行的prefix路径修改为自己的路径,在这里,我们应该将ExamplePlugin改为myplugin,如下图所示:
cloudcompare插件编写教程_第8张图片

三、编译

  好了,到这里一切工作就都已经准备完毕了,接下来就是使用cmake对源码进行编译了,编译的教程可以参考这里。有一点不同的是,在configure之后,generate之前,要先把PLUGIN_MYPLUGIN项目勾上,如下图所示。这个就是刚才我们修改好的myplugin项目了,都改好后点击generate就可以了。
cloudcompare插件编写教程_第9张图片

四、功能实现

  生成后,打开生成的sln工程,组织如下:
cloudcompare插件编写教程_第10张图片
  插件功能的实现都是在我们建立的myplugin里面的h和cpp文件中进行的。展开myplugin项目,如下所示:
cloudcompare插件编写教程_第11张图片
  插件功能实现的接口都是在doAction这个函数里面,可以把它认为是控制台程序中的main函数。如下图所示:
cloudcompare插件编写教程_第12张图片
  如果将它与main函数类比,那应该就很好理解了。简单的操作你可以直接在这个函数里实现,而复杂的操作,你也可以像控制台程序那样,在myplugin这个工程里新建很多h和cpp文件来进行实现。模板里实现的功能是点击这个plugin后,会在cc底下输出hello这行字样。功能实现以后,将程序改为release x64环境,然后点击顶部菜单栏的生成->批生成,全部勾上,然后关闭。右键ALL_BUILD工程,然后就是漫长的编译等待了。
cloudcompare插件编写教程_第13张图片
  ALL_BUILD生成成功后,右键INSTALL工程,点击生成。生成成功后,你就可以在cmake时候指定的生成路径下看到cloudcompare文件夹了:
在这里插入图片描述
  打开,可以看到里面有cc的exe文件,然后plugins文件夹里有名字为myplugin的dll文件,这个就是你编译生成的插件了。
cloudcompare插件编写教程_第14张图片
  双击运行exe文件,在打开的cc顶部菜单栏,可以看到自己编写的插件:
cloudcompare插件编写教程_第15张图片

你可能感兴趣的:(cloudcompare,cmake,visual,studio,cmake,c++,qt,插件,cloudcompare)