|
It looks like the problem now is that it doesn't know how to get the current drawing NewDoc = DocMan.MdiActiveDocument; . Even if I put it in the long way NewDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; . It still won't be able to find it, and in turn execute the commands on it.
Is the timer taking control away from Acad? Is that why it can't find it?
If you have any ideas, I'm will to try them, as I'm totally lost now. Thanks.
Tim
|
|
|
|
|
Ooops!!:-> I missed that
Docman and NewDoc too should be declared as static if you want to share them between main and CancelCommand . Don't forget to call them by the class name.
Regards
|
|
|
|
|
No problem. I made the DocMan static, but didn't think I need to make the NewDoc static also. After I did this, it was able to read the NewDoc , and I was able to get a property, but when I tried to use the method CloseAndDiscard() it crashed with and unhandled access issue. I will have to look into this tomorrow, as I'm going home, and don't have Acad there yet, so can't test anything.
Thanks for all your help today Nader it is really appreciated!!
Tim
|
|
|
|
|
You're welcome.
And if you need something tommorow, just reply and I'll get an email notification.
Good luck with your demo.;)
Regards
|
|
|
|
|
I hate to have to ask you for somemore help, but I can't see to find an answer to what I thought would be a simple question.
How can you set the focus to an application? I think this might be a problem with my code. I think I need to set the focus back to Autocad in the event handler portion.
Thanks again.
-- modified at 13:54 Friday 15th September, 2006
Nevermind. It doesn't seem to work that way. Back to the drawing board. I found a way on this website.
http://www.personalmicrocosms.com/Pages/dotnettips.aspx?c=3&t=3[^]
Tim
|
|
|
|
|
Hello
Sorry I saw your post late. Here is the way -if you still want it-.
First, you can't do that using C# alone. you have to make some Windows API unmanaged functions. The functions import code is:
[DllImport("User32.dll", CharSet=CharSet.Auto)]
private static extern bool SetForegroundWindow(IntPtr hWnd);
Now this loop will go through all top-level windows, check their title, then activate the one that has "Autocad" word on it:
foreach(Process P in Process.GetProcesses())
{
if (P.MainWindowTitle.Length > 0 && P.MainWindowTitle.IndexOf("Autocad") != -1)
SetForegroundWindow(P.MainWindowHandle);
}
One flow is that all windows that has "Autocad" word on it will be activated sequentily. If you know more word in a single phrase -ie. as a sentence- this should narrow this error margin.
Regards
|
|
|
|
|
Thank you for the code. I think I need to submit it to the Autocad people (they have a network of developers that help others) because I think I have gotten as far as I can with just your great C# help. I think it is an Autocad thing now, and if you don't use it (code for it, like it looks like you don't) then I don't think one would know how to fix it so that it will work.
Thanks again for your patience, and help. It's greatly appreciated (hope your not sick of reading this type of stuff, because it is sincere). If you want I will post the code that does work, sometimes people just like to see what was wrong. Who knows.
Tim
|
|
|
|
|
Hello
Thank you for your kind complements. I'm always happy to help you anytime.
What I got from your post is that your code didn't work out!! Why?? I though it did display that orbit thing, and all your problem was with the timer?? Sorry I don't have knowledge of Autocad, but I hope I helped you enough with the C# part!!
Anyway, if you still want to work out your code, just tell me what a non-autocad problem -if any- would be. If you found a working code, I'd be happy to see it.
Anyway, I wish you luck.
Regards
|
|
|
|
|
I have a Winform with a button. The Button Text is set to &RUN. When I open the application the Button does not Display RUN until I hit the Alt key. Is there a way to make this underlined when I open the app.
Thanks
Joe
|
|
|
|
|
That is a windows setting, it can't be changed in you app without effecting the entire system.
only two letters away from being an asset
|
|
|
|
|
|
Hello
There is a workaround the problem, even though it will be a diviation of the standards of windows programming - for example you can show your mainmenu at the bottom of your form, but is that right?
Anyway.. Handle the Paint event of your button and use e.Graphics object in the handler to draw the line at the appropriate coordinates.
Regards
|
|
|
|
|
Hi,
I am trying to change my form background image onClick from a button. I have this so far but it doesn't seem to be working and I can't workout how to do it!
this.BackgroundImage = (System.Drawing.Image.FromFile("theme\red.png"));
Can anyone point me in the correct direction?
Many Thanks,
Al
|
|
|
|
|
The \ character is an escape key; the string will take \r to mean a return character code. To specify a string with an actual \, you need to either use a double-slash or the @ symbol:
this.BackgroundImage = Image.FromFile("theme\\red.png");
or
this.BackgroundImage = Image.FromFile(@"theme\red.png");
|
|
|
|
|
|
Just to let you know, here is a list of escape sequences you might want to use/avoid.
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Is there a way for me to convert my existing C# files to have .designer.cs files? I am working on a very large project and this would be a very useful change to our project. Are there any articles explaining how to do this by hand if there is no automatic converter?
|
|
|
|
|
I've never seen one myself, unfortunately. You *could* write something that would do this: basically create a new file on disk in the same folder as the original file, scan that file for the Dispose and InitializeComponent methods, then move them to the designer file. Shouldn't be too difficult.
|
|
|
|
|
I'm drawing text using TextOut and when I required text to be vertical I needed to use LogFont to set the orientation. Hovever when texting it on the origional function I made everytime it draws it, its slightly different and reall messed up. Like it will be much bigger and italic and striked outdespite the LOGFONT object saying otherwise.
Here's an image of what it looks like: http://www.draders.com/images/CreateFontIndirect.jpg[^]
The function is:
public static void DrawString(Graphics g, string s, Font Font, Color ForeColour, int x, int y) {<br />
IntPtr hdc = g.GetHdc();<br />
LOGFONT LF = new LOGFONT();<br />
Font.ToLogFont(LF);<br />
<br />
IntPtr fntNew = CreateFontIndirect(ref LF);<br />
IntPtr fntOld = SelectObject(hdc, fntNew);<br />
<br />
SetTextColor(hdc, RGB(ForeColour));<br />
SetBkMode(hdc, BackgroundMode.TRANSPARENT);<br />
TextOut(hdc, x, y, s, System.Text.Encoding.Default.GetByteCount(s));<br />
SelectObject(hdc, fntOld);<br />
DeleteObject(fntNew);<br />
g.ReleaseHdc(hdc);<br />
}
The logfont produced (using the default forms font) is:
LOGFONT
lfHeight: -11
lfWidth: 0
lfEscapement: 0
lfOrientation: 0
lfWeight: FW_NORMAL
lfItalic: 0
lfUnderline: 0
lfStrikeOut: 0
lfCharSet: SHIFTJIS_CHARSET
lfOutPrecision: OUT_DEFAULT_PRECIS
lfClipPrecision: CLIP_DEFAULT_PRECIS
lfQuality: DEFAULT_QUALITY
lfPitchAndFamily: FF_DONTCARE
lfFaceName: Microsoft Sans Serif
I noticed the height was negative and all examples I've seen set it to a positive value, so I tried setting it to 11 before calling CreateFontIndirect and that caused it to not draw at all.
The LOGFONT object and CreateFontIndirect function I used are:
[DllImport("gdi32")]<br />
internal static extern IntPtr CreateFontIndirect([In, MarshalAs(UnmanagedType.LPStruct)] ref LOGFONT lplf);<br />
<br />
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]<br />
internal class LOGFONT {<br />
public int lfHeight;<br />
public int lfWidth;<br />
public int lfEscapement;<br />
public int lfOrientation;<br />
public FontWeight lfWeight;<br />
public byte lfItalic;<br />
public byte lfUnderline;<br />
public byte lfStrikeOut;<br />
public FontCharSet lfCharSet;<br />
public FontPrecision lfOutPrecision;<br />
public FontClipPrecision lfClipPrecision;<br />
public FontQuality lfQuality;<br />
public FontPitchAndFamily lfPitchAndFamily;<br />
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]<br />
public string lfFaceName;<br />
}
Any help or ideas on what I'm doing wrong would be great!
|
|
|
|
|
Hi
i want to add User interface Wizard in my application
How it is possible
Please tell the sipmlest solution
Parshant
|
|
|
|
|
There are no wizard controls built into the System.Windows.Forms UI toolkit, however, there are several free ones, such as this one[^], available for download.
|
|
|
|
|
Can anyone help me to add an image in crystal report? I write in C#. In my access database, I store the path of the image , not the real image. The real image is in another directory.
Thank you very much.
|
|
|
|
|
|
See here[^] and here[^]maybe it is some helpful to you
|
|
|
|
|
My application uses a 3rd party component to do serial comms. As part of the initialisation routines of this component it generates an exception.
If I am debugging then this exception takes ages to be caught. The release version takes no time at all.
Why does the first exception take so long, and is there anything I can do about it?
|
|
|
|