.NET

Reply
Active Contributor
tangferry
Posts: 43
Registered: ‎04-21-2005
Message 1 of 10 (1,795 Views)

acedcommand function in .Net managed classes

1795 Views, 9 Replies
05-21-2005 04:13 AM
What is the corresponding functions or classes for thesethe arx Global
function acedcommand in the .NET managed classes?
*Albert Szilvasy
Message 2 of 10 (1,795 Views)

Re: acedcommand function in .Net managed classes

05-22-2005 02:23 PM in reply to: tangferry
There's none. This function isn't exposed via the .NET API. The function
that comes closest is Document.SendStringToExecute.

Albert
wrote in message news:4852689@discussion.autodesk.com...
What is the corresponding functions or classes for thesethe arx Global
function acedcommand in the .NET managed classes?
*Tony Tanzillo
Message 3 of 10 (1,795 Views)

Re: acedcommand function in .Net managed classes

05-23-2005 01:48 AM in reply to: tangferry
They didn't expose it.

Give the following a go, and see what happens.

Note that the same exact rules that govern the use
of acedCommand() in native ObjectARX apply here
(namely, you can't use it from the Application context).

////////////////// CommandSample.cs ///////////////////
// Copyright (c)2005 Tony Tanzillo, all rights reserved
//
// Shows how to execute commands without resorting
// to the kludgy SendStringToExecute method.
//
// The command 'COMMANDTEST' draws a circle
// centered at 2,2,0 with a radius of 4.0 units.

using System;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;

public class CommandSample
{
const Int32 RTREAL = 5001;
const Int32 RTSTR = 5005;
const Int32 RT3DPOINT = 5009;

[DllImport("acad.exe", CallingConvention = CallingConvention.Cdecl,
EntryPoint="acedCmd")]
extern static int acedCmd(IntPtr pResbuf);

unsafe static int Command(ResultBuffer args)
{
if( ! AcadApp.DocumentManager.IsApplicationContext )
return acedCmd((IntPtr) args.UnmanagedObject.ToPointer());
else
return 0;
}

[Autodesk.AutoCAD.Runtime.CommandMethod("COMMANDTEST")]
public static void CommandTest()
{
ResultBuffer args = new ResultBuffer();
args.Add(new TypedValue(RTSTR, "._circle"));
args.Add(new TypedValue(RT3DPOINT, new Point3d(2.0, 2.0, 0.0)));
args.Add(new TypedValue(RTREAL, 4.0));
Command(args);
}
}



--
http://www.caddzone.com

AcadXTabs: MDI Document Tabs for AutoCAD 2004/2005/2006
http://www.acadxtabs.com

wrote in message news:4852689@discussion.autodesk.com...
What is the corresponding functions or classes for thesethe arx Global
function acedcommand in the .NET managed classes?
Active Contributor
tangferry
Posts: 43
Registered: ‎04-21-2005
Message 4 of 10 (1,795 Views)

Re: acedcommand function in .Net managed classes

05-23-2005 06:29 AM in reply to: tangferry
can you tell me how to use Document.SendStringToExecute functioon?An example is not bad.
*Edward Merkins
Message 5 of 10 (1,795 Views)

Re: acedcommand function in .Net managed classes

05-27-2005 08:37 AM in reply to: tangferry
I am trying to learn C# based on examples that I find in this discussion
group. With that said, based on the example below, I am receiving the error
message: The name 'acedCmd' does not exist in the class or namespace
'AcadTest01.CommandSample' Can someone help?


"Tony Tanzillo" wrote in message
news:4853121@discussion.autodesk.com...
They didn't expose it.

Give the following a go, and see what happens.

Note that the same exact rules that govern the use
of acedCommand() in native ObjectARX apply here
(namely, you can't use it from the Application context).

////////////////// CommandSample.cs ///////////////////
// Copyright (c)2005 Tony Tanzillo, all rights reserved
//
// Shows how to execute commands without resorting
// to the kludgy SendStringToExecute method.
//
// The command 'COMMANDTEST' draws a circle
// centered at 2,2,0 with a radius of 4.0 units.

using System;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;

public class CommandSample
{
const Int32 RTREAL = 5001;
const Int32 RTSTR = 5005;
const Int32 RT3DPOINT = 5009;

[DllImport("acad.exe", CallingConvention = CallingConvention.Cdecl,
EntryPoint="acedCmd")]
extern static int acedCmd(IntPtr pResbuf);

unsafe static int Command(ResultBuffer args)
{
if( ! AcadApp.DocumentManager.IsApplicationContext )
return acedCmd((IntPtr) args.UnmanagedObject.ToPointer());
else
return 0;
}

[Autodesk.AutoCAD.Runtime.CommandMethod("COMMANDTEST")]
public static void CommandTest()
{
ResultBuffer args = new ResultBuffer();
args.Add(new TypedValue(RTSTR, "._circle"));
args.Add(new TypedValue(RT3DPOINT, new Point3d(2.0, 2.0, 0.0)));
args.Add(new TypedValue(RTREAL, 4.0));
Command(args);
}
}



--
http://www.caddzone.com

AcadXTabs: MDI Document Tabs for AutoCAD 2004/2005/2006
http://www.acadxtabs.com

wrote in message news:4852689@discussion.autodesk.com...
What is the corresponding functions or classes for thesethe arx Global
function acedcommand in the .NET managed classes?
Distinguished Contributor
Mikko
Posts: 212
Registered: ‎10-03-2003
Message 6 of 10 (1,796 Views)

Re: acedcommand function in .Net managed classes

05-27-2005 08:54 AM in reply to: tangferry
Something like this:
Application.DocumentManager.MdiActiveDocument.SendStringToExecute("_Zoom _E ", False, True, False)
*J. Daniel Smith
Message 7 of 10 (1,795 Views)

Re: acedcommand function in .Net managed classes

05-27-2005 09:22 AM in reply to: tangferry
You'll probably have more success "trying to learn C#" at places like
http://msdn.microsoft.com/vcsharp/gettingstarted/default.aspx; this
discussion group more-or-less assumes knowledge of a .NET language.

Dan

"Edward Merkins" wrote in message
news:4858845@discussion.autodesk.com...
I am trying to learn C# based on examples that I find in this discussion
group. With that said, based on the example below, I am receiving the error
message: The name 'acedCmd' does not exist in the class or namespace
'AcadTest01.CommandSample' Can someone help?


"Tony Tanzillo" wrote in message
news:4853121@discussion.autodesk.com...
They didn't expose it.

Give the following a go, and see what happens.

Note that the same exact rules that govern the use
of acedCommand() in native ObjectARX apply here
(namely, you can't use it from the Application context).

////////////////// CommandSample.cs ///////////////////
// Copyright (c)2005 Tony Tanzillo, all rights reserved
//
// Shows how to execute commands without resorting
// to the kludgy SendStringToExecute method.
//
// The command 'COMMANDTEST' draws a circle
// centered at 2,2,0 with a radius of 4.0 units.

using System;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;

public class CommandSample
{
const Int32 RTREAL = 5001;
const Int32 RTSTR = 5005;
const Int32 RT3DPOINT = 5009;

[DllImport("acad.exe", CallingConvention = CallingConvention.Cdecl,
EntryPoint="acedCmd")]
extern static int acedCmd(IntPtr pResbuf);

unsafe static int Command(ResultBuffer args)
{
if( ! AcadApp.DocumentManager.IsApplicationContext )
return acedCmd((IntPtr) args.UnmanagedObject.ToPointer());
else
return 0;
}

[Autodesk.AutoCAD.Runtime.CommandMethod("COMMANDTEST")]
public static void CommandTest()
{
ResultBuffer args = new ResultBuffer();
args.Add(new TypedValue(RTSTR, "._circle"));
args.Add(new TypedValue(RT3DPOINT, new Point3d(2.0, 2.0, 0.0)));
args.Add(new TypedValue(RTREAL, 4.0));
Command(args);
}
}



--
http://www.caddzone.com

AcadXTabs: MDI Document Tabs for AutoCAD 2004/2005/2006
http://www.acadxtabs.com

wrote in message news:4852689@discussion.autodesk.com...
What is the corresponding functions or classes for thesethe arx Global
function acedcommand in the .NET managed classes?
*Edward Merkins
Message 8 of 10 (1,798 Views)

Re: acedcommand function in .Net managed classes

05-27-2005 09:37 AM in reply to: tangferry
Never mind - I had a typo.

"Edward Merkins" wrote in message
news:4858845@discussion.autodesk.com...
I am trying to learn C# based on examples that I find in this discussion
group. With that said, based on the example below, I am receiving the error
message: The name 'acedCmd' does not exist in the class or namespace
'AcadTest01.CommandSample' Can someone help?


"Tony Tanzillo" wrote in message
news:4853121@discussion.autodesk.com...
They didn't expose it.

Give the following a go, and see what happens.

Note that the same exact rules that govern the use
of acedCommand() in native ObjectARX apply here
(namely, you can't use it from the Application context).

////////////////// CommandSample.cs ///////////////////
// Copyright (c)2005 Tony Tanzillo, all rights reserved
//
// Shows how to execute commands without resorting
// to the kludgy SendStringToExecute method.
//
// The command 'COMMANDTEST' draws a circle
// centered at 2,2,0 with a radius of 4.0 units.

using System;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;

public class CommandSample
{
const Int32 RTREAL = 5001;
const Int32 RTSTR = 5005;
const Int32 RT3DPOINT = 5009;

[DllImport("acad.exe", CallingConvention = CallingConvention.Cdecl,
EntryPoint="acedCmd")]
extern static int acedCmd(IntPtr pResbuf);

unsafe static int Command(ResultBuffer args)
{
if( ! AcadApp.DocumentManager.IsApplicationContext )
return acedCmd((IntPtr) args.UnmanagedObject.ToPointer());
else
return 0;
}

[Autodesk.AutoCAD.Runtime.CommandMethod("COMMANDTEST")]
public static void CommandTest()
{
ResultBuffer args = new ResultBuffer();
args.Add(new TypedValue(RTSTR, "._circle"));
args.Add(new TypedValue(RT3DPOINT, new Point3d(2.0, 2.0, 0.0)));
args.Add(new TypedValue(RTREAL, 4.0));
Command(args);
}
}



--
http://www.caddzone.com

AcadXTabs: MDI Document Tabs for AutoCAD 2004/2005/2006
http://www.acadxtabs.com

wrote in message news:4852689@discussion.autodesk.com...
What is the corresponding functions or classes for thesethe arx Global
function acedcommand in the .NET managed classes?
*Edward Merkins
Message 9 of 10 (1,795 Views)

Re: acedcommand function in .Net managed classes

05-27-2005 09:42 AM in reply to: tangferry
So I take it you didn't no the answer. Don't post responses if you don't
have anything intelligent to say! I am already somewhat familiar with C#.
Just like the majority of people in this discussion group, I am trying to
get a better understanding of using C# with AutoCAD.


"J. Daniel Smith" wrote in message
news:4858917@discussion.autodesk.com...
You'll probably have more success "trying to learn C#" at places like
http://msdn.microsoft.com/vcsharp/gettingstarted/default.aspx; this
discussion group more-or-less assumes knowledge of a .NET language.

Dan

"Edward Merkins" wrote in message
news:4858845@discussion.autodesk.com...
I am trying to learn C# based on examples that I find in this discussion
group. With that said, based on the example below, I am receiving the error
message: The name 'acedCmd' does not exist in the class or namespace
'AcadTest01.CommandSample' Can someone help?


"Tony Tanzillo" wrote in message
news:4853121@discussion.autodesk.com...
They didn't expose it.

Give the following a go, and see what happens.

Note that the same exact rules that govern the use
of acedCommand() in native ObjectARX apply here
(namely, you can't use it from the Application context).

////////////////// CommandSample.cs ///////////////////
// Copyright (c)2005 Tony Tanzillo, all rights reserved
//
// Shows how to execute commands without resorting
// to the kludgy SendStringToExecute method.
//
// The command 'COMMANDTEST' draws a circle
// centered at 2,2,0 with a radius of 4.0 units.

using System;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;

public class CommandSample
{
const Int32 RTREAL = 5001;
const Int32 RTSTR = 5005;
const Int32 RT3DPOINT = 5009;

[DllImport("acad.exe", CallingConvention = CallingConvention.Cdecl,
EntryPoint="acedCmd")]
extern static int acedCmd(IntPtr pResbuf);

unsafe static int Command(ResultBuffer args)
{
if( ! AcadApp.DocumentManager.IsApplicationContext )
return acedCmd((IntPtr) args.UnmanagedObject.ToPointer());
else
return 0;
}

[Autodesk.AutoCAD.Runtime.CommandMethod("COMMANDTEST")]
public static void CommandTest()
{
ResultBuffer args = new ResultBuffer();
args.Add(new TypedValue(RTSTR, "._circle"));
args.Add(new TypedValue(RT3DPOINT, new Point3d(2.0, 2.0, 0.0)));
args.Add(new TypedValue(RTREAL, 4.0));
Command(args);
}
}



--
http://www.caddzone.com

AcadXTabs: MDI Document Tabs for AutoCAD 2004/2005/2006
http://www.acadxtabs.com

wrote in message news:4852689@discussion.autodesk.com...
What is the corresponding functions or classes for thesethe arx Global
function acedcommand in the .NET managed classes?
*Russ Green
Message 10 of 10 (1,795 Views)

Re: acedcommand function in .Net managed classes

01-05-2006 05:48 AM in reply to: tangferry
Can Document.SendStringToExecute() be used (and executed) from within an
application? I'm trying to write a VB.NET batch script processor and what
seems to be happening is that the script doesn'tr execute until my app has
finished. When I've tested my DLL code on a single DWG file my app runs all
the way through, first setting FILEDIA to 0 then back to 1 but the command
my app sends as a string doesn't execute until my app has finished, so
FILEDIA is set back to 1 and the user has to browse for the script file to
run.

Is there a reson why SendCommand hasn't been exposed in the .NET API?

I've successfully built a version of my app as an exe using COM but I'm
trying to get my head into the .NET API. The code I have so far follows:

THIS WORKS IN MY EXE

Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common

Public WithEvents AcadApp As Autodesk.AutoCAD.Interop.AcadApplication
Dim AcadDoc As Autodesk.AutoCAD.Interop.AcadDocument

Sub ProcessDwg(ByVal ThisDwg As String)
'open the file
AcadDoc.Application.Documents.Open(ThisDwg)
AcadDoc = AcadApp.ActiveDocument
'AcadApp.ZoomExtents()

'process the script
AcadDoc.SetVariable("filedia", 0)

AcadDoc.SendCommand("script" & vbCr & """" & Me.txtScriptFile.Text &
"""" & vbCr)

AcadDoc.SetVariable("filedia", 1)

'close the file
AcadDoc.Close(Me.chkSaveDWG.Checked, ThisDwg)
End Sub


THIS DOESN'T WORK IN MY DLL

Imports acadApp = Autodesk.AutoCAD.ApplicationServices.Application
Imports acadDoc = Autodesk.AutoCAD.ApplicationServices.Document

Dim file As acadDoc

Sub ProcessDwg(ByVal ThisDwg As String)

acadApp.DocumentManager.Open(ThisDwg)
file = acadApp.DocumentManager.MdiActiveDocument
'AcadApp.ZoomExtents()

'process the script
acadApp.SetSystemVariable("filedia", 0)

file.SendStringToExecute("script" & vbCr & """" & Me.txtScript.Text
& """" & vbCr, False, False, False)

acadApp.SetSystemVariable("filedia", 1)

'close the file
file.CloseAndSave(ThisDwg)
End Sub
Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Announcements
Are You Going To Be @ AU 2014? Feel free to drop by our AU topic post and share your plans, plug a class that you're teaching, or simply check out who else from the community might be in attendance. Ohh and don't forgot to stop by the Autodesk Help | Learn | Collaborate booths in the Exhibit Hall and meet our community team if you get a chance!