CloudCompare / CloudComPy

Python wrapper for CloudCompare
Other
283 stars 40 forks source link

2D polygon (Fit) #3

Open HollowHeartNet opened 3 years ago

HollowHeartNet commented 3 years ago

Dear developer,

Thanks for implementing a Python-API for CC. Is the function "2D polygon" already implemented for CloudComPy? If not, I would really appreciate your effort.

prascle commented 3 years ago

Hello, I'm sorry, I didn't see your message. I work on the fork repository and, from time to time, I make a pull request on the reference repository, which is more visible, but I look at it less often... You are the first to post an issue! I will check more regularly the issues now !

The 2D Polygon feature is not yet implemented, I'll note that in my todo list. The reference documentation of the interface is available here.

HollowHeartNet commented 3 years ago

No problem! Thank you, Sir. I am looking forward to your work.

I wish you success!

prascle commented 3 years ago

The different points are covered in the latest version of CloudComPy (master of August 4). The Anaconda3 Windows10 binary can be found here: https://www.simulation.openfields.fr/binaries/ The corresponding test and example is test021.py If there are still problems, don't hesitate to report them!

HollowHeartNet commented 3 years ago

Thanks for the effort! Errors occured while running ctest. Please find below the output from the LastTest log file. test021.py is the only test that failed. I don't know what excatly the problem is, so I would appreciate your help.

Thank you in advance.

21/22 Testing: PYCC_test021
21/22 Test: PYCC_test021
Command: "C:/Users/Desktop/CloudComPy/CloudComPy37/doc/PythonAPI_test/execTest.bat" "test021.py"
Directory: C:/Users/Desktop/CloudComPy/CloudComPy37/doc/PythonAPI_test
"PYCC_test021" 
Output:
----------------------------------------------------------
QFileSystemWatcher: Removable drive notification will not work if there is no QCoreApplication instance.
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [564] : initializeConverters
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [121] : register QString_from_python_str
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [195] : register Vector2Tpl_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [195] : register Vector2Tpl_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [249] : register Vector3Tpl_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [249] : register Vector3Tpl_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [303] : register Tuple3Tpl_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [303] : register Tuple3Tpl_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [303] : register Tuple3Tpl_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [303] : register Tuple3Tpl_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [354] : register Vector_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [354] : register Vector_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [354] : register Vector_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [354] : register Vector_from_python_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [412] : register Vector_from_python_tuple_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [412] : register Vector_from_python_tuple_tuple
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [486] : register ccHObjectVector_from_python_list
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\cloudComPy.cpp [66] : modulePath: C:\Users\amar\Desktop\CloudComPy\CloudComPy37\CloudCompare\cloudComPy.pyd
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\initCC.cpp [32] : moduleDir: C:/Users/amar/Desktop/CloudComPy/CloudComPy37/CloudCompare
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [313] : Opening file: C:\Users\amar\CloudComPy/data\dataSample_5.0.xyz mode: 0 x: 0 y: 0 z: 0
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [134] : initCloudCompare
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [164] : appDir: C:/Users/amar/Desktop/CloudComPy/CloudComPy37/CloudCompare
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [155] : pluginPath: C:/Users/amar/Desktop/CloudComPy/CloudComPy37/CloudCompare/plugins
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [155] : pluginPath: C:/Users/amar/AppData/Roaming/python/plugins
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [155] : pluginPath: C:/ProgramData/python/plugins
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [155] : pluginPath: D:/Miniconda/envs/CloudComPy37/plugins
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [155] : pluginPath: D:/Miniconda/envs/CloudComPy37/data/plugins
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [155] : pluginPath: D:/Miniconda/envs/CloudComPy37/data/python/plugins
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [467] : Found one cloud with 1000000 points
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [246] : Opening file: C:\Users\amar\CloudComPy/data\poly2.poly mode: 0 skip: 0 x: 0 y: 0 z: 0
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [284] : number of polys: 1
C:\Users\paulr\CloudComPy\CloudComPy\pyAPI\pyCC.cpp [299] : Found one poly with 8 points
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\ccPointCloudPy.cpp [132] : ortho dim 
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [361] : convertible to std::vector<T>?
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\converters.hpp [377] : construct
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\ccFacetPy.cpp [47] :   - 0
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\ccFacetPy.cpp [47] :   - 0
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\ccFacetPy.cpp [47] :   - 1
C:\Users\paulr\CloudComPy\CloudComPy\boostPython\ccFacetPy.cpp [47] :   - 0
<end of output>
Test time =  20.01 sec
----------------------------------------------------------
Test Failed.
"PYCC_test021" end time: Aug 16 13:25 Mitteleuropäische Sommerzeit
"PYCC_test021" time elapsed: 00:00:20
----------------------------------------------------------
prascle commented 3 years ago

Hi, The test is in error because the timeout is a bit short. If you run

envPyCC.bat
python test021.py

It should be OK. I'll extend the timeout a bit!

HollowHeartNet commented 3 years ago

Hi,

Thank you very much. It works perfectly. Can you please tell me how to save the created mesh (surface) of the 2D polygon for example in PLY or OBJ format? In the pre-defined code, the 2D polygon file is saved in .bin format.

Many thanks.

prascle commented 3 years ago

Hi, You can save the associated mesh with:

mesh1 = polygon1.getPolygon()
cc.SaveMesh(mesh1, os.path.join(dataDir, "mesh1.ply"))

You can have a look at test020.py for the different mesh formats available.