長方形インタラクティブCADアノテーションを描く(ウェブ版)

jsが定義を実装しました:


イベントを描くダイナミックなドラッグ&ドロップ:


関数DynWorldDrawComment2(pCustomEntity、pWorldDraw、curPt){ 
    //得到绘制参数。

    VAR STEXT = pCustomEntity.GetString( "テキスト"); 
    VAR dTextHeight = pCustomEntity.GetDouble( "textHeightと"); 
    VAR iEdgeNumber = pCustomEntity.GetLong( "EdgeNumber"); 
    VAR dShapRadius = pCustomEntity.GetDouble( "ShapRadius"); 
    VAR基点= pCustomEntity.GetPoint( "基点")。
    //创建一个批注对象。
    var注釈= mxOcx.NewEntity( "IMxDrawComment"); 
    comment.Text = STEXT。
    comment.TextHeight = dTextHeight。
    comment.EdgeNumber = iEdgeNumber。
    comment.ShapRadius = dShapRadius。
    comment.basePoint =ベースポイント。
    = pWorldDraw.TextStyle "MyCommentFont"; 
    //動的に描画する。
    pWorldDraw.DrawEntity(コメント); 
}


ダイナミックドローテキスト:


関数ExplodeFun(pCustomEntity、pWorldDraw、TXT){ 
    VAR sGuid = pCustomEntity.Guid。
    もし(sGuid == "TestMxCustomEntity1"){ 
        場合(!pCustomEntity.IsHave( "第一"))
            リターン。
        VaRのSTP = pCustomEntity.GetPoint( "ファースト"); 
        VaRのEPT = pCustomEntity.GetPoint( "基点")。
        VAR dimpt = pCustomEntity.GetPoint( "DimPoint"); 
        VaRのTXT = pCustomEntity.GetString( "テキスト"); 
        VAR textH = pCustomEntity.GetDouble( "textHeightと"); 
        VAR edgeNum = pCustomEntity.GetLong( "EdgeNumber"); 
        VAR shapRadius = pCustomEntity.GetDouble( "ShapRadius"); 
        VAR isCircle = pCustomEntity。
        var注釈= mxOcx。NewEntity( "IMxDrawComment"); 
        comment.Text = TXT;
        comment.TextHeight = textH。
        comment.EdgeNumber = edgeNum。
        comment.ShapRadius = shapRadius。
        comment.basePoint = EPT; 
        comment.Position = dimpt。
        pWorldDraw.TextStyle = "MyCommentFont"。
        //动态绘制。
        pWorldDraw.DrawEntity(コメント)。
        //绘制矩形框。
        IF(isCircle){ 
            VARのdR = stp.DistanceTo(EPT)* 0.5。
            VaRのVEC = stp.SumVector(EPT)。
            vec.Mult(0.5)。
            ept.Add(VEC)。
            pWorldDraw.DrawCircle(ept.x、ept.y、DR)。
        } 
        他{
            pWorldDraw.DrawLine(stp.x、stp.y、stp.x、ept.y)。
            pWorldDraw.DrawLine(stp.x、ept.y、ept.x、ept.y)。
            pWorldDraw.DrawLine(ept.x、ept.y、ept.x、stp.y)。
            pWorldDraw.DrawLine(ept.x、stp.y、stp.x、stp.y)。
        } 
        mxOcx.SetEventRet(1)。
    } 
}


ダイナミックドローテキスト:


機能DoComment3(){ 
    VAR getPt = mxOcx.NewComObject( "IMxDrawUiPrPoint")。
    getPt.message = "点取第一点"。
    (!getPt.goは、()= 1){もし
        返します。
    } 
    VAR frstPt = getPt.value()。
    もし(frstPt == nullの)
        リターン。
    VaRのUTL = mxOcx.NewUtility()。
    VAR secondPt = utl.GetCorner(frstPt、 "点取第二点"); 
    もし(secondPt == nullの)
        リターン。
    VAR PARAM = mxOcx.NewResbuf()。
    param.AddString( ""); 
    param.AddDouble(200)。
    するvar RET = mxOcx.CallEx( "Mx_ShowMTextDialog"、PARAM)。
    もし(ret.AtString(0)= "OK"!)
    { 
        返します。 
    VAR = txtH ret.AtDouble(2); 
    VAR txtColorIndex ret.AtLong =(3); 
    //追加改行演算子P \\ 
    // + TXT TXT = "\\ PTEST" ; 
    //テキストスタイル、コメントのテキストのフォントを作成します。
    mxOcx.AddTextStyle2(「MyCommentFont」、「黒体」、0.7); 
    //オブジェクトを取るために、ユーザとの相互作用のポイントを作成します。
    mxOcx.NewComObject getSecondPt = VAR( "IMxDrawUiPrPoint"); 
    ; getSecondPt.messageは= "マークポイントの位置を入力し、" 
    getSecondPt.basePoint = secondPt; 
    (falseに)getSecondPt.setUseBasePtを、
    spDrawData = getSecondPt.InitUserDraw( "DrawComment2"); 
    //セット動的レンダリングパラメータ。
    spDrawData.SetPoint( "基点"、secondPt); 
    spDrawData.SetString( "テキスト"、TXT)。
    spDrawData.SetLong( "EdgeNumber"、2)。
    spDrawData.SetDouble( "ShapRadius"、1); 

    。//开始取第二个点
    (もし!getSecondPt.go()= 1)
        のリターン; 
    VaRのENT = mxOcx.DrawCustomEntity( "TestMxCustomEntity1"、 ""); 
    ent.SetPoint( "基点"、secondPt)。
    ent.SetString( "テキスト"、TXT); 
    ent.SetDouble( "textHeightと"、txtH)。
    ent.SetLong( "EdgeNumber"、2)。
    ent.SetDouble( "ShapRadius"、1); 
    ent.SetPoint( "DimPoint"、getSecondPt.value()); 
    ent.SetPoint( "第一"、frstPt)。
    ent.TextStyle = "MyCommentFont"。
    ent.colorIndex = txtColorIndex。
}

おすすめ

転載: www.cnblogs.com/yzy0224/p/11076622.html