.NET

.NET

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

acedcommand function in .Net managed classes

1821 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,821 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,821 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,821 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,821 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,822 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,821 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,824 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,821 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,821 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
Do you have 60 seconds to spare? The Autodesk Community Team is revamping our site ranking system and we want your feedback! Please click here to launch the 5 question survey. As always your input is greatly appreciated.