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.
Solved by Hallex. Go to Solution.
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.Application.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; } }
Seems to work:
ResultBuffer rb = new ResultBuffer(); // RTSTR = 5005 rb.Add(new TypedValue(5005, "_.dimlinear")); utilities.acedCmd(rb.UnmanagedObject);
Thank you!
Can't find what you're looking for? Ask the community or share your knowledge.