Skip to content

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

Class: McObject ​

2d.McObject

McObject is the main control object of MxCAD, responsible for undertaking the core capabilities of CAD application instances.

Description

This class is not a regular entity object, but rather the "controller/entry point" for the entire MxCAD runtime. It can accomplish: -Retrieve the current CAD instance and operate the graphics database; -Register and handle various events (such as selection changes, file opening completion, database modifications); -Call up drawing, redrawing, coordinate conversion, temporary display and other abilities; -Set global display and running parameters.

Usage:

  1. First, obtain the current CAD instance through MxCpp. getCurrentMxCAD() or MxCpp. mxcad;
  2. Call its methods again for drawing, interaction, or status monitoring; If you need to create a new independent instance, first use new McObject (), and then call create (config) to initialize it.

Example

ts
import { MxCpp } from "mxcad";

const mxcad = MxCpp.getCurrentMxCAD();

//Read the current open file name
console.log(mxcad.currentFileName);

//Registration selection change event
mxcad.on("selectChange", (ids) => {
Console.log ("number of selected objects:", ids. length);
});

Remarks

Applicable scenarios include: -Secondary development plugins: monitoring object selection, file opening, database changes; -Custom drawing: temporary highlighting, dynamic preview, auxiliary annotation; -Graphic operations: add/modify entities, redraw views, control display parameters; -Interactive development: Integrate with MxDraw and MxCAD event systems.

Table of contents ​

Constructors ​

Accessors ​

Methods ​

Constructors ​

constructor ​

• new McObject(imp?)

Create a McObject instance.

This constructor is usually only used when you need to manually create a standalone instance. If you only want to operate on the currently running CAD window, prioritize using MxCpp. getCurrentMxCAD() or MxCpp. mxcad.

Parameters ​

NameTypeDescription
imp? anyThe underlying implementation object; Usually injected automatically by the system, developers generally do not need to manually input it.

Accessors ​

database ​

• get database(): McDbDatabase

Return database object

Returns ​

McDbDatabase


drawColor ​

• get drawColor(): McCmColor

Get drawing colors

Returns ​

McCmColor

Return to drawing color

• set drawColor(val): void

Set drawing color

Parameters ​

NameTypeDescription
Val[McCMColor] (2d. McCmColor. md)Draw colors

Returns ​

void


drawColorIndex ​

• get drawColorIndex(): number

Set color index for drawing

Returns ​

number

Val color index type

• set drawColorIndex(val): void

Set color index for drawing

Parameters ​

NameTypeDescription
Valnumbercolor index type

Returns ​

void

Example

ts
import { MxCpp, ColorIndexType, McObject } from "mxcad" ;
const mxcad:McObject = MxCpp.App.getCurrentMxCAD();
mxcad.drawColorIndex = ColorIndexType.kMagenta;

drawDimStyle ​

• get drawDimStyle(): string

Get the currently drawn annotation style

Returns ​

string

• set drawDimStyle(val): void

Set the annotation style for the current drawing

Parameters ​

NameTypeDescription
ValstringStyle Name

Returns ​

void


drawLayer ​

• get drawLayer(): string

Get drawing layers

Returns ​

string

Return to drawing layer

• set drawLayer(val): void

Set drawing layer

Parameters ​

NameTypeDescription
ValstringDraw layers

Returns ​

void

Example

ts
import { MxCpp, McObject } from 'mxcad'
  const mxcad:McObject = MxCpp.getCurrentMxCAD();
   mxcad.drawLayer = "MtextLayer";

drawLineTypeScale ​

• get drawLineTypeScale(): number

Obtain the scale of the drawn line type

Returns ​

number

Return to drawing line type scale

• set drawLineTypeScale(val): void

Set the drawing line scale

Parameters ​

NameTypeDescription
ValnumberDraw line type scale

Returns ​

void


drawLineWeight ​

• get drawLineWeight(): LineWeight

Get drawing line width

Returns ​

LineWeight

Return to drawing line width

• set drawLineWeight(val): void

Set drawing line width

Parameters ​

NameTypeDescription
Val[LineWeight] (../enums/2d. McDb. LineWeight. md)Draw line width

Returns ​

void

Example

ts
import { MxCpp, McDb, McObject } from "mxcad" ;

const mxcad: McObject = MxCpp.getCurrentMxCAD();
mxcad.drawLineWeight(McDb.LineWeight.kLnWtByLayer)

drawLineWidth ​

• get drawLineWidth(): number

Get the current drawn line width

Returns ​

number

• set drawLineWidth(val): void

Set the current drawn line width

Parameters ​

NameTypeDescription
Valnumberline width

Returns ​

void


drawLinetype ​

• get drawLinetype(): string

Obtain the drawing line type

Returns ​

string

Return to drawing line type

• set drawLinetype(val): void

Set drawing line type

Parameters ​

NameTypeDescription
ValstringDraw line type names

Returns ​

void

Example

ts
import { MxCpp, McObject } from "mxcad" ;

const mxcad: McObject = MxCpp.getCurrentMxCAD();
mxcad.addLinetype("MyLineType3", "30,-10");
mxcad.drawLinetype = "MyLineType3";

drawPatternDefinition ​

• get drawPatternDefinition(): string

Get the current line type definition drawn

Returns ​

string

Example

ts
import { MxCpp, McObject } from "mxcad"
 const mxcad: McObject = MxCpp.getCurrentMxCAD()
//Draw another patterned fill
   //45, 0,0, 0,.25
   //45, .176776695,0, 0,.25, .125,-.0625
   mxcad.addPatternDefinition("MyHatchPattern2", "((45, 0,0, 0,0.25) (45, 0.176776695,0, 0,0.25, 0.125,-0.0625))");
   mxcad.drawPatternDefinition = "MyHatchPattern2"
//Define the starting point of a path
   mxcad.pathMoveToEx(800, 3300, 0, 0, 0.3);
//The next point on the path
   mxcad.pathLineTo(900, 3300);
//The next point on the path
   mxcad.pathLineTo(900, 3400);
//The next point on the path
   mxcad.pathLineTo(800, 3300);
//Transform the path into a fill, where 80 is the scaling ratio of the fill pattern
   mxcad.drawPathToHatch(80);

• set drawPatternDefinition(val): void

Set the line type definition for the current drawing

Parameters ​

NameTypeDescription
ValstringLine type definition

Returns ​

void


drawTextStyle ​

• get drawTextStyle(): string

Get the style of drawing text

Returns ​

string

Return the name of the text style for drawing

• set drawTextStyle(val): void

Set the style for drawing text

Parameters ​

NameTypeDescription
ValstringDraw text style name

Returns ​

void

Example

ts
import { MxCpp, McObject } from "mxcad" ;

const mxcad: McObject = MxCpp.getCurrentMxCAD();
mxcad.addTextStyle("MyTextStyle", "italicc.shx", "gbcbig.shx", 0.7);
mxcad.drawTextStyle = "MyTextStyle";

drawUseDefaultProperties ​

• get drawUseDefaultProperties(): boolean

Return the number of drawings starting with the call 'draw', using the current default properties of the database.

Returns ​

boolean

• set drawUseDefaultProperties(val): void

Set the number of drawings starting with 'draw' when calling, using the current default properties of the database

Parameters ​

NameTypeDescription
ValbooleanLine width

Returns ​

void


mxdraw ​

• get mxdraw(): MxDrawObject

Return the MxDraw object bound to the MxCAD object.

Returns ​

MxDrawObject

MxDraw object

Methods ​

AddTureTypeTextStyle ​

▸ AddTureTypeTextStyle(sName, sTrueTypeFontName?, dXScale?): McObjectId

Add text styles using TrueType fonts

Parameters ​

NameTypeDefault valueDescription
sNamestringundefined-
STrueTypeFontNamestring""TrueType font name, if left blank, use the default TrueType font
DXScalenumber1.0X-direction scaling ratio

Returns ​

McObjectId

Example

ts
//Using TrueType fonts for text styles in MxCAD
import { MxCpp } from "mxcad"

   function Mx_Test_TrueText() {
       let mat: McGeMatrix3d = new McGeMatrix3d();
       let mxcad = MxCpp.getCurrentMxCAD();
//Clear the current display content
       mxcad.newFile();
       MxCpp.App.loadFonts([], [], ["syadobe", "simsun", "sysimsun"], () => {
           mxcad.AddTureTypeTextStyle("ht_style", "syadobe");
           mxcad.AddTureTypeTextStyle("st_style", "simsun");
           mxcad.drawTextStyle = "ht_style";

           mxcad.drawColor = new McCmColor(200, 255, 50);
Let idText=mxcad.drawText (0, 3500, "TrueType Text Test for Drawing Control", 100, 0, 0, 1);

           let ent = idText.getMcDbEntity();
           if (ent) ent.textStyle = "st_style";

           let txt: McDbText = ent as McDbText;
           txt.adjustAlignment();
           mxcad.zoomAll();
           mxcad.regen();
           mxcad.updateDisplay();
       });
   }

GetDocumentFileName ​

▸ GetDocumentFileName(): string

Get the file name of the current openWebFile open file. If the file is a stream data, this variable will take the value of filename in the request header returned by the server.

Returns ​

string


addCurrentSelect ​

▸ addCurrentSelect(id, isDisplayGrid?, fireSelectEvent?): void

Add the object to the current selection

Parameters ​

NameTypeDefault valueDescription
idMcObjectId | McObjectId[]undefinedObject ID or object ID array
IsDisplayGridbooleantrueWhether to display grips, default to true
FireSelectEventbooleantrueWhether to trigger a selection event, default to true

Returns ​

void

void

Example

typescript
import { MxCpp, McObject } from "mxcad"
let mxcad:McObject = MxCpp.getCurrentMxCAD();
let id = mxcad.drawLine(0,0,1000,1000);
mxcad.addCurrentSelect(id);

addDimStyle ​

▸ addDimStyle(pszName, pszDoubleData, pszIntData, pszStringData, pszIdData): McObjectId

Add annotation style

Parameters ​

NameTypeDescription
PszNamestringStyle Name
PszDoubleDatastringDouble precision data
PszIntDatastringinteger data
pszStringDatastringString data
PszIdDatastringID type data

Returns ​

McObjectId

Description

PszDoubleData Double Precision Data

System VariablesValuesFunction Description
Dimaltf143Control the multiplier for converting units
Dimasz41Control the size of dimension lines and lead arrows. And control the size of the baseline
Dimcen141Control the marking of circle or arc centers and the drawing of centerlines
Dimdle46When using a small diagonal line instead of an arrow for annotation, set the distance from the dimension line beyond the dimension boundary line
Dimdli43Control the spacing of dimension lines in baseline annotation
Dimexe44Export named annotation styles and their settings to an external file
Dimexo42Specify the distance from the origin of the dimension extension line
Dimgap147Set the distance around the annotation text when the dimension line is broken to conform to the annotation text
Dimlfac144Set the scaling factor for linear annotation measurement values
Dimrnd45Rounds all annotated distances to the specified value
Dimscale40Set the global scale factor applied to the annotation variable (used to specify size, distance, or offset)
Dimtfac146As set through the DIMTXT system variable, specify the scaling factor of the text height of the score and tolerance values relative to the annotation text height
Dimtm48Set the minimum (i.e. lowest) tolerance limit for the annotation text
Dimtp47Set the maximum (i.e. highest) tolerance limit for the annotation text
Dimtsz142DIMTSZ=0 Using standard solid arrows, arrows marked with DIMTSZ>0 are replaced with sloping lines (building markings), and the value of DIMTSZ is the length of this sloping line
Dimtvp145Control the vertical position of the annotation text above or below the dimension line
Dimtxt140Specify the height of the annotation text (unless the current text style has a fixed height)
Dimaltrnd148Rounding conversion annotation unit

Description

PszIntData integer data

System VariablesValuesFunction Description
Dimadec179Control the precision decimal places displayed in the angle annotation
Dimalt170Controls the display of conversion units in annotations
Dimaltd171Control the number of decimal places in the conversion unit
Dimalttd274Set the decimal place for the tolerance value in the conversion annotation unit
Dimalttz286Control the zeroing process of tolerance values
Dimaltu273Set the unit format for the conversion units of all annotation sub styles (excluding angular annotations)
Dimaltz285Control the zeroing process for the annotation values of conversion units
Dimaunit275Set the unit format for angle annotation
Dimclrd176Specify colors for dimension lines, arrows, and dimension leaders
Dimctre177Specify colors for dimension lines, center marks, and centerlines
Dimclrt178Specify the color for the annotation text
Dimdec271Set the number of decimal places displayed in the primary unit of the annotation
When the space within the dimension line is insufficient to accommodate both the annotation text and the arrow, this system variable will determine the arrangement of both
Dimjust280Control the horizontal position of the annotation text
Dimlim72Generate annotation boundaries as default text
Dimsah173Control the display of dimension line arrow blocks
Dimsd1281Control whether to hide the first dimension line and arrow
Dimsd2282Control whether to hide the second dimension line and arrow
Dimse175Control whether to hide the first dimension line
Dimse276Control whether to hide the second dimension line
Dimsoxd175If there is not enough space within the dimension line, hide the arrow
Dimtad77Control the vertical position of the text relative to the dimension line
Dimtdec272Set the number of decimal places displayed in the tolerance value of the primary unit of the annotation
Dimtih73Controls the position of annotation text for all annotation types (excluding coordinate annotations) within the dimension lines
Dimtix174Draw text between dimension lines
Dimtofl172Controls whether dimension lines are drawn between dimension lines (even if the dimension text is placed outside the dimension lines)
Dimitoh74Control the position of the annotation text outside the dimension line
Ditol71Attach the tolerance in the annotation text
Dimtolj283Set the vertical alignment of tolerance values relative to surface annotation text
Dimzin78Control the zeroing process for the main unit value
Dimupt288Control the option for users to locate text
Dimtzin284Control the zeroing process of tolerance values
Dimfrac276Set score format
Dimlunit277Set units for all annotation types (excluding angular annotations)
When the space within the dimension line is insufficient to accommodate both the annotation text and the arrow, this system variable will determine the arrangement of both
Dimtmove279Set the movement rules for annotation text
Dimazin79Zero elimination processing for angle annotation

Description

PszStringData string type data

System VariablesValuesFunction Description
Dimapost4Specify the text prefix or suffix (or both) used for converting dimension measurements for all dimension types (excluding angular dimensions)
Dimpost3Specify a text prefix or suffix (or both) for annotating measurement values

Description

PszIdData ID type data

System VariablesValuesFunction Description
Dimblk342Set an arrow for the second endpoint of the dimension line
Dimblk1343Set an arrow for the first endpoint of the dimension line
Dimblk2344Set an arrow for the second endpoint of the dimension line
Dimldrblk341Specify the type of leader arrow
Dimtxsty340Specify the text style for the annotation

Example

ts
import { MxCpp, McObject } from "mxcad"
 const mxcad:McObject = MxCpp.getCurrentMxCAD();
//Clear the current display content
   mxcad.newFile();
//Create a new text style
Let textId=mxcad. addTextCtyle ("My Annotation Font", "txt. shx", "gbcbig. shx", 1);
//Create a new annotation style
   mxcad.addDimStyle("MyDimStyle", "41,0.18,141,0.09,40,200", "77,1,271,3", '3,"%%c<>"', `340,${textId.id}`);
   mxcad.drawDimStyle = "MyDimStyle"

   mxcad.drawDimAligned(0, 4000, 300, 4500, 150, 4600);
//Put all entities into the current display viewport
   mxcad.zoomAll();
//Update viewport display
   mxcad.updateDisplay();

addImageDefine ​

▸ addImageDefine(imageUrl, sName?, isConvertBase64?, sourceFileName?, sBase64Data?): McObjectId

Add image definitions to the CAD database for reuse when inserting image objects in the future.

This method is usually used in conjunction with loadImage/drawImage, where the image resources are first loaded into memory, Register the image definition in the database, and finally insert the image into the drawing using drawImage.

Parameters ​

NameTypeDefault valueDescription
ImageURLstringundefinedImage address.
SNamestring""Image Definition Name.
Is the image converted to Base64 data.
Source FileNamestring""Image source file name.
SBase64Datastring""Base64 data content.

Returns ​

McObjectId

Example

ts
import { MxCpp, McObject } from "mxcad";

const mxcad: McObject = MxCpp.getCurrentMxCAD();
const imagUrl = "https://cdn.pixabay.com/photo/2022/11/15/12/23/winter-7593872_960_720.jpg";

mxcad.loadImage(imagUrl, (imagedata) => {
  if (!imagedata) {
    console.log("loadImage failed");
    return;
  }
  mxcad.addImageDefine(imagUrl, "winter-7593872_960_720.jpg", true);
  mxcad.updateDisplay();
});

addLayer ​

▸ addLayer(string): McObjectId

Add Layer

Parameters ​

NameType
stringstring

Returns ​

McObjectId

Example

ts
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
Mxcad. addLayer ("Layer Name")

addLinetype ​

▸ addLinetype(sName, sLineDefine): McObjectId

Add line type

Parameters ​

NameType
sNamestring
sLineDefinestring

Returns ​

McObjectId

Example

ts
import { MxCpp, McObject } from "mxcad"
 const mxcad:McObject = MxCpp.getCurrentMxCAD()
//Define dashed data, "MyLineType" is the line name, "6, -8" is a unit definition of the dashed line, 6 is the length of the solid line, and -8 is the length of the space.
   mxcad.addLinetype("MyLineType", "6,-8");
//Design the current line type as' MyLineType '
   mxcad.drawLinetype = "MyLineType";
//Draw a dashed line
   mxcad.drawLine(0, 30, 100, 30);
//Draw a diagonal dashed line
   mxcad.drawLine(200, 30, 300, 130);

addLinetypeEx ​

▸ addLinetypeEx(sName, sLineDefine, sTextStyle?): McObjectId

Add line type

Parameters ​

NameTypeDefault value
sNamestringundefined
sLineDefinestringundefined
sTextStylestring""

Returns ​

McObjectId

Example

ts
import { MxCpp, McObject } from "mxcad"
 const mxcad:McObject = MxCpp.getCurrentMxCAD()
//Add a line type with font style
   mxcad.addTextStyle("MyLineTypeTextStyle", "txt.shx", "hztxt.shx", 1);
   mxcad.addLinetypeEx("MyLineType3", "(12.7,(\"T=MxDraw\",\"S=2.54\",\"L=-5.08\",\"R=0.0\",\"X=-2.54\",\"Y=-1.27\"),-10.08)", "MyLineTypeTextStyle");
   mxcad.drawLinetype = "MyLineType3";
   mxcad.drawLineWidth = 0;
//Draw a red dotted line with width.
   mxcad.drawLine(350, 120, 600, 120);

addPatternDefinition ​

▸ addPatternDefinition(sName, sDefinitionData): void

Add a pattern definition

Parameters ​

NameTypeDescription
SNamestringPattern Name
SDefinitionDatastringPattern default definition data

Returns ​

void

Example

ts
   import { MxCpp, McObject } from "mxcad"
   const mxcad:McObject = MxCpp.getCurrentMxCAD()
   //angle, x-origin,y-origin, delta-x,delta-y,dash-1,dash-2, …
//45=angle is the angle of the pattern line
//0=x-origin is the X-coordinate of the point where the first fill line passes through
//0=y-origin is the Y coordinate of the point where the first fill line passes through
//0=delta-x is the X-direction offset of the next fill line relative to the previous line
//0.125=delta-y is the Y-direction offset of the next fill line relative to the previous line
   mxcad.addPatternDefinition("MyHatchPattern1", "((45, 0,0, 0,0.125))");
   mxcad.drawPatternDefinition = "MyHatchPattern1";
//Define the starting point of a path
   mxcad.pathMoveToEx(600, 3300, 0, 0, 0.3);
//The next point on the path
   mxcad.pathLineTo(700, 3300);
//The next point on the path
   mxcad.pathLineTo(700, 3400);
//The next point on the path
   mxcad.pathLineTo(600, 3300);
//Transform the path into a fill, where 80 is the scaling ratio of the fill pattern
   mxcad.drawPathToHatch(80);

addSystemVarNameForEvent ​

▸ addSystemVarNameForEvent(aryVarName): void

Register the system variable name that needs to be monitored.

When these system variables are modified, the sysVarChanged event will be triggered, which is suitable for linkage control State synchronization or custom interaction logic.

Parameters ​

NameTypeDescription
AryVarNamestring []System variable name array.

Returns ​

void

Example

ts
const mxcad = MxCpp.getCurrentMxCAD();
mxcad.addSystemVarNameForEvent(["GRIDMODE", "AUTOSNAP"]);

addTextStyle ​

▸ addTextStyle(sName, sFileName, sBigFontFileName, dXScale?): McObjectId

Add Text Style

Parameters ​

NameTypeDefault valueDescription
sNamestringundefined-
sFileNamestringundefined-
sBigFontFileNamestringundefined-
DXScalenumber1.0X-direction scaling ratio

Returns ​

McObjectId

Example

ts
import { MxCpp, McObject } from "mxcad"
 const mxcad:McObject = MxCpp.getCurrentMxCAD() 
//Draw text in the specified style
   mxcad.addTextStyle("MyTextStyle", "italicc.shx", "gbcbig.shx", 0.7);
   mxcad.drawTextStyle = "MyTextStyle";
   mxcad.drawColor = new McCmColor(255, 0, 0);
Mxcad.drawText (0, 3000, "Drawing Control Text Test", 100, 0, 0, 1);

cadCoord2View ​

▸ cadCoord2View(pt): McGePoint3d

CAD coordinates to viewport coordinates

Parameters ​

NameTypeDescription
PtMcGePoint3d (2d. McGePoint3d. md)Point Object

Returns ​

McGePoint3d

Converted point coordinates


cadCoordLong2View ​

▸ cadCoordLong2View(l): number

CAD length to viewport length

Parameters ​

NameTypeDescription
LnumberCAD length

Returns ​

number

Visual area length


cadToSmallcoord ​

▸ cadToSmallcoord(pt): McGePoint3d

Small coordinate system for CAD coordinate to drawing correction

Parameters ​

NameTypeDescription
Pt[McGePoint3d] (2d. McGePoint3d. md)Object of a point

Returns ​

McGePoint3d


callEvent ​

▸ callEvent(sEventName, param?): boolean

Call to trigger a system event

Parameters ​

NameTypeDescription
sEventNamestring-
param?` AnyEvent Parameters

Returns ​

boolean

Example

ts
import { MxCpp, McObject } from "mxcad"

//Manually trigger the init event
const mxcad:McObject = MxCpp.getCurrentMxCAD();
mxcad.callEvent("init");

clearDwgBackground ​

▸ clearDwgBackground(): void

Clear the current background drawing object.

Suitable for turning off background display, switching reference images, or reloading background resources.

Returns ​

void


clearGripDisplay ​

▸ clearGripDisplay(): void

Clear the displayed grips

Returns ​

void


clearMxCurrentSelect ​

▸ clearMxCurrentSelect(): void

Clear all current selections

Returns ​

void


create ​

▸ create(config): void

Create and initialize an MxCAD instance.

This method will start the CAD runtime and complete initialization based on the passed configuration. Suitable for embedding a new CAD container in the page, loading custom files, or creating independent instances. If only operating on existing CAD windows on the current page, there is usually no need to manually call this method.

Parameters ​

NameTypeDescription
config[MxCadConfig] (../interfaces/2d. MxCadConfig. md)The initialization configuration for creating MxCad usually includes information such as canvas, locateFile, fileURL, fontspath, etc.

Returns ​

void

Example

ts
import { McObject } from "mxcad";

const mxcad = new McObject();
mxcad.create({
  canvas: "#myCanvas",
  locateFile: (fileName) => new URL(`/node_modules/mxcad/dist/wasm/2d/${fileName}`, import.meta.url).href,
  fileUrl: new URL("../src/assets/test.mxweb", import.meta.url).href,
  fontspath: new URL("node_modules/mxcad/dist/fonts", import.meta.url).href,
});

createLayout ​

▸ createLayout(sName): McObjectId

Create Layout

Parameters ​

NameType
sNamestring

Returns ​

McObjectId


deleteLayout ​

▸ deleteLayout(sName): boolean

Delete Layout

Parameters ​

NameType
sNamestring

Returns ​

boolean


drawArc ​

▸ drawArc(dCenterX, dCenterY, dRadius, dStartAng, dEndAng): McObjectId

Draw an arc

Parameters ​

NameTypeDescription
DCenterXnumberX coordinate of the center of the circle
DCenterYnumberY coordinate of the center
DRadiusnumberradius
DStartAngnumberStarting angle, in radians
DEndAngnumberEnd angle, in radians

Returns ​

McObjectId

Success returns 1, failure returns 0


drawArc2 ​

▸ drawArc2(dStartPointX, dStartPointY, dMidPointX, dMidPointY, dEndPointX, dEndPointY): McObjectId

Draw an arc

Parameters ​

NameTypeDescription
DStartPointXnumberstarting point X coordinate
DStartPointYnumberStarting point Y coordinate
DMidPointXnumberX coordinate of the midpoint
DMidPointYnumberY coordinate of the midpoint
DEndPointXnumberEnd point X coordinate
DEndPointYnumberEnd point Y coordinate

Returns ​

McObjectId


drawArc3 ​

▸ drawArc3(dStartPointX, dStartPointY, dEndPointX, dEndPointY, dBulge): McObjectId

Draw an arc

Parameters ​

NameTypeDescription
DStartPointXnumberstarting point X coordinate
DStartPointYnumberStarting point Y coordinate
DEndPointXnumberEnd point X coordinate
DEndPointYnumberEnd point Y coordinate
DBulgenumberconvexity

Returns ​

McObjectId


drawBlockReference ​

▸ drawBlockReference(dPosX, dPosY, sBlkName, dScale, dAng): McObjectId

Draw block reference

Parameters ​

NameTypeDescription
DPosXnumberReference position X coordinate
DPosYnumberReference position Y coordinate
sBlkNamestring-
DScalenumberscaling ratio
DAngnumberRotation angle, in radians

Returns ​

McObjectId

Block object ID


drawCircle ​

▸ drawCircle(dCenterX, dCenterY, dRadius): McObjectId

Draw a circle

Parameters ​

NameTypeDescription
DCenterXnumberX coordinate of the center of the circle
DCenterYnumberY coordinate of the center
DRadiusnumberradius

Returns ​

McObjectId


drawDimAligned ​

▸ drawDimAligned(dExtLine1PointX, dExtLine1PointY, dExtLine2PointX, dExtLine2PointY, dTextPositionX, dTextPositionY): McObjectId

Draw alignment annotations

Parameters ​

NameTypeDescription
DExtLine1PointXnumberX-coordinate of the starting point of the first ruler line
DExtLine1PointYnumberY coordinate of the starting point of the first ruler line
DExtLine2PointXnumberX-coordinate of the starting point of the second ruler line
DExtLine2PointYnumberY coordinate of the starting point of the second ruler line
DTextPositionXnumberText Position X Coordinate
DTextPositionYnumberY coordinate of text position

Returns ​

McObjectId

Success returns 1, failure returns 0


drawDimAngular ​

▸ drawDimAngular(dAngleVertexX, dAngleVertexY, dFirstEndPointX, dFirstEndPointY, dSecondEndPointX, dSecondEndPointY, dTextPointX, dTextPointY): McObjectId

Draw angle annotation

Parameters ​

NameTypeDescription
DAngle VertexXnumberangle vertex X coordinate
DAngle VertexYnumberY-coordinate of angle vertex
DFirstEndPointXnumberX-coordinate of the starting point of the first ruler line
DFirstEndPointYnumberY coordinate of the starting point of the first ruler line
DSecondEndPointXnumberX coordinate of the starting point of the second ruler line
DSecondEndPointYnumberY coordinate of the starting point of the second ruler line
DTextPointXnumberText Position X Coordinate
DTextPointYnumberText Position Y Coordinate

Returns ​

McObjectId

Success returns 1, failure returns 0


drawDimDiametric ​

▸ drawDimDiametric(dChordPointX, dChordPointY, dFarChordPointX, dFarChordPointY, dLeaderLength): McObjectId

Draw diameter annotation

Parameters ​

NameTypeDescription
DChordPointXnumberChord endpoint X coordinate
DChordPointYnumberchord endpoint Y coordinate
DFarChordPointXnumberX coordinate of the far end point of the string
DFarChordPointYnumberY-coordinate of the far end point of the string
DLeaderLengthnumberlead length

Returns ​

McObjectId

Diameter annotation object ID


drawDimOrdinate ​

▸ drawDimOrdinate(dDefinitionPointX, dDefinitionPointY, dDeaderEndPointX, dDeaderEndPointY, isUseXAxis): McObjectId

Draw linear dimensions for annotation

Parameters ​

NameTypeDescription
DDefinitionPointXnumberDefine the coordinates of point X
DDefinitionPointYnumberDefine the coordinates of point Y
DDeaderEndPointXnumberAnnotate the X coordinate of the endpoint
DDeaderEndPointYnumberAnnotate the Y coordinate of the endpoint
Is' isUseXAxis''boolean'labeled along the X-axis direction

Returns ​

McObjectId

Linear size object ID


drawDimRadial ​

▸ drawDimRadial(dCenterX, dCenterY, dChordPointX, dChordPointY, dLeaderLength): McObjectId

Draw radial dimensions for annotation

Parameters ​

NameTypeDescription
DCenterXnumberX coordinate of the center point
DCenterYnumberY coordinate of the center point
DChordPointXnumberChord endpoint X coordinate
DChordPointYnumberchord endpoint Y coordinate
DLeaderLengthnumberLength of annotation line

Returns ​

McObjectId

Radial dimension object ID


drawDimRotated ​

▸ drawDimRotated(dExtLine1PointX, dExtLine1PointY, dExtLine2PointX, dExtLine2PointY, dDimLineLocationX, dDimLineLocationY, dRotationAngle): McObjectId

Draw rotation annotation

Parameters ​

NameTypeDescription
DExtLine1PointXnumberX-coordinate of the starting point of the first ruler line
DExtLine1PointYnumberY coordinate of the starting point of the first ruler line
DExtLine2PointXnumberX-coordinate of the starting point of the second ruler line
DExtLine2PointYnumberY coordinate of the starting point of the second ruler line
DDimLinePositionXnumberannotation line position X coordinate
DDimLinePositionYnumberY coordinate of annotation line position
DRotationAnglenumberRotation angle, in radians

Returns ​

McObjectId

Rotate annotation object ID


drawEllipse ​

▸ drawEllipse(dCenterX, dCenterY, dMajorAxisX, dMajorAxisY, dRadiusRatio): McObjectId

Draw an ellipse

Parameters ​

NameTypeDescription
DCenterXnumberX-coordinate of ellipse center
DCenterYnumberY coordinate of ellipse center
DMajorAxisXnumberlong axis X coordinate
DMajorAxisYnumberLong axis Y coordinate
DRadiusRationumberratio of minor axis to major axis

Returns ​

McObjectId

Success returns 1, failure returns 0


drawEllipseArc ​

▸ drawEllipseArc(dCenterX, dCenterY, dMajorAxisX, dMajorAxisY, dRadiusRatio, dStartAng, dEndAng): McObjectId

Draw an elliptical arc

Parameters ​

NameTypeDescription
DCenterXnumberX-coordinate of ellipse center
DCenterYnumberY coordinate of ellipse center
DMajorAxisXnumberlong axis X coordinate
DMajorAxisYnumberLong axis Y coordinate
DRadiusRationumberratio of minor axis to major axis
DStartAngnumberStarting angle, in radians
DEndAngnumberEnd angle, in radians

Returns ​

McObjectId


drawEntity ​

▸ drawEntity(entity, isUseDatabaseCurrentProperties?): McObjectId

Draw entities

Parameters ​

NameTypeDefault valueDescription
Entity[McDbEntity] (2d. McDbEntity. md)undefinedEntity object
isUseDatabaseCurrentPropertiesbooleanfalse-

Returns ​

McObjectId

Draw Results

Example

ts
import { McDbPolyline, MxCpp } from
let pl = new McDbPolyline();
  pl.addVertexAt(new McGePoint3d(100, 100, 100));
  pl.addVertexAt(new McGePoint3d(200, 100, 500));
  pl.addVertexAt(new McGePoint3d(300, 400, 200));
  MxCpp.getCurrentCAD().drawEntity(pl);

drawHatch ​

▸ drawHatch(hatch, dPatternScale?): McObjectId

Draw Fill Object

Parameters ​

NameTypeDefault value
hatchMcDbHatchundefined
dPatternScalenumber1.0

Returns ​

McObjectId

Draw object ID

Example

ts
import { MxCADUiPrPoint, MxCADUtility, MxCpp, McGePoint3d } from "mxcad";

    async function Mx_TestDrawHatchFormPoint() {
        const getPoint = new MxCADUiPrPoint();
GetPoint.setMessage ("\ nSpecify a point inside the filled area:");
        getPoint.disableAllTrace(true);
        getPoint.setDisableOsnap(true);
        let pt = (await getPoint.go()) as McGePoint3d;
        if (!pt) return;

        let hatch = MxCADUtility.builderHatchFromPoint(pt);
        if (!hatch) {
MxFun.acutPrintf ("Closed area not found")
            return;
        }

        let mxcad = MxCpp.getCurrentMxCAD();
Mxcad. addPatternDefinition ("My Pattern", "(45, 0,0, 0,0.125)");
Mxcad.drawPatternDefinition="My Pattern";
        mxcad.drawHatch(hatch, 5.0);
    }

drawImage ​

▸ drawImage(dPosX, dPosY, dWidth, dHeight, dAng, imageName, isConvertBase64?, dwgImageSizeWidth?, dwgImageSizeHeight?, imageUrl?, sImageBase64?): McObjectId

Draw an image

Parameters ​

NameTypeDefault valueDescription
DPosXnumberundefinedX coordinate of image
DPosYnumberundefinedY coordinate of image
DWidthnumberundefinedimage width
DHeightnumberundefinedImage height
DAngnumberundefinedImage angle, in degrees
imageNamestringundefined-
isConvertBase64booleanfalse-
dwgImageSizeWidthnumber1.0-
dwgImageSizeHeightnumber1.0-
ImageURLstring""Image path
sImageBase64string""-

Returns ​

McObjectId

Example

ts
import { MxCpp } from "mxcad";

   async function Mx_Test_DrawImageBase64() {
       const getPoint = new MxCADUiPrPoint();
GetPoint.setMessage ("\ nSpecify insertion point:");
       let pt = await getPoint.go();
       if (!pt) return;

       let mxcad = MxCpp.getCurrentMxCAD();
       let imagData = "data:image/jpeg;base64,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";
       mxcad.loadImageBase64(imagData, "test.jpg", (image) => {
           if (!image) {
               console.log("loadImage failed");
               return;
           }
           let width = mxcad.mxdraw.viewCoordLong2Cad(100);
           let height = (image.height / image.width) * width;

           let viewAngle = 0.0;
           let id = mxcad.drawImage((pt as any).x, (pt as any).y, width, height, viewAngle, "test.jpg", false, image.width, image.height);
           let ent = id.getMcDbEntity();
           if (ent) {
               ent.trueColor = new McCmColor(255, 255, 255, 160);
           }
           mxcad.updateDisplay();
       });
   }

drawLine ​

▸ drawLine(dX1, dY1, dX2, dY2): McObjectId

Draw 2D lines

Parameters ​

NameTypeDescription
DX1numberStarting point X coordinate
DY1numberStarting point Y coordinate
DX2numberendpoint X coordinate
DY2numberEnd point Y coordinate

Returns ​

McObjectId

Example

ts
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
mxcad.drawLine(0, 60, 100, 60);

drawLine3d ​

▸ drawLine3d(dX1, dY1, dZ1, dX2, dY2, dZ2): McObjectId

Draw 3D lines

Parameters ​

NameTypeDescription
DX1numberStarting point X coordinate
DY1numberStarting point Y coordinate
DZ1numberStarting point Z coordinate
DX2numberendpoint X coordinate
DY2numberEnd point Y coordinate
DZ2numberZ coordinate of endpoint

Returns ​

McObjectId


drawMText ​

▸ drawMText(dPosX, dPosY, sContents, dHeight, dWidth, dRotation, iAttachment): McObjectId

Draw multiple lines of text

Parameters ​

NameTypeDescription
DPosXnumberText Position X Coordinate
DPosYnumberY coordinate of text position
sContentsstring-
DHeightnumberText height
DWidthnumberText width
DRotationnumberRotation angle, in radians
IAttachment[AttachmentPoint] (../enums/2d. McDb. AttachmentPoint. md)Alignment Method

Returns ​

McObjectId

Multi line text object ID

Example

ts
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
Mxcad.drawMText (0, -100, "Control:\ \P Multi line Text Test ", 50, 400, 0, 1);
TS
 let mxcad = MxCpp.getCurrentMxCAD();
 mxcad.newFile();
Mxcad.drawMText (0,0, "\ \ A1; square method index: m {\ \ H0.7x; \ \ S ^ 2;}", 15500,0.0,7);
Mxcad.drawMText (0,30, "\ \ A2; Square method superscript: m {\ \ H0.3x; \ \ S2 ^;}", 15500,0.0,7);
 mxcad.zoomAll();
 mxcad.updateDisplay();

drawPathToHatch ​

▸ drawPathToHatch(dPatternScale?): McObjectId

Convert the path to a fill pattern

Parameters ​

NameTypeDefault valueDescription
DPatternScalenumber1.0Pattern scaling ratio

Returns ​

McObjectId

Conversion results

Example

ts
   import { MxCADUiPrPoint, MxCADUiPrDist, MxCpp } from "mxcad";
//Solid circle
   async function Mx_SolidCircle() {
       const getCenter = new MxCADUiPrPoint();
GetCenter.setMessage ('Please confirm the center position ');
       const center = await getCenter.go();
       if (!center) return;
       const getRadius = new MxCADUiPrDist();
getRadius.setBasePt(center);//  Set the distance base point as the center of the circle
GetRadius.setMessage ('Please enter circle radius');
       getRadius.setUserDraw((pt, pw) => {
           const r = pt.distanceTo(center);
           const circle = new McDbCircle();
           circle.center = center;
           circle.radius = r;
           pw.drawMcDbEntity(circle)
       })
       const radiusVal = await getRadius.go();
       if (!radiusVal) return;
       const radius = getRadius.value();
       const mxcad = MxCpp.getCurrentMxCAD();
mxcad.pathCircle(center.x, center.y, radius);// Set circular path
mxcad.drawPathToHatch();//  Draw a solid circle
   }

drawPathToPolyline ​

▸ drawPathToPolyline(): McObjectId

Convert the path to a polyline

Returns ​

McObjectId

Conversion results

Example

ts
import { MxCpp } from "mxcad"

 let mxcad = MxCpp.getCurrentMxCAD();
//Draw an arrow
   mxcad.pathMoveToEx(1000, 300, 10, 10, 0);

   mxcad.pathLineToEx(1000, 500, 30, 0, 0);

   mxcad.pathLineTo(1000, 580);

   mxcad.drawPathToPolyline();

drawPathToSpline ​

▸ drawPathToSpline(): McObjectId

Convert the path to a spline curve

Returns ​

McObjectId

Conversion results


drawPoint ​

▸ drawPoint(dX, dY): McObjectId

Draw points

Parameters ​

NameTypeDescription
DXnumberX coordinate
DYnumberY coordinate

Returns ​

McObjectId


drawSolid ​

▸ drawSolid(dX1, dY1, dX2, dY2, dX3, dY3, dX4, dY4): McObjectId

Draw entities

Parameters ​

NameTypeDescription
DX1numberX coordinate of the first point
DY1numberY coordinate of the first point
DX2numberX coordinate of the second point
DY2numberY coordinate of the second point
DX3numberX coordinate of the third point
DY3numberY coordinate of the third point
DX4numberX coordinate of the fourth point
DY4numberY coordinate of the fourth point

Returns ​

McObjectId

Entity Object ID


drawText ​

▸ drawText(dPosX, dPosY, pszText, dHeight, dRotation, horizontalMode, verticalMode): McObjectId

Draw a single line of text

Parameters ​

NameTypeDescription
DPosXnumberText Position X Coordinate
DPosYnumberY coordinate of text position
PszTextstringText Content
DHeightnumberText height
DRotationnumberRotation angle, in radians
HorizontalMode[TextHorzMode] (../enums/2d. McDb. TextHorzMode. md)Horizontal alignment method
Vertical Mode[TextVertMode] (../enums/2d. McDb. TextVertMode. md)Vertical Alignment Method

Returns ​

McObjectId

Success returns 1, failure returns 0

Example

ts
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
Mxcad.drawText (0, 1900, "Drawing Control Text Test", 100, 0, 0, 1);

endBlockEdit ​

▸ endBlockEdit(): boolean

Exit block editing status

Returns ​

boolean


endViewPortEdit ​

▸ endViewPortEdit(): boolean

Exit viewport editing mode

Returns ​

boolean


getAllLayoutName ​

▸ getAllLayoutName(): McGeStringArray

Get all layout names

Returns ​

McGeStringArray


getBackgroundEntity ​

▸ getBackgroundEntity(): McDbBackgroundEntity

Return the currently loaded background object.

This object can be used to further control the display, clearing, or style modification of the background image.

Returns ​

McDbBackgroundEntity

Current background object instance.


getCooperate ​

▸ getCooperate(): MxCooperate

Return collaborative work object

Returns ​

MxCooperate


getCurrentDatabaseDrawColor ​

▸ getCurrentDatabaseDrawColor(): Color

Returns the drawing color set in the current database, which will automatically convert black and white based on the background color.

Returns ​

Color

Return the drawing color set in the current database, THREE. Color object


getCurrentFileName ​

▸ getCurrentFileName(): string

Get the current file name

Returns ​

string

Current file name


getCurrentLayout ​

▸ getCurrentLayout(): string

Obtain the current layout name

Returns ​

string


getCurrentLayoutId ​

▸ getCurrentLayoutId(): McObjectId

Obtain the current layout ID

Returns ​

McObjectId


getCurrentOpenFileMd5 ​

▸ getCurrentOpenFileMd5(): string

When returning to the current open file in md5 code.

Returns ​

string


getCurrentOriginaFileName ​

▸ getCurrentOriginaFileName(): string

Get the current source file name

Returns ​

string

Current source file name


getDatabase ​

▸ getDatabase(): McDbDatabase

Retrieve database objects

Returns ​

McDbDatabase

Database objects


getImp ​

▸ getImp(): any

Retrieve internal implementation objects

Returns ​

any

Internal implementation object


getMxCADViewSpinMatrix ​

▸ getMxCADViewSpinMatrix(): McGeMatrix3d

Return the rotation matrix of the current viewport with MxCAD

Returns ​

McGeMatrix3d

McGeMatrix3d object


getMxCpp ​

▸ getMxCpp(): any

Returns the MxCpp object, which will be called in the MxDraw module.

Returns ​

any


getMxDrawObject ​

▸ getMxDrawObject(): MxDrawObject

Return the MxDraw object bound to the MxCAD object.

Returns ​

MxDrawObject

MxDraw object


getSysVarDouble ​

▸ getSysVarDouble(varName): number

Get floating-point values of system variables

Parameters ​

NameTypeDescription
VarNamestringVariable Name

Returns ​

number

Floating point values of variables


getSysVarLong ​

▸ getSysVarLong(varName): number

Get the integer value of a system variable

Parameters ​

NameTypeDescription
VarNamestringVariable Name

Returns ​

number

The integer value of a variable


getSysVarPoint ​

▸ getSysVarPoint(varName): McGePoint3d

Obtain the point values of system variables

Parameters ​

NameTypeDescription
VarNamestringVariable Name

Returns ​

McGePoint3d

Point values of variables


getSysVarString ​

▸ getSysVarString(varName): string

Retrieve the string value of a system variable

Parameters ​

NameTypeDescription
VarNamestringVariable Name

Returns ​

string

The string value of a variable


getTempDraw ​

▸ getTempDraw(): McObjectTempDraw

Get temporary drawing manager.

The object returned by this method is used for "temporary drawing" on the current viewport, such as highlighting selected objects, displaying drag and drop previews, dynamic measurement prompts, etc. Its characteristic is that it only displays in the view and does not actually write to the graphics database, making it suitable for UI feedback and auxiliary display.

Returns ​

McObjectTempDraw

To temporarily draw an object, simply call its methods such as addLines/addTriangles/setDrawColor.

Example

ts
import { MxCpp } from "mxcad";

const mxcad = MxCpp.getCurrentMxCAD();
const tempDraw = mxcad.getTempDraw();
tempDraw.clearAll();
tempDraw.setDrawColor(0xFF0000);
tempDraw.addLines(new McGePoint3dArray([new McGePoint3d(0, 0, 0), new McGePoint3d(100, 100, 0)]));

getViewBackgroundColor ​

▸ getViewBackgroundColor(): number

Return the background color of the viewport, 0XFF (red) FF (green) FF (blue)

Returns ​

number


getViewCADCoord ​

▸ getViewCADCoord(): Object

Return the display range and CAD coordinates of the current viewport.

Returns ​

Object

Current viewport display range

NameType
pt1McGePoint3d
pt2McGePoint3d
pt3McGePoint3d
pt4McGePoint3d

iniAuthorizedService ​

▸ iniAuthorizedService(sUrl): void

Initialize user authorization service url

Parameters ​

NameTypeDescription
SURLstringAuthorization service URL

Returns ​

void


init ​

▸ init(imp): void

Initial object

Parameters ​

NameTypeDescription
Implement the 'imp''any'object, and by default, this function will be automatically called by the system

Returns ​

void


initMxObject ​

▸ initMxObject(mxObject): void

Initialize object model

Parameters ​

NameTypeDescription
MxObjectanyInitialize [mxdraw]( https://mxcadx.gitee.io/mxdraw_docs )Created drawing controls

Returns ​

void

Description


initRegist ​

▸ initRegist(sRegist): void

Initialize user registration data

Parameters ​

NameTypeDescription
SRegiststringRegistration data

Returns ​

void


insertBlock ​

▸ insertBlock(sFileUrl, sBlkName, isWorkThread?, fetchAttributes?, isUpdataInsertBlock?, isUpdataSameNameBlock?): Promise<McObjectId>

Plugin block file

Parameters ​

NameTypeDefault valueDescription
SFileURLstringundefinedNetwork file path This file is in mxweb format
SBlkNamestringundefinedThe block name of the inserted block
IsWorkThreadbooleantrueWhether to use a worker thread to open the file, default to true
fetchAttributesnumber01: EMSCRIPTEN_FETCH_LOAD_TO_MEMORY, Load the drawing data into memory, 0: EMSCRIPTEN_FETCH_LOAD_TO_MEMORY | EMSCRIPTEN_FETCH_PERSIST_FILE | EMSCRIPTEN_FETCH_APPEND, Add the drawing data to IndexedDB
IsUpdataInsertBlockbooleanfalseUpdate existing blocks, default not updated
IsUpdataSameNameBlockbooleanfalseDuring the process of inserting a block, if a block with the same name is found in the original database, will it also be updated? By default, it will not be updated

Returns ​

Promise<McObjectId>

Example

ts
import { McDbBlockReference, MxCADUiPrPoint, MxCpp } from "mxcad";
//Insert block
   async function MxTest_InsertBlock() {
       let baseUrl = "http://localhost:3000/mxcad/"
//Set block path
       let blkFilePath = baseUrl + "tree.mxweb";

//Insert block file
       let mxcad = MxCpp.App.getCurrentMxCAD();
       let blkrecId = await mxcad.insertBlock(blkFilePath, "tree");
       if (!blkrecId.isValid()) {
//Insert block
           return;
       }

//Set block size
       let blkRef = new McDbBlockReference();
       blkRef.blockTableRecordId = blkrecId;
       let box = blkRef.getBoundingBox();
       if (box.ret) {
           let dLen = box.maxPt.distanceTo(box.minPt);
           if (dLen > 0.00001) {
               blkRef.setScale(mxcad.getMxDrawObject().screenCoordLong2Doc(100) / dLen);
           }
       }

//Specify insertion base point
       let getPoint = new MxCADUiPrPoint();
GetPoint.setMessage ("\ Specify insertion base point");

//Dynamically drawing blocks
       getPoint.setUserDraw((v, worldDraw) => {
           blkRef.position = v;
           worldDraw.drawMcDbEntity(blkRef);
       });

       let pt = await getPoint.go();
       if (!pt) return;
       blkRef.position = pt;
//Draw blocks
       let newBlkRefId = mxcad.drawEntity(blkRef);
       if (!newBlkRefId.isValid) {
           console.log("insert error");
           return;
       }
   };

isBlockEditing ​

▸ isBlockEditing(): boolean

Is block editing currently in progress

Returns ​

boolean


isTryVersion ​

▸ isTryVersion(): boolean

Is the current program a trial version

Returns ​

boolean


isUselessLayer ​

▸ isUselessLayer(layerName): boolean

To determine whether a layer is a useful layer in use, call this function to determine before deleting a layer.

Parameters ​

NameTypeDescription
LayerNamestringlayer name

Returns ​

boolean

True: useful layer, false: useless layer


isViewPortEditing ​

▸ isViewPortEditing(): boolean

Is the current viewport being edited

Returns ​

boolean


layoutRename ​

▸ layoutRename(sName, sToName): boolean

Layout renaming

Parameters ​

NameTypeDescription
SNamestringLayout Name
SToNamestringNew layout name

Returns ​

boolean


loadDwgBackground ​

▸ loadDwgBackground(sFileUrl, call, color?, isShow?): void

Load another DWG file as the background object for the current drawing.

Commonly used in scenarios such as base image comparison, reference image overlay, and background image display. After successful loading, The background object will participate in the display in the current drawing's background mode.

Parameters ​

NameTypeDefault valueDescription
SFileURLstringundefinedBackground file address.
Call(ret: boolean)=>voidundefinedThe callback after loading is complete, with a boolean parameter indicating whether the loading was successful.
ColorNumber0The background object displays a color that defaults to 0.
IsShowbooleantrueWhether to display background objects.

Returns ​

void

Example

ts
import { MxCpp } from "mxcad";

const mxcad = MxCpp.getCurrentMxCAD();
mxcad.loadDwgBackground("./demo/background.dwg.mxweb", (ret) => {
Console.log ("Background loading result:", ret);
});

loadImage ​

▸ loadImage(imageUrl, call, imageFileName?, fileType?): void

Load an external image into the current context for future use.

Parameters ​

NameTypeDefault valueDescription
ImageURLstringundefinedImage path
Call(image: any)=>voidundefinedcallback function
imageFileNamestring""-
fileTypestring""-

Returns ​

void

Example

ts
import { MxCpp, MxCADUiPrPoint } from "mxcad"

   async function Mx_Test_DrawImage() {
       const getPoint = new MxCADUiPrPoint();
GetPoint.setMessage ("\ nSpecify insertion point:");
       let pt = await getPoint.go();
       if (!pt) return;
       let mxcad = MxCpp.getCurrentMxCAD();
       let imagUrl = "https://cdn.pixabay.com/photo/2022/11/15/12/23/winter-7593872_960_720.jpg";
       mxcad.loadImage(imagUrl, (image) => {
           if (!image) {
               console.log("loadImage failed");
               return;
           }
           let width = mxcad.mxdraw.viewCoordLong2Cad(100);
           let height = (image.height / image.width) * width;
           //let viewAngle = mxcad.mxdraw.getViewAngle() * 180  / Math.PI;
           //let viewAngle = mxcad.database.ucsMatrix.angleXYPlane() * 180  / Math.PI;
           //let viewAngle = 15.0;
           let viewAngle = 0.0;
           let id = mxcad.drawImage((pt as any).x, (pt as any).y, width, height, viewAngle, imagUrl, true, image.width, image.height);
           let ent = id.getMcDbEntity();
           if (ent) {
               ent.trueColor = new McCmColor(255, 255, 255, 160);
               // ent.rotate(pt,45 * 3.14159265 / 180.0);
           }
           mxcad.updateDisplay();
       });
   }

loadImageBase64 ​

▸ loadImageBase64(sImageBase64, imageFileName, call): void

Load Base64 image.

Parameters ​

NameTypeDescription
sImageBase64string-
imageFileNamestring-
Call(image: any)=>voidcallback function

Returns ​

void

Example

ts
    import { MxCpp } from "mxcad";
    function selectLocalFile() {
        return new Promise((resolve) => {
            const input = document.createElement("input");
            input.type = "file";
            input.accept = "image/*";
            input.onchange = (e) => resolve(e.target.files[0]);
            input.click();
        });
    }
    function fileToBase64(file) {
        return new Promise((resolve, reject) => {
            const reader = new FileReader();
            reader.onload = () => resolve(reader.result);
            reader.onerror = reject;
            reader.readAsDataURL(file);
        });
    }

    const file = await selectLocalFile();
    if (!file) return;
    const imagData = await fileToBase64(file);
    let mxcad = MxCpp.getCurrentMxCAD();

    mxcad.loadImageBase64(imagData, "test.jpg", (image) => {
        if (!image) {
            console.log("loadImage failed");
            return;
        }
        let width = mxcad.mxdraw.viewCoordLong2Cad(100);
        let height = (image.height / image.width) * width;

        let viewAngle = 0.0;
        let id = mxcad.drawImage(100, 100, width, height, viewAngle, "test.jpg", true, image.width, image.height,"",imagData);
        mxcad.updateDisplay();
    })

makeCurrent ​

▸ makeCurrent(): void

Set MXCAD as the current CAD object

Returns ​

void


newFile ​

▸ newFile(): boolean

Clear the content of the current image and create a new file

Returns ​

boolean


objectIdToObject ​

▸ objectIdToObject(lIdIndex): null | McDbObject

Convert lIdInDex to McDbObject object

Parameters ​

NameTypeDescription
LIdIDEXnumberObject ID

Returns ​

null | McDbObject

McDbObject object corresponding to ID, returns null if the object does not exist


off ​

▸ off(name, fun?): void

Turn off event monitoring

Parameters ​

NameTypeDescription
NameStringListening Event Name
fun?[Function]( https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function )Monitoring events

Returns ​

void

Example

ts
import { MxCpp, McObject } from "mxcad"

const mxcad:McObject = MxCpp.getCurrentMxCAD();
//E: Event function, referring to the function registered in mxcad. on ("selectChange", e)
mxcad.off("selectChange", e);

on ​

▸ on(name, fun): void

Monitor object selection event

Parameters ​

NameType
name"selectChange"
fun(ids: McObjectId[]) => void | (ids: McObjectId[]) => void[]

Returns ​

void

Example

ts
import { MxCpp, McObject, McObjectId } from "mxcad"

const mxcad:McObject = MxCpp.getCurrentMxCAD();
mxcad.on("selectChange", (ids: McObjectId[])=> {
     if (ids.length == 0) return;
     let id = ids[0]
     let ent = id.getMcDbEntity()
     if(!ent) return
     console.log(ent.objectName)
})

▸ on(name, fun): void

Monitor file fully open

Parameters ​

NameType
name"openFileComplete"
fun() => void

Returns ​

void

▸ on(name, fun): void

The mxdraw mxcad program has been loaded and is ready to initialize the CPP program

Parameters ​

NameType
name"init_cpp"
fun() => void

Returns ​

void

▸ on(name, fun): void

The mxdraw mxcad program has been loaded and triggered when preparing to create an mxdraw object

Parameters ​

NameType
name"init"
fun() => void

Returns ​

void

▸ on(name, fun): void

Called when loading the initial map, used by mxdad app npm

Parameters ​

NameType
name"init_map"
fun(init_param: { map: MxMap ; plugin: MxCADPluginBase }) => void

Returns ​

void

▸ on(name, fun): void

Called when loading map layers, used by mxdad app npm

Parameters ​

NameType
name"map_style.load"
fun(map: MxMap) => void

Returns ​

void

▸ on(name, fun): void

MXdraw object created, triggered when preparing initial related parameters

Parameters ​

NameType
name"init_before_mxdraw"
fun(mxdraw: MxDrawObject) => void

Returns ​

void

▸ on(name, fun): void

Triggered after mxdraw object creation

Parameters ​

NameType
name"init_mxdraw"
fun(mxdraw: MxDrawObject) => void

Returns ​

void

▸ on(name, fun): void

Triggered when the MXCAD object is ready to be created

Parameters ​

NameType
name"init_mxcad"
fun(mxcad: McObject) => void

Returns ​

void

▸ on(name, fun): void

Monitor database modification events

Parameters ​

NameType
name"databaseModify"
fun() => void

Returns ​

void

▸ on(name, fun): void

System variables have been modified

Parameters ​

NameType
name"sysVarChanged"
fun(name: string) => void

Returns ​

void

▸ on(name, fun): void

Graphic database initialization

Parameters ​

NameType
name"databaseInitialization"
fun() => void

Returns ​

void

▸ on(name, fun): void

The layer data has changed

Parameters ​

NameType
name"layerChanged"
fun() => void

Returns ​

void

▸ on(name, fun): void

The line type data has changed

Parameters ​

NameType
name"lineTypeChanged"
fun() => void

Returns ​

void

▸ on(name, fun): void

When an object is modified, it will not be notified by default. Configure the Enable Object Modification Event variable to enable status: 1: delete, 2: add, 0: modify

Parameters ​

NameType
name"objectModified"
fun(param: { cmd: string ; entitys: { erase: boolean ; id: McObjectId ; status: number }[] }) => void

Returns ​

void


openWebFile ​

▸ openWebFile(sFileUrl, retCall?, isWorkThread?, obj_param?, fetchAttributes?, isFetchTzFile?): boolean

Open network files

Parameters ​

NameTypeDefault valueDescription
SFileURLstringundefinedNetwork file path
retCall?(iRet: number)=>voidundefinedcallback function, optional parameter, callback function after opening the file, parameter is the result of opening the file, 0 indicates success, other values indicate failure
IsWorkThreadbooleantrueWhether to use a worker thread to open the file, default to true
obj_param?objectundefined-
fetchAttributesnumber01: EMSCRIPTEN_FETCH_LOAD_TO_MEMORY, Load the drawing data into memory, 0: EMSCRIPTEN_FETCH_LOAD_TO_MEMORY | EMSCRIPTEN_FETCH_PERSIST_FILE | EMSCRIPTEN_FETCH_APPEND, Add the drawing data to IndexedDB
isFetchTzFilebooleantrue-

Returns ​

boolean

Did you successfully open the file

Example

ts
import { MxCpp } from "mxcad";
const mxcad = MxCpp.getCurrentMxCAD();
mxcad.openWebFile("http://localhost:1337/mxcad/file/a9cbed3d3a351b79f24484e87bd78338.DWG.mxweb");

pathCircle ​

▸ pathCircle(dCenX, dCenY, dR, dPrecision?, dWidth?): boolean

Create a path based on a circular object

Parameters ​

NameTypeDefault value
dCenXnumberundefined
dCenYnumberundefined
dRnumberundefined
dPrecisionnumber0.0
dWidthnumber0

Returns ​

boolean


pathLineTo ​

▸ pathLineTo(dX, dY): void

Draw a straight line from the current position to the specified location

Parameters ​

NameTypeDescription
DXnumberX coordinate
DYnumberY coordinate

Returns ​

void


pathLineToEx ​

▸ pathLineToEx(dX, dY, dStartWidth, dEndWidth, dBulge): void

Draw a straight line from the current position to the specified position, while specifying the starting width, ending width, and convexity

Parameters ​

NameTypeDescription
DXnumberX coordinate
DYnumberY coordinate
DStartWidthnumberStarting width
DEndWidthnumberEnd width
DBulgenumberconvexity

Returns ​

void


pathMakeClosed ​

▸ pathMakeClosed(): void

Closed path

Returns ​

void

Example

ts
import { MxCpp } from "mxcad"

 let mxcad = MxCpp.getCurrentMxCAD();
//Use Plyline to display and draw rectangular boxes

//Define the starting point of a path
   mxcad.pathMoveTo(0, 300);

//The next point on the path
   mxcad.pathLineTo(100, 300);

//The next point on the path
   mxcad.pathLineTo(100, 400);

//The next point on the path
   mxcad.pathLineTo(0, 400);

//Set the path to closed
   mxcad.pathMakeClosed();

//Close the path and generate a rectangular box
   mxcad.drawPathToPolyline();

pathMakeExclude ​

▸ pathMakeExclude(isExclude): void

Mark the current path as an exclusion marker, mainly used for filling and drawing. Dig out the closed area composed of this path in the filling process

Parameters ​

NameTypeDescription
IsExcludebooleanExclude or not

Returns ​

void

Example

ts
//Draw a solid object with a curved boundary filling, and cut a piece in the middle

   import { MxCpp, McObject } from "mxcad";

   const mxcad:McObject = MxCpp.getCurrentMxCAD()
   
//Define the starting point of a path
   mxcad.pathMoveToEx(440, 3310, 0, 0, 0);
//The next point on the path
   mxcad.pathLineTo(480, 3310);
//The next point on the path
   mxcad.pathLineTo(480, 3360);
//The next point on the path
   mxcad.pathLineTo(450, 3340);
//Fill in the exclusion area with the path definition defined above
   mxcad.pathMakeExclude(true);
//Define the starting point of a path
   mxcad.pathMoveToEx(400, 3300, 0, 0, 0.3);
//The next point on the path
   mxcad.pathLineTo(500, 3300);
//The next point on the path
   mxcad.pathLineTo(500, 3400);
//The next point on the path
   mxcad.pathLineTo(400, 3300);
   mxcad.drawColor = new McCmColor(255, 25, 0);
//Turn the path into a padding
   mxcad.drawPathToHatch(1);

pathMoveTo ​

▸ pathMoveTo(dX, dY): void

Move the path to the specified location

Parameters ​

NameTypeDescription
DXnumberX coordinate
DYnumberY coordinate

Returns ​

void


pathMoveToEx ​

▸ pathMoveToEx(dX, dY, dStartWidth, dEndWidth, dBulge): void

Move the path to the specified location, while specifying the starting width, ending width, and convexity

Parameters ​

NameTypeDescription
DXnumberX coordinate
DYnumberY coordinate
DStartWidthnumberStarting width
DEndWidthnumberEnd width
dBulgenumber-

Returns ​

void


redo ​

▸ redo(): void

Reverse rollback, redo.

Returns ​

void


regen ​

▸ regen(delayTime?): void

After redrawing all objects on the graph and calling ZoomAll and ZoomW, it may be necessary to delay the call to Regen before it takes effect due to asynchronous execution.

Parameters ​

NameTypeDefault valueDescription
DelayTimenumber0execution time

Returns ​

void

Example

ts
import { MxCpp, McObject } from 'mxcad'
 const mxcad:McObject = MxCpp.getCurrentMxCAD()
//Draw a circle with width
   mxcad.addLinetype("CircleLineType", "30,-5,7,-7");

//Design the current line type as' CircleLineType '
   mxcad.drawLinetype = ("CircleLineType");

   mxcad.drawLineWidth = 40;

   mxcad.drawCircle(600, 800, 120);

   mxcad.zoomAll();
   mxcad.regen();
   mxcad.updateDisplay();

regenBlockRecord ​

▸ regenBlockRecord(idBlockRecord): boolean

When redrawing objects in the block table record and modifying the objects in the block table record, if the display effect is not updated in a timely manner, this function needs to be called.

Parameters ​

NameTypeDescription
IdBlockRecord[McObject Id] (2d. McObject Id. md)Block Table Record Object

Returns ​

boolean

boolean


saveFile ​

▸ saveFile(filename?, call?, isDownland?, isShowSaveFileDialog?, parameter?): boolean

Save file

Parameters ​

NameTypeDefault valueDescription
filename? stringundefinedNew file name for saving as (all saved as files are in mxweb format)
call?(data: any)=>voidundefinedcallback function, optional parameter, callback function after saving the file, parameter is file data
IsDownlandbooleantrueWhether to download files, default to true
IsShowSaveFileDialoguebooleantrueWhether to display the save file dialog box, default is true
parameter?objectundefined-

Returns ​

boolean

Has the file been successfully saved

Example

ts
import { MxCpp, McObject, MxTools } from "mxcad"
const mxcad:McObject = MxCpp.App.getCurrentMxCAD()
const fileName =  mxcad.getCurrentFileName()
mxcad.saveFile(fileName, (data)=> {
  const blob = new Blob([data.buffer], { type: "application/octet-stream" });
}, false, false)

saveFileToUrl ​

▸ saveFileToUrl(sSaveProgramUrl, call, filename?, param?): boolean

Save the file to the server and convert it to a network path for download

Parameters ​

NameTypeDescription
SSaveProgramURLstringBackend POST request interface, specific implementation of the interface: First download the MxDraw cloud map development package< https://www.mxdraw.com/download.html >And unzip and find MxDrawCloudServer \ Bin \ MxDrawServer \ Windows \ routes \ mxcad \ upload.exe to find the corresponding implementation interface "/savdwg", "/mxcad/savdwg": save dwg file to server "/mxcad/savefile": save mxweb file to server "/mxcad/savepdf": save pdf file to server. If not found, search for the definition of this interface under this project, which must comply with the definition of this interface to be used as a parameter
Call(iResult: number, ServerResult: string)=>voidSave file result callback. The parameters received here should be based on the location where the drawing is saved according to the interface definition, Ref.file is not the complete request path, it is only the name of the saved drawing
filename?string-
param?any-

Returns ​

boolean

Has the file been successfully saved

Example

ts
import { MxCpp, McObject } from "mxcad"
//Save DWG file
const mxcad:McObject = MxCpp.getCurrentMxCAD()
 MxCpp.getCurrentMxCAD().saveFileToUrl("http://localhost:1337/mxcad/savedwg", (iResult, sserverResult) => {
   let ret = JSON.parse(sserverResult);
   if (ret.ret == "ok") {
       console.log(ret.file)
       let saveFileUrl = "http://localhost:1337/mxcad/file/" + ret.file;
       MxTools.downloadFileFromUrl(saveFileUrl, ret.file);
   }
})
//Save the PDF file.
import { MxCpp, McObject, MxTools } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
 MxCpp.getCurrentMxCAD().saveFileToUrl("http://localhost:1337/mxcad/savepdf", (iResult, sserverResult) => {
   let ret = JSON.parse(sserverResult);
   if (ret.ret == "ok") {
       console.log(ret.file)
       let saveFileUrl = "http://localhost:1337/mxcad/file/" + ret.file;
       MxTools.downloadFileFromUrl(saveFileUrl, ret.file);
   }
},"",JSON.stringify({ width: "2000", height: "2000" }));

setAttribute ​

▸ setAttribute(val): boolean

Set global display and run properties.

This method can control some parameters that affect user experience or operational behavior, with common uses including: -Turn on/off undo rollback; -Control the display of coordinate axes; -Adjust display accuracy; -Switch between black and white display modes.

Parameters ​

NameTypeDescription
ValobjectProperty configuration object, supports the following common items: 1 Display Precision: Number display precision, ranging from 0 to 1000, with larger values resulting in finer precision; two Enable undo: boolean whether undo/redo is enabled; three ShowCoordinate: boolean Whether to display the XY coordinate axis; four BlackWhiteDisplay: boolean Whether black and white display is enabled.

Returns ​

boolean

Example

ts
import { MxCpp } from "mxcad";
//Retrieve the current MxCAD object
const mxcad = MxCpp.getCurrentMxCAD();
//Set global properties: Enable undo function and display coordinate axis
mxcad.setAttribute({ EnableUndo: true, ShowCoordinate: true });

setBrowse ​

▸ setBrowse(browse): void

Set browsing mode Is parambrowse in browsing mode? True is browsing mode, false is editing mode

Parameters ​

NameType
browseboolean

Returns ​

void


setCurrentFileName ​

▸ setCurrentFileName(fileName): void

Set the current file name

Parameters ​

NameTypeDescription
FileNamestringCurrent file name

Returns ​

void


setCurrentLayout ​

▸ setCurrentLayout(layoutName): boolean

Set the current layout name

Parameters ​

NameTypeDescription
LayoutNamestringLayout Name

Returns ​

boolean


setCurrentOriginaFileName ​

▸ setCurrentOriginaFileName(fileName): void

Set the current source file name

Parameters ​

NameTypeDescription
FileNamestringCurrent source file name

Returns ​

void


setSysVarDouble ​

▸ setSysVarDouble(varName, val): boolean

Set floating-point values for system variables

Parameters ​

NameTypeDescription
VarNamestringVariable Name
ValnumberFloating point value of variable

Returns ​

boolean

Whether the variable value has been successfully set


setSysVarLong ​

▸ setSysVarLong(varName, val): boolean

Set integer values for system variables

Parameters ​

NameTypeDescription
VarNamestringVariable Name
ValnumberThe integer value of a variable

Returns ​

boolean

Whether the variable value has been successfully set


setSysVarPoint ​

▸ setSysVarPoint(varName, pt): boolean

Set the point values of system variables

Parameters ​

NameTypeDescription
VarNamestringVariable Name
ptMcGePoint3d-

Returns ​

boolean

Whether the variable value has been successfully set


setSysVarPoint2d ​

▸ setSysVarPoint2d(varName, pt): boolean

Set 2D point values for system variables

Parameters ​

NameTypeDescription
VarNamestringVariable Name
ptMcGePoint3d-

Returns ​

boolean

Whether the variable value has been successfully set


setSysVarString ​

▸ setSysVarString(varName, val): any

Set string values for system variables

Parameters ​

NameTypeDescription
VarNamestringVariable Name
ValstringThe string value of the variable

Returns ​

any

Whether the variable value has been successfully set


setViewBackgroundColor ​

▸ setViewBackgroundColor(red, green?, blue?): void

Set the background color of the viewport

Parameters ​

NameTypeDescription
Rednumberred component (0-255)
green? numberGreen component (0-255)
blue? numberBlue component (0-255)

Returns ​

void

Example

ts
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
mxcad.setViewBackgroundColor(255, 255, 255)

showLineWeight ​

▸ showLineWeight(isShow): boolean

Control whether the current viewport displays the line width effect.

Suitable for scenes where you need to view the display effect of line width, debug drawing styles, or observe whether line width is effective in the drawing. After opening, the current view will be refreshed immediately for easy observation of the drawing results.

Parameters ​

NameTypeDescription
IsShowbooleanWhether to display line width.

Returns ​

boolean

Execution results.

Example

ts
import { MxCpp } from "mxcad";

const mxcad = MxCpp.getCurrentMxCAD();
let showLineWeight = false;

function toggleLineWeight() {
  showLineWeight = !showLineWeight;
  mxcad.showLineWeight(showLineWeight);
}

smallcoordToCad ​

▸ smallcoordToCad(pt): McGePoint3d

Convert the small coordinate system of drawing correction to CAD coordinates

Parameters ​

NameTypeDescription
PtMcGePoint3d (2d. McGePoint3d. md)Point Object

Returns ​

McGePoint3d

Converted point coordinates


startBlockEdit ​

▸ startBlockEdit(idBlockRecord): boolean

Enter block editing mode

Parameters ​

NameTypeDescription
IdBlockRecord[McObject Id] (2d. McObject Id. md)ID of the block record

Returns ​

boolean

Have you successfully entered the block editing state

Example

ts
import { MxCpp, McDbBlockReference, MxCADUtility, MxCADResbuf, DxfCode } from "mxcad";
  async function Mx_StartBlockEdit() {
let retIds = await MxCADUtility.selectEnt(" Select the block reference to be edited ", new MxCADResbuf ([Dxfcode. kElementType," Insert ");
   if (retIds.length == 0) {
       return;
   }
   let id = retIds[0];
   let ent = id.getMcDbEntity();
   if(ent instanceof McDbBlockReference){
       MxCpp.mxcad.startBlockEdit((ent as McDbBlockReference).blockTableRecordId);
   }
  }

startViewPortEdit ​

▸ startViewPortEdit(idBlockRecord): boolean

Start entering viewport editing mode

Parameters ​

NameTypeDescription
IdBlockRecord[McObject Id] (2d. McObject Id. md)Viewport record object id

Returns ​

boolean

Example

ts
import { MxCpp, McDbViewport, MxCADUtility, MxCADResbuf, DxfCode } from "mxcad";

 async function Mx_StartViewPortEdit() {
let retIds = await MxCADUtility.selectEnt(" Select the viewport to be edited ", new MxCADResbuff ([Dxfcode. kElementType," VIEWPORT ");
   if (retIds.length == 0) {
       return;
   }
   let id = retIds[0];
   
   let ent = id.getMcDbEntity();
   if(ent instanceof McDbViewport){
       MxCpp.mxcad.startViewPortEdit(id);
   }
  }

undo ​

▸ undo(): void

Go back to the previous command or tag

Returns ​

void


undoIndexIncrease ​

▸ undoIndexIncrease(): void

Add 1 to the rollback tag index To modify a data object in a non command function, the rollback flag index needs to be incremented by 1, which will record the modification. Otherwise, it may be considered as the previous command modification and skip the current modification rollback record In the command, the rollback tag index will be automatically increased by 1

Returns ​

void


undoMark ​

▸ undoMark(): void

Set a rollback flag at the current time

Returns ​

void


updateDisplay ​

▸ updateDisplay(isImmediate?, delayTime?): void

update display

Parameters ​

NameTypeDefault valueDescription
IsImmediatebooleanfalseUpdate now
DelayTimenumber0Delay update time

Returns ​

void


updateLayerDisplayStatus ​

▸ updateLayerDisplayStatus(): void

Update the display of layers

Returns ​

void


viewCoord2Cad ​

▸ viewCoord2Cad(pt): McGePoint3d

Visual area coordinates to CAD coordinates

Parameters ​

NameTypeDescription
PtMcGePoint3d (2d. McGePoint3d. md)Point Object

Returns ​

McGePoint3d

Converted point coordinates


viewCoordLong2Cad ​

▸ viewCoordLong2Cad(l): number

Visual area length to CAD length

Parameters ​

NameTypeDescription
Lnumberviewport length

Returns ​

number

CAD length


zoomAll ​

▸ zoomAll(autoRegen?): boolean

Show all

Parameters ​

NameTypeDefault valueDescription
AutoRegenbooleanfalseAutomatically redraw method after method execution

Returns ​

boolean


zoomAngle ​

▸ zoomAngle(viewangle): void

Set the angle of the display viewport, in PI units

Parameters ​

NameTypeDescription
ViewanglenumberRotation angle Math PI

Returns ​

void

void


zoomCenter ​

▸ zoomCenter(dCenX, dCenY): void

Move the current display range to the specified position, dCenX, dCenY are DWG drawing coordinates.

Parameters ​

NameTypeDescription
DCenXnumberX coordinate of the center point of the viewport
DCenYnumberY coordinate of the center point of the viewport

Returns ​

void

void


zoomScale ​

▸ zoomScale(scale): void

Scale the current display range, which is relative to the current display range

Parameters ​

NameTypeDescription
Scalenumberscale scaling ratio

Returns ​

void

void


zoomW ​

▸ zoomW(minPt, maxPt): void

Move the current display range to the specified display range

Parameters ​

NameTypeDescription
MinPt[McGePoint3d] (2d. McGePoint3d. md)Coordinate 1 McGePoint3d
MaxPt[McGePoint3d] (2d. McGePoint3d. md)Coordinates 2 McGePoint3d

Returns ​

void

void