.NET
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
SendString ToExecute and echoComman d
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
197 Views, 3 Replies
03-19-2013 12:33 AM
Hello,
I've searched a lot, but I didn't find any solution for my problem.
I've function written in C#:
[CommandMethod("GDF")]
public void doDimLinear()
{
DF.doDimLinear();
}In DF class, in doDimLinear function at the end I have:
doc.SendStringToExecute("dimlinear ", false, false, false);
And everything works OK, my function is switching layer, setting dimension style and invoking dimlinear function.
But when I want to repeat last command (by spacebar, right mouse) I have dimlinear command instead of GDF.
Can anyone help me?
Solved! Go to Solution.
Re: SendString ToExecute and echoComman d
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
03-19-2013 02:33 AM in reply to:
GrzesiekGP
My guees is you have to use acedCmd instead
Search for this method here
http://adndevblog.typepad.com/autocad/
Quick example, works good on A2010
[System.Security.SuppressUnmanagedCodeSecurity]
[DllImport("acad.exe", EntryPoint = "acedCmd", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
extern static private int acedCmd(IntPtr resbuf);
[CommandMethod("dimlin")]
public void acedCmdDimLinear()
{
ResultBuffer rb = new ResultBuffer();
// RTSTR = 5005
rb.Add(new TypedValue(5005, "_.DIMLINEAR"));
// start the insert command
acedCmd(rb.UnmanagedObject);
bool quit = false;
// loop round while the insert command is active
while (!quit)
{
// see what commands are active
string cmdNames = (string)Autodesk.AutoCAD.ApplicationServices.Appli cation.GetSystemVariable("CMDNAMES");
// if the INSERT command is active
if (cmdNames.ToUpper().IndexOf("DIMLINEAR") >= 0)
{
// then send a PAUSE to the command line
rb = new ResultBuffer();
// RTSTR = 5005 - send a user 3 pause to the command line
rb.Add(new TypedValue(5005, "\\")); rb.Add(new TypedValue(5005, "\\")); rb.Add(new TypedValue(5005, "\\"));
acedCmd(rb.UnmanagedObject);
}
else
// otherwise quit
quit = true;
}
}
_____________________________________
C6309D9E0751D165D0934D0621DFF27919
C6309D9E0751D165D0934D0621DFF27919
Re: SendString ToExecute and echoComman d
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
03-19-2013 03:27 AM in reply to:
Hallex
Seems to work:
ResultBuffer rb = new ResultBuffer();
// RTSTR = 5005
rb.Add(new TypedValue(5005, "_.dimlinear"));
utilities.acedCmd(rb.UnmanagedObject);
Thank you!
Re: SendString ToExecute and echoComman d
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
03-19-2013 03:49 AM in reply to:
GrzesiekGP
Glad you get it worked
Cheers ![]()
_____________________________________
C6309D9E0751D165D0934D0621DFF27919
C6309D9E0751D165D0934D0621DFF27919
