2018年3月25日 星期日

c# delegate instance 被回收

MIL 的process 範例中有這一段
            MIL_DIG_HOOK_FUNCTION_PTR ProcessingFunctionPtr = new MIL_DIG_HOOK_FUNCTION_PTR(ProcessingFunction);

            MIL.MdigProcess(MilDigitizer, MilGrabBufferList, MilGrabBufferListSize, MIL.M_START, MIL.M_DEFAULT, ProcessingFunctionPtr, GCHandle.ToIntPtr(hUserData));

其中
public delegate MIL_INT MIL_DIG_HOOK_FUNCTION_PTR(MIL_INT HookType, MIL_ID EventId, IntPtr UserDataPtr);

但如果是用在winform 應用程式裡面,如果把上面那段放在Form的Initial中,需要把 ProcessingFunctionPtr 定義成在 Form的Class底下的static member

MyForm:Form
{
static   MIL_DIG_HOOK_FUNCTION_PTR ProcessingFunctionPtr;

void MyForm()
{
  ...
 ProcessingFunctionPtr = new MIL_DIG_HOOK_FUNCTION_PTR(ProcessingFunction);

            MIL.MdigProcess(MilDigitizer, MilGrabBufferList, MilGrabBufferListSize, MIL.M_START, MIL.M_DEFAULT, ProcessingFunctionPtr, GCHandle.ToIntPtr(hUserData));

}

}

否則在執行期ProcessingFunctionPtr會被Gabage collection清掉而產生error 

但在C# 2.0 好像可以直接寫成
 ProcessingFunctionPtr = ProcessingFunction;


2018年3月11日 星期日

VS Qt debug 輸出位置

使用 qDebug印東西需要先

#include<Qtcore/qdebug.h>

接著就可以使用

qDebug()<<"my message";

而訊息會跑到VS的outpout


另一個方式可以將output導到console的方式,在專案的property中設定subsystem

執行的時候就會產生一個console視窗,debug訊息就會show 進去

2018年3月10日 星期六

VS Qt專案建立

用Qt不一定要配合VS插件,但配合VS插件可以自動將.ui所生成的檔案更新到vs的專案中,使用上比較便利

2018年3月9日 星期五

cloudcompare 距離量測,彩現點雲

距離量測:
Tools>point picking
或從UI(1.)


2.可以量測兩點之間的距離
3.可以量兩線之間的角度

彩現點雲:
Display>Shaders&Filters