几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   DirectDWG (http://www.dimcax.com/hust/forumdisplay.php?f=89)
-   -   【转帖】oddbmlinestylesetname and invalid input exceptions (http://www.dimcax.com/hust/showthread.php?t=17555)

yang686526 2009-05-06 07:53 PM

【转帖】oddbmlinestylesetname and invalid input exceptions
 
oddbmlinestyle::setname and invalid input exceptions
oddbmlinestyle::setname and invalid input exceptions
using version 2.1.1 .net 2003
i've found that strings either containing space or with a length over 31 chars will raise an 'invalid input' exception in oddbmlinestyle::setname.
but nowhere can i find this behaviour documented nor any information about what the valid range for setname is.
the dxf 2007 documentation for mlinestyle states that:
"the 2 group codes in mline entities and mlinestyle objects are redundant fields. these groups should not be modified under any circumstances, although it is safe to read them and use their values."
does that mean it's safe to create new oddbmlinestyle objects without setting the name member?
or is dxf group code 2 only redundant in certain versions of the dxf/dwg file format and thus still needed?
the rules for naming multiline styles are autocad's not dd restrictions. btw, they are not described in ac docs too but create multiline style dialog in autocad does not allow spaces in name or more than 32 characters. this is strange because other named objects do not have such restrictions in latest ac versions.
new mstyle objects must have names.
"redundant" and "should not be modified" - this is about entget - entmod functions which work with dxf-like resbuf. not about dxf/dwg file.
this means that group code 2 data can be read/used in resbuf chain obtained from entget(). but it can't be modified before passing the data back to entmod().
sergey slezkin
i've found that autocad and dwgdirect will limit user input to 31 chars and prevent the use of a large set of characters among them space.
but the problem is that drawings from customers might contain mlinestyle names that violate these rules.
i've got no idea how they can end up with drawings with style names that violate this limit as i can't find any way of causing this inside autocad. but even with these errors the drawing works just fine both in autocad and dwgdirect.
not a real problem but this means i can't create a drawing with the same data as the input drawing.
i've only seen one drawing with this problem, so i'm not going to be loosing any sleep over this. just a little curious about the real limits.
one of the offending style names is 'plan 120061004modified$0$standar' 32 chars and containing a space so it has two errors making it an invalid name. right now i can read the name and use the style but i can't create one like it.
quote:
but even with these errors the drawing works just fine both in autocad and dwgdirect.
have you tried all possible operations in autocad and objectarx? it's very strong statement that it works fine...
i don't know what problem may happen (during dragging a mline object referencing such style from one drawing to another or during lisp executing) but it's more safe to not create an object which can't be created in autocad.
sergey slezkin

that's entirely true, and creating names known to be invalid is a bad idea.
but the quality of data in dwg drawings vary a lot. they frequently contain data that can't be constructed through the autocad ui but rather must have been created by extensions/customisation inside autocad or external sources.
so i find the limitations in the autocad ui a rather unreliable guide as to what the true limits are. that's why i came here looking in for help on this issue in the first place.
i don't want the possibility to create possibly invalid data just confirmation that this is invalid data. and i think that's quite clear now, thanks.


所有的时间均为北京时间。 现在的时间是 07:13 AM.