Skip to content

[mxcad_2d API documentation] (../README. md)/[2d] (../modules/2d. md)/MxCADUiPrBase

Class: MxCADUiPrBase ​

2d.MxCADUiPrBase

Interaction based classes encapsulate the general functionality of user interaction input.

Description

MxCADUiPrBase is the abstract foundation of all MxCADUiPr * series interaction classes, encapsulating user interaction point taking, keyword input Common behaviors such as dynamic drawing, prompt information, and capture settings. Subclasses are usually implemented by passing in different internal implementations (such as' MrxDBgUiPrPoint ' MrxDBgUiPrList, etc.) to implement specific interactive semantics, but share the following capabilities: -Set/Get Prompt Messages (setMessage/message) -Manage keyword list and detect user selection (setKeyWords/keyWordPicked/isKeyWordPicked) -Set dynamic drawing callback to draw temporary graphics during interaction (setUserDraw) -Get detailed exit reasons and types of interaction results (getDetailedResult/getStatus/getResultPointType) -Control dynamic input, polar/grid/snap tracking behavior (setDisabDynInput/setDisabPolarAxisTrack, etc.)

Instructions:

  1. Directly use existing subclasses (such as' MxCADUiPrPoint ',' MxCADUiPrList ', etc.) to complete specific point/distance operations;
  2. Alternatively, new interactive controls can be implemented by inheriting 'MxCADUiPrBase' and passing in a custom internal implementation (imp);
  3. Set prompts, keywords, dynamic drawing callbacks, etc. before interaction, and call the go() method of the subclass to obtain user input.

Example

ts
import { MxCADUiPrPoint } from 'mxcad';

async function example() {
  const getPoint = new MxCADUiPrPoint();
GetPoint.setMessage (specify the first point: ');
  getPoint.setUserDraw((pt, worldDraw) => {
//Draw temporary markers in dynamic drawing callbacks
    worldDraw.drawCircle(pt.toVector3(), 10);
  });
  const pt = await getPoint.go();
  if (!pt) return;
}

Hierarchy ​

Table of contents ​

Constructors ​

Methods ​

Constructors ​

constructor ​

• new MxCADUiPrBase(imp)

Constructor function

Parameters ​

NameTypeDescription
ImpanyInternal implementation object

Methods ​

abort ​

▸ abort(cause?): void

Stop the current dynamic drag

Parameters ​

NameTypeDefault value
causeDetailedResultDetailedResult.kCodeAbort

Returns ​

void

void


clearLastInputPoint ​

▸ clearLastInputPoint(): void

Clear the previous input point data.

Returns ​

void


disableAllTrace ​

▸ disableAllTrace(isDisable?): void

Disable all tracking

Parameters ​

NameTypeDefault valueDescription
IsDisablebooleantrueIs it disabled

Returns ​

void


drawReserve ​

▸ drawReserve(callAddEntity?): void

Keep the dynamically drawn objects on the graph.

Parameters ​

NameTypeDescription
callAddEntity?(ent: Objecti3D)=>voidcallback parameter ent type: THREE.THREE.Object3D

Returns ​

void

Example

ts
//Example of MxCADUiPrPoint class
 import { MxCADUiPrPoint } from 'mxcad';

 async function test(){
   const getPoint = new MxCADUiPrPoint();
   const basePt = new McGePoint3d(0, 0, 0);
   getPoint.setBasePt(basePt);
   getPoint.setUserDraw((pt,pw)=>{
   const line = new McDbLine(basePt, pt);
   pw.drawMcDbEntity(line)
   })
   const val = await getPoint.go();
   if (!val) return;
   getPoint.drawReserve()
 }

getCursorType ​

▸ getCursorType(): MxCursorType

Return cursor type

Returns ​

MxCursorType


getDetailedResult ​

▸ getDetailedResult(): DetailedResult

Return detailed reasons for interactive operation exit

Returns ​

DetailedResult

The return value type of the current interactive operation

Example

ts
//Example of MxCADUiPrList class
  import { MxCADUiPrDist } from 'mxcad';
  import { DetailedResult } from "mxdraw";

  async function test(){
    const getDist = new MxCADUiPrDist();
    const val = await getDist.go();
    if (!val) return;
    if (getDist.getDetailedResult() === DetailedResult.kCoordIn) {
Console.log ('prompt input', val)
    }
  }

getDynamicInputType ​

▸ getDynamicInputType(): DynamicInputType

Return dynamic input type

Returns ​

DynamicInputType

Dynamic input display type


getInputToucheType ​

▸ getInputToucheType(): number

Return the required Touche input type

Returns ​

number

Touche input type


getLastInputPoint ​

▸ getLastInputPoint(): undefined | McGePoint3d

Return to the previous input point.

Returns ​

undefined | McGePoint3d

Selected keywords


getResultPointOsnapMode ​

▸ getResultPointOsnapMode(): AcquirePointOsnapMode

Return the capture type of the point obtained from the interactive point taking operation

Returns ​

AcquirePointOsnapMode


getResultPointType ​

▸ getResultPointType(): AcquirePointType

Return the point type obtained from the interactive point retrieval operation

Returns ​

AcquirePointType


getStatus ​

▸ getStatus(): MrxDbgUiPrBaseReturn

Get operation status

Returns ​

MrxDbgUiPrBaseReturn

Operation status value

Example

ts
//Example of MxCADUiPrList class
 import { MxCADUiPrDist } from 'mxcad';
 import { MrxDbgUiPrBaseReturn } from "mxdraw";

 const getDist = new MxCADUiPrDist();
 const val = await getDist.go();
 if (!val) return;
 if(getPoint.getStatus() === MrxDbgUiPrBaseReturn.kNone) {
//Empty input
 }

isDisableDynInput ​

▸ isDisableDynInput(): boolean

Do you want to disable dynamic input boxes

Returns ​

boolean


isDisableDynamicTrace ​

▸ isDisableDynamicTrace(): boolean

Do you want to disable dynamic tracking

Returns ​

boolean


isDisableGridTrace ​

▸ isDisableGridTrace(): boolean

Do you want to disable grid tracking

Returns ​

boolean


isDisableOrthoTrace ​

▸ isDisableOrthoTrace(): boolean

Do you want to disable ortho tracing

Returns ​

boolean


isDisableOsnap ​

▸ isDisableOsnap(): boolean

Do you want to disable capture

Returns ​

boolean


isDisablePolarAxisTrace ​

▸ isDisablePolarAxisTrace(): boolean

Do you want to disable polar tracking

Returns ​

boolean


isKeyWordPicked ​

▸ isKeyWordPicked(matchKeyWord): boolean

Test whether a certain keyword is selected by the user

Parameters ​

NameTypeDescription
MatchKeyWordstringKeywords to be detected

Returns ​

boolean

True is true

Example

ts
//Example of MxCADUiPrPoint class
  import { MxCADUiPrPoint } from 'mxcad';

 async function test(){
   const getPoint = new MxCADUiPrPoint();
GetPoint. setKeyWords ("[Option 1 (A)/Option 2 (B)]");
   const pt = await getPoint.go();
   if(getPoint.isKeyWordPicked('A')){
Console.log (Option 1)
   }else if(getPoint.isKeyWordPicked('B')){
Console.log (Option 2)
   }
 }

isOffsetInputPostion ​

▸ isOffsetInputPostion(): boolean

Whether the input point is offset for display/processing

Returns ​

boolean


keyWordPicked ​

▸ keyWordPicked(): string

Return the keywords selected by the user

Returns ​

string

Selected keywords

Example

ts
//Example of MxCADUiPrPoint class
  import { MxCADUiPrPoint } from 'mxcad';

  async function test(){
   const getPoint = new MxCADUiPrPoint();
GetPoint. setKeyWords ("[Option 1 (A)/Option 2 (B)]");
   const pt = await getPoint.go();
   const key = getPoint.keyWordPicked();
   console.log(key)
  }

keyWords ​

▸ keyWords(): string

Return keyword list

Returns ​

string

Keyword List

Example

ts
//Taking the MxCADUiPrPoint class as an example, the same applies to other classes in the MxCADUiPr * series
  import { MxCADUiPrPoint } from 'mxcad'
  const getPoint = new MxCADUiPrPoint();
GetPoint. setKeyWords ("[Option 1 (A)/Option 2 (B)]");
  const keyList = getPoint.keyWords();
Console.log ("Keyword List", keyList)//Keyword List [Option 1 (A)/Option 2 (B)]

message ​

▸ message(): string

Prompt string

Returns ​

string

Reminder message


setCursorType ​

▸ setCursorType(type): void

Set cursor type

Parameters ​

NameTypeDescription
TypeMxCursorTypeMouse Style Type

Returns ​

void

Example

ts
//Example of MxCADUiPrPoint class
  import { MxCADUiPrPoint } from 'mxcad';
  import { MxCursorType } from "mxdraw";

  async function test(){
   const getPoint = new MxCADUiPrPoint()
GetPoint.setMessage ("Specify text starting point:")
   getPoint.setCursorType(MxCursorType.kCross);
   const pt = await getPoint.go();
  }

setDisableDynInput ​

▸ setDisableDynInput(isDisable): void

Set whether to disable dynamic input boxes

Parameters ​

NameTypeDescription
IsDisablebooleanIs it disabled

Returns ​

void


setDisableDynamicTrace ​

▸ setDisableDynamicTrace(isDisable): void

Set whether to disable dynamic tracking

Parameters ​

NameTypeDescription
IsDisablebooleanIs it disabled

Returns ​

void


setDisableGridTrace ​

▸ setDisableGridTrace(isDisable): void

Set whether to disable grid tracking

Parameters ​

NameTypeDescription
IsDisablebooleanIs it disabled

Returns ​

void


setDisableOrthoTrace ​

▸ setDisableOrthoTrace(isDisable): void

Set whether to disable orthotracing

Parameters ​

NameTypeDescription
IsDisablebooleanIs it disabled

Returns ​

void


setDisableOsnap ​

▸ setDisableOsnap(isDisable): void

Set whether to disable capture

Parameters ​

NameTypeDescription
IsDisablebooleanIs it disabled

Returns ​

void


setDisablePolarAxisTrace ​

▸ setDisablePolarAxisTrace(isDisable): void

Set whether to disable polar tracking

Parameters ​

NameTypeDescription
IsDisablebooleanIs it disabled

Returns ​

void


setDynamicInputType ​

▸ setDynamicInputType(type): void

Set dynamic input type

Parameters ​

NameTypeDescription
TypeDynamicInputTypeDynamic Input Display Type

Returns ​

void

Example

ts
//Example of MxCADUiPrPoint class
  import { MxCADUiPrPoint } from 'mxcad';
  import { DynamicInputType } from "mxdraw";

  async function Mx_WindowZoom() {
    let getPoint = new MxCADUiPrPointTransform(MxInsidePublicFuns.getMxCADViewSpinMatrix(MxCpp.getCurrentMxCAD()));
    getPoint.disableAllTrace();
GetPoint.setMessage ("\ n Click to zoom area");
    getPoint.setDynamicInputType(DynamicInputType.kDynTip);
    let pt1 = await getPoint.go();
    if (pt1 == null) return;
    let mxcad = MxCpp.getCurrentMxCAD();
    getPoint.setUserDraw((p1, worldDraw) => {
        worldDraw.drawRect(MxCoordConvert.cad2doc1((pt1 as any)), MxCoordConvert.cad2doc1((p1 as any)));
    });

    let pt2 = await getPoint.go();
    if (pt2 == null) return;

    pt1.transformBy(getPoint.rmat);
    pt2.transformBy(getPoint.rmat);
    mxcad.zoomW(pt1, pt2);
 }

setInputToucheType ​

▸ setInputToucheType(toucheType): void

Set the required Touche input type, default value is MxType InputToucheType.kGetBegan

Parameters ​

NameTypeDescription
ToucheTypeNumberToucheType Type

Returns ​

void

Example

ts
//Example of MxCADUiPrPoint class
  import { MxCADUiPrPoint, MxCpp } from "mxcad";
  import { MxType } from "mxdraw";

//Draw a straight line on the touch screen of a mobile phone
   async function Mx_Test_Touch_DrawLine() {
       const getPoint = new MxCADUiPrPoint();
       getPoint.setOffsetInputPostion(true);
GetPoint.setMessage ("\ nSpecify the first point:");
//Receive kGetBegan and press it with your touch screen finger
       getPoint.setInputToucheType(MxType.InputToucheType.kGetEnd);
       let pt1 = await getPoint.go();
       if (!pt1) return;
GetPoint.setMessage ("\ nSpecify second point:");
       getPoint.setBasePt(pt1);

       console.log(getPoint.getResultPointOsnapMode());
       console.log(getPoint.getResultPointType());

//Receive kGet and release the touch screen finger
       getPoint.setInputToucheType(MxType.InputToucheType.kGetEnd);
       let pt2 = await getPoint.go();
       if (!pt2) return;
       let mxcad = MxCpp.getCurrentMxCAD();
       let ent = mxcad.drawLine(pt1.x, pt1.y, pt2.x, pt2.y).getMcDbEntity();
       if (ent) {
           ent.lineweight = 20;
       }
   }

setKeyWords ​

▸ setKeyWords(keyWordList): void

Set keyword list

Parameters ​

NameTypeDescription
KeyWordListstringKeyword List

Returns ​

void

void

Example

ts
//Taking the MxCADUiPrPoint class as an example, the same applies to other classes in the MxCADUiPr * series
  import { MxCADUiPrPoint } from 'mxcad'
  const getPoint = new MxCADUiPrPoint();
GetPoint. setKeyWords ("[Option 1 (A)/Option 2 (B)]")

setLastInputPoint ​

▸ setLastInputPoint(pt): void

Set the previous input point.

Parameters ​

NameTypeDescription
Ptundefined \[McGePoint3d] (2d. McGePoint3d. md)

Returns ​

void


setMessage ​

▸ setMessage(message): void

Set prompt string

Parameters ​

NameTypeDescription
messagestringprompt message

Returns ​

void

Reminder message


setOffsetInputPostion ​

▸ setOffsetInputPostion(isOffset): void

Set input point traversal, commonly used for point retrieval on mobile devices

Parameters ​

NameType
isOffsetboolean

Returns ​

void

Example

ts
import { MxCADUiPrPoint } from "mxcad";
import { MxFun } from "mxdraw";

//Draw temporary annotation circles on mobile devices
async function test(){
   const getPoint = new MxCADUiPrPoint();
GetPoint.setMessage ("\ nSpecify a point:");
   getPoint.setOffsetInputPostion(true);
   getPoint.clearLastInputPoint();
   let pt1 = (await getPoint.go());
   if (!pt1) return;

   let mxdraw = MxFun.getCurrentDraw();

   mxdraw.getTempMarkDraw().drawCircleMark(pt1.toVector3(), mxdraw.viewCoordLong2Cad(50), 0xFF0000);
   mxdraw.updateDisplay();
}

setOsModeExParam ​

▸ setOsModeExParam(lVal): void

Set extended capture parameters during capture.

Parameters ​

NameTypeDescription
LValOsModeExParamExtended Object Snap Parameters

Returns ​

void

Example

ts
import { MxCADUiPrPoint } from "mxcad";
import { OsModeExParam } from "mxdraw";

    async function Mx_Test_Rect2() {
        const getPoint = new MxCADUiPrPoint();
        getPoint.clearLastInputPoint();
GetPoint.setMessage ("Please select the first point");
        const pt1 = await getPoint.go();
        if (!pt1) return;

        const getNextPt = new MxCADUiPrPoint();
GetNextPt.setMessage ("Please select the second corner");
        getNextPt.setOsModeExParam(OsModeExParam.kCircleTangentOsmode);
        getNextPt.setUserDraw((pt2, pWorldDraw) => {
            let pl = new McDbPolyline();
            pl.addVertexAt(pt1);
            pl.addVertexAt(new McGePoint3d(pt1.x, pt2.y, pt1.z));
            pl.addVertexAt(pt2);
            pl.addVertexAt(new McGePoint3d(pt2.x, pt1.y, pt1.z));
            pl.isClosed = true;
            pWorldDraw.drawMcDbEntity(pl);
        });

        if (!await getNextPt.go()) return;

        getNextPt.drawReserve();
    }

setUserDraw ​

▸ setUserDraw(pDraw): void

Set the dynamic drawing calling object for the interaction process

Parameters ​

NameTypeDescription
PDraw(CurrentPoint: [McGePoint3d] (2d. McGePoint3d. md), pWorldDraw: McEdGetPointWorldDrawObject)=>voidMcEdGetPointWorldDrawObject \

Returns ​

void

void

Example

ts
//Example of MxCADUiPrPoint class
  import { MxCADUiPrPoint } from 'mxcad';

  async function test(){
   const getPoint = new MxCADUiPrPoint();
   getPoint.setUserDraw((pt,pw)=>{
       pw.setColor(0xff00ff);
       pw.drawCircle(new HTREE.Vector3(pt.x,pt.y,pt.z), 10)
   })
   const pt = await getPoint.go();
   console.log("point", pt)
  }

setUserInputControls ​

▸ setUserInputControls(contros): void

Set input control settings

Parameters ​

NameType
controsnumber

Returns ​

void

Example

ts
//Example of MxCADUiPrInt class
  import { MxCADUiPrInt } from 'mxcad';
  import { UserInputControls } from "mxdraw"

  let getInt = new MxCADUiPrInt();
GetInt.setMessage ("Enter integer: ");
  getInt.setUserInputControls(UserInputControls.kNoZeroResponseAccepted);
  let iRowNum = await getInt.go();
  if (iRowNum == null) return;

userInputControls ​

▸ userInputControls(): number

Return to input control settings

Returns ​

number