Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

ARES Commander supports three API sets that you can use independently. Now here we’ll going to discuss about CFx. NET(.NET ARES) and listed it’s differences with .NET Classic API's coding.

  1. .NET Classic API

  2. ARES COM API

  3. CFx .NET (SWIG generated .NET API version of ARES C++ SDK)

    Here We differentiate between .NET Classic and .NET ARES.

API

.NET Classic API

CFx .NET (.NET ARES)

Assembly Names

TD_Mgd_x.xx_xx.dll

FxCoreMgd_x.xx_xx.dll

ArgonMGD.dll

TD_SwigCoreMgd.dll

TD_SwigDbMgd.dll

TG_SwigDbMgd.dll

TD_Mgd_x.xx_xx.dll

Nature of Plugin

In-process

In-process

Loading Mechanism

Use the NETLOAD command

Use the NETLOAD command

Migration to AutoCAD

Can Migrate to AutoCAD

Can’t Migrate to AutoCAD

Access Document

Document document = Teigha.ApplicationServices.Application.DocumentManager.MdiActiveDocument;

CFxDocument pFxDocument = PCADGlobals.FXAPI().GetFxDocument();
or
CFxDocument pFxDocument = PCADGlobals.GetFxSystemServices().GetFxDocumentManager().GetActiveDocument();

Access Database

Database db = document.Database;

CFxDatabase pFxDatabase = pFxDocument.GetFxDatabase();

Prompting For User Input

PromptIntegerOptions op = new PromptIntegerOptions("Input a positive integer");
PromptIntegerResult res = (PromptIntegerResult)ed.DoPrompt(op);

CFxUserIO pFxUserIO = pFxDocument.GetFxUserIO();

Lisp Function Creation

Possible to create Lisp Functions. Using
LispFunction method.

Cannot create Lisp Functions.

Creating a .NET Classic Plugin:

  1. Create a new .NET ARES project using the Visual Studio project creation Wizard(  **minimum requirement .NET Framework v4.5)

  2. From Solution Explore, add references of 
    ArgonMGD.dll
    TD_SwigCoreMgd.dll

    TD_SwigDbMgd.dll

    TG_SwigDbMgd.dll

    TD_Mgd_x.xx_xx.dll from the ARES Commander installation folder.


    You can see all available NameSpaces, Classes, Methods, and Properties in each assembly in the Object Browser.

               

  3. Rename Class1.cs to PluginCommands.cs. This changes the class Class1 to class PluginCommands, as in the following example.

  4. Defining a command uses Teigha.Runtime namespace to access CommandMethod method attribute and adds a method, such as AnyFunctionName that has this attribute. The following example defines the MySampleCommand command which you can run later in ARES Commander, from the command prompt.
    You can define all types of in-process plugin using a similar procedure.

  5. Build the sample project to generate PluginCommands.dll or <YourProjectName.dll>.

  6. Start ARES Commander and type NETLOAD at the command prompt. Next, browse and load the plugin dll (PluginCommands.dll).
    The command window displays a confirmation message.

7. Run MySampleCommand, which executes the AnyFunctionName method. 

Accessing Documents

You can access the Document Manager from the application object.

The Document Manager provides properties and methods that let you perform the following:

  • Access the active document

    CFxDocument doc = PCADGlobals.GetFxSystemServices().GetFxDocumentManager().GetActiveDocument();
  • Add a new document

    CFxString templateStr = new CFxString("newTemplate");
    CFxDocument doc = PCADGlobals.GetFxSystemServices().GetFxDocumentManager().NewDocument(templateStr);

Open existing drawings.


Prompting for User Input 

The CFxUserIO class controls the user input. All related classes for prompting on the command window are available in PCAD_DOT_NET.CFxUserIO namespace.

CFxDocument Doc = PCADGlobals.FXAPI().GetFxDocument();
            CFxDatabase pDB = Doc.GetFxDatabase();

            CFxUserIO UserIO = Doc.GetFxUserIO();

            if (UserIO == null)
                return;
            
            CFxString prompt = UserIO.GetPrompt(new CFxString("Specify center point for circle or"));

            OdGePoint3d centerPoint = new OdGePoint3d();
            double radius = 5.0;

            int iResult = UserIO.GetPoint(prompt, new OdGePoint3d(), null, centerPoint);

            if (iResult == PCADGlobals.RTNORM)
            {
                using (OdDbCircle circle = OdDbCircle.createObject())
                {
                    circle.setDatabaseDefaults(pDB, true);
                    circle.setThickness(pDB.getTHICKNESS());
                    circle.setCenter(centerPoint);
                    circle.setRadius(radius);
                    
                    OdDbBlockTableRecord pBTR = (OdDbBlockTableRecord)pDB.GetActiveBlockId().openObject(Teigha.TD.OpenMode.kForWrite);
                    pBTR.appendOdDbEntity(circle);
                }
            }


  • No labels