[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:
- Directly use existing subclasses (such as' MxCADUiPrPoint ',' MxCADUiPrList ', etc.) to complete specific point/distance operations;
- Alternatively, new interactive controls can be implemented by inheriting 'MxCADUiPrBase' and passing in a custom internal implementation (imp);
- Set prompts, keywords, dynamic drawing callbacks, etc. before interaction, and call the
go()method of the subclass to obtain user input.
Example
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
MxCADUiPrBase
Table of contents
Constructors
Methods
- abort
- clearLastInputPoint
- disableAllTrace
- drawReserve
- getCursorType
- getDetailedResult
- getDynamicInputType
- getInputToucheType
- getLastInputPoint
- getResultPointOsnapMode
- getResultPointType
- getStatus
- isDisableDynInput
- isDisableDynamicTrace
- isDisableGridTrace
- isDisableOrthoTrace
- isDisableOsnap
- isDisablePolarAxisTrace
- isKeyWordPicked
- isOffsetInputPostion
- keyWordPicked
- keyWords
- message
- setCursorType
- setDisableDynInput
- setDisableDynamicTrace
- setDisableGridTrace
- setDisableOrthoTrace
- setDisableOsnap
- setDisablePolarAxisTrace
- setDynamicInputType
- setInputToucheType
- setKeyWords
- setLastInputPoint
- setMessage
- setOffsetInputPostion
- setOsModeExParam
- setUserDraw
- setUserInputControls
- userInputControls
Constructors
constructor
• new MxCADUiPrBase(imp)
Constructor function
Parameters
| Name | Type | Description |
|---|---|---|
| Imp | any | Internal implementation object |
Methods
abort
▸ abort(cause?): void
Stop the current dynamic drag
Parameters
| Name | Type | Default value |
|---|---|---|
cause | DetailedResult | DetailedResult.kCodeAbort |
Returns
void
void
clearLastInputPoint
▸ clearLastInputPoint(): void
Clear the previous input point data.
Returns
void
disableAllTrace
▸ disableAllTrace(isDisable?): void
Disable all tracking
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| IsDisable | boolean | true | Is it disabled |
Returns
void
drawReserve
▸ drawReserve(callAddEntity?): void
Keep the dynamically drawn objects on the graph.
Parameters
| Name | Type | Description |
|---|---|---|
callAddEntity? | (ent: Objecti3D)=>void | callback parameter ent type: THREE.THREE.Object3D |
Returns
void
Example
//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
//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
//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
| Name | Type | Description |
|---|---|---|
| MatchKeyWord | string | Keywords to be detected |
Returns
boolean
True is true
Example
//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
//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
//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
| Name | Type | Description |
|---|---|---|
| Type | MxCursorType | Mouse Style Type |
Returns
void
Example
//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
| Name | Type | Description |
|---|---|---|
| IsDisable | boolean | Is it disabled |
Returns
void
setDisableDynamicTrace
▸ setDisableDynamicTrace(isDisable): void
Set whether to disable dynamic tracking
Parameters
| Name | Type | Description |
|---|---|---|
| IsDisable | boolean | Is it disabled |
Returns
void
setDisableGridTrace
▸ setDisableGridTrace(isDisable): void
Set whether to disable grid tracking
Parameters
| Name | Type | Description |
|---|---|---|
| IsDisable | boolean | Is it disabled |
Returns
void
setDisableOrthoTrace
▸ setDisableOrthoTrace(isDisable): void
Set whether to disable orthotracing
Parameters
| Name | Type | Description |
|---|---|---|
| IsDisable | boolean | Is it disabled |
Returns
void
setDisableOsnap
▸ setDisableOsnap(isDisable): void
Set whether to disable capture
Parameters
| Name | Type | Description |
|---|---|---|
| IsDisable | boolean | Is it disabled |
Returns
void
setDisablePolarAxisTrace
▸ setDisablePolarAxisTrace(isDisable): void
Set whether to disable polar tracking
Parameters
| Name | Type | Description |
|---|---|---|
| IsDisable | boolean | Is it disabled |
Returns
void
setDynamicInputType
▸ setDynamicInputType(type): void
Set dynamic input type
Parameters
| Name | Type | Description |
|---|---|---|
| Type | DynamicInputType | Dynamic Input Display Type |
Returns
void
Example
//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
| Name | Type | Description |
|---|---|---|
| ToucheType | Number | ToucheType Type |
Returns
void
Example
//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
| Name | Type | Description |
|---|---|---|
| KeyWordList | string | Keyword List |
Returns
void
void
Example
//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
| Name | Type | Description |
|---|---|---|
| Pt | undefined \ | [McGePoint3d] (2d. McGePoint3d. md) |
Returns
void
setMessage
▸ setMessage(message): void
Set prompt string
Parameters
| Name | Type | Description |
|---|---|---|
message | string | prompt message |
Returns
void
Reminder message
setOffsetInputPostion
▸ setOffsetInputPostion(isOffset): void
Set input point traversal, commonly used for point retrieval on mobile devices
Parameters
| Name | Type |
|---|---|
isOffset | boolean |
Returns
void
Example
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
| Name | Type | Description |
|---|---|---|
| LVal | OsModeExParam | Extended Object Snap Parameters |
Returns
void
Example
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
| Name | Type | Description |
|---|---|---|
| PDraw | (CurrentPoint: [McGePoint3d] (2d. McGePoint3d. md), pWorldDraw: McEdGetPointWorldDrawObject)=>void | McEdGetPointWorldDrawObject \ |
Returns
void
void
Example
//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
| Name | Type |
|---|---|
contros | number |
Returns
void
Example
//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
