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。 }