Question

I would like to parse AutoCAD's MText entity and extract the raw text. I see a pattern in the way the text is formatted. If this has already been solved, then I would not need to reinvent the wheel. I have searched online, but have not found sufficient information.

I am searching for any links or references on this subject.

Edit:

To further clarify, we are using the ODA (Open Design Aliance) libraries to access the DWG files. I am not familiar with this library. Another developer is using the library and extracting information from the files including MText entities. I am then provided with a file containing the MText text, which is what I am looking at. I am looking at the MText formatted text, which I have access to and am working with in C#.

Questions:

  1. I asked the other developer if the ODA library provided a means to extract the raw text unformatted. His response was that it could, however that it would also result in the entity getting written back to the DWG file. I am interested in the raw text without affecting the original DWG file. Does ODA provide a way of extracting the raw text without altering the file?
  2. I am interested in any documentation on the formatting rules of MText, so that I can consider writing a parser myself if necessary.
  3. Is there anything out there to convert MText to RTF? I realize that RTF would not completely satisfy all formatting rules, but this could provide a satisfactory means of displaying the formatted text in a WinForms app. Given RTF I could also obtain the raw text.
Was it helpful?

Solution

This Forum thread includes a VB program to strip the control characters from the MText. The code indicates what should be done to strip each control character, so it should be straightforward to write something similar in C#.

Additionally, the documentation of the format codes is available in the AutoCAD documentation.

OTHER TIPS

If you are using C# and the .NET interface, the Text property of the MText object provides the raw text:

MText mt;
...
string rawText = mt.Text;

If you want the formatting as well, the solution is different.

If you are parsing an AutoCAD file without AutoCAD, you need to specify what file type you are parsing. However, this question is basically a subset of the following questions:

For DWG, the basic options are Open Design Alliance and AutoCAD RealDWG.

If this doesn't help, please provide more details as to exactly what you are trying to do.

If you are using C#, give the netDXF library a try.

I thought pseudo code should be like this:

DxfDocument dxf = new DxfDocument();
dxf = DxfDocument.Load(openFileDialog1.FileName);//load your file
//This extracts the raw text of your first text obj
dxf.MTexts[0].PlainText;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top