Files
JSonRPCPlugin/README.md
T
2020-10-25 17:24:50 +00:00

107 lines
2.6 KiB
Markdown

JSON RPC plugin for CloudCompare
================================
This plugin executes commands/actions via RPC from a different proccess/computer
The plugin opens a TCP-server port when activated.
The RPC communication is done via Websocket http JSON transfers.
Currently implemented commands:
- open: opens a file from filesystem
- clear: clears all clouds
howto build
-----------
1. clone CloudCompare
```
mkdir cc
cd cc
git clone --recursive https://github.com/CloudCompare/CloudCompare.git
```
2. add this plugin as submodule in plugins
```
cd CloudCompare/plugins/core/Standard
git submodule add git@gitlab.com:theadib/JsonRPCPlugin.git
```
3. patch CMakeLists.txt
```
nano CMakeLists.txt
```
then add the plugin as indicated below
```
set( submod_plugins
${CMAKE_CURRENT_SOURCE_DIR}/qColorimetricSegmenter
${CMAKE_CURRENT_SOURCE_DIR}/qMasonry
${CMAKE_CURRENT_SOURCE_DIR}/qMPlane
+ ${CMAKE_CURRENT_SOURCE_DIR}/JsonRPCPlugin
)
```
3. build CloudCompare
```
cd cc/CloudCompare
mkdir build
cd build
cmake-gui ..
make -j
sudo make install
```
howto use
---------
Below a python script to open a file from filesystem:
```
#!/usr/bin/env python3
import asyncio
import websockets
async def hello():
uri = "ws://localhost:6001"
async with websockets.connect(uri) as websocket:
await websocket.send('{"jsonrpc": "2.0", "method": "open", \
"params": { \
"filename": "/home/adib/Dokumente/teapot.ply", \
"filter":"PLY mesh (*.ply)", \
"silent":true, \
"transformation": [-0.5732937009507673, 0.8193193174792813, 0.007084582014166903, -161.35002666963268, \
-0.8193308300123949, -0.5733179603522832, 0.001873784980341508, 320.67951255557966, \
0.005596946702519333, -0.004730387192182964, 0.9999731500865392, -230.60935194531334, \
0.0, 0.0, 0.0, 1.0]}, \
"id": 4}')
result = await websocket.recv()
print("result: ", result)
asyncio.get_event_loop().run_until_complete(hello())
```
interface
---------
```
- open - opens a file from filesystem
filename: string, filename on the filesystem
filter: string, optional, filter identificator, if not given then CloudCompare identifies fileformat based on extension
silent: bool, optional, if true, then filterdialog is suppressed
transformation: list of float (16values), optional, after import this transformation matrix is applied to the object,
- clear - clear all objects
```
contact
-------
Remarks, wishes, etc. are welcome
thAdib theAdib@gmail.com