在網頁中引用DWG控件,交互繪圖,和響應鼠標點擊對象的方法
[MXDRAW CAD控件文檔]
下面幫助的完整例子,在控件安裝目錄的Sample\Ie\iedemo.htm中.
- 主要用到函數說明
A. ImplementCommandEventFun
控件的命令事件函數,與用戶交互的操作,需要放到命令事件函數內實現,這樣控件才能保證正常的Windows 消息循環被處理。
B. ImplementMouseEventFun
控件的鼠標事件函數,可以用JS程序裏,響應鼠標事件,詳細說明如下:
void MouseEvent(LONG lType, DOUBLE dX, DOUBLE dY, LONG lRet);
DOUBLE dX 事件發生時的鼠標X坐標,文檔坐標
DOUBLE dY 事件發生時的鼠標Y坐標,文檔坐標
LONG lRet lRet 返回非0,消息將不在往下傳遞
C. DrawLine
用於在DWG圖上繪制一條直線,詳細說明如下:
參數 說明
DOUBLE dX1 直線的開始點x坐標
DOUBLE dY1 直線的開始點y坐標
DOUBLE dX2 直線的結束點x坐標
D. IMxDrawSelectionSet::SelectAtPoint2
返回一點坐標下面的實體對象,可以設置過濾條件,返回某層,某類型等屬性的對象。 - JS中實現代碼說明
A. 在網頁中引用控件,
clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2是控件的GUID.
控件程序可以做成CAB安裝包,並可進行數據簽名,方便網頁中自動安裝下載.
詳細參考例子:http://www.mxdraw.com/iedemo.html
<objectclassid="clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2"id="MxDrawXCtrl" codebase="http://www.mxdraw.com/MxDrawX.CAB#version=1,0,0,1"width=100% height=90%>
<paramname="_ExtentX" value="24262">
<paramname="_ExtentY" value="16219">
<paramname="_StockProps" value="0">
B. 設置命令事件回調函數
document.getElementById("MxDrawXCtrl").ImplementCommandEventFun= DoCommandEventFunc;
C. 設置鼠標事件回調函數
document.getElementById("MxDrawXCtrl").ImplementMouseEventFun= MouseEvent;
D. 在命令事件交互繪制一條直線
該事件將會被,網頁中的myclick按鈕點擊觸發,如下:
function myclick()
{
document.getElementById("MxDrawXCtrl").DoCommand(1);
}
下面是繪制直線代碼:
function DoCommandEventFunc(iCmd)
{
// 命令事件ID.
if (iCmd == 1)
{
// 得到網頁的中的控件對象.
varmxOcx = document.all.item("MxDrawXCtrl");
mxOcx.focus();
varpoint1 = mxOcx.GetPoint(null,"\n 點取開始點:");
if(point1== null)
{
return;
}
varpoint2 = mxOcx.GetPoint(point1,"\n 點取結束點:");
if(point1== null)
{
return;
}
// 繪制一條直線.
mxOcx.DrawLine(point1.x,point1.y,point2.x,point2.y);
}
}
E. 在鼠標事件中得到鼠標點擊的對象.
function MouseEvent(dX,dY,lType)
{
// 4是鼠標左鍵雙擊
if(lType== 4)
{
// 得到網頁的中的控件對象
varaxMxDrawX1 = document.getElementById("MxDrawXCtrl");
// 創建一個選擇集對象
varss = axMxDrawX1.CallCustomFunction("Mx_NewSelectionSet","");
// 創建一個點對象
varpt = axMxDrawX1.CallCustomFunction("Mx_NewPoint","");
// 創建一個過濾條件對象
var fil= axMxDrawX1.CallCustomFunction("Mx_NewResbuf","");
// 把鼠標點擊坐標,賦值給點對象.
pt.x = dX;
pt.y =dY;
// 在該點處構造選擇集.
ss.SelectAtPoint2(pt,fil);
//ss.Coune是選擇集中對象數目
if(ss.Count > 0)
{
// 得到選擇集中的第一個點對象.
var ent = ss.Item(0);
// 輸出信息.
alert("點擊了" + ent.ObjectName + "對象");
}
// 取消後面的命令。
axMxDrawX1.SendStringToExecute("");
return1;
}
return 0;
}
在網頁中引用DWG控件,交互繪圖,和響應鼠標點擊對象的方法