高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】vectorize A Dwg Into Floating Point World-coordinates
vectorize a dwg into floating point world-coordinates
vectorize a dwg into floating point world-coordinates
we want to implement our own viewer in a very simple manner. i think that in dwgdirect may exist some sort of a a low level line-drawing function which performs the whole drawing of the complete dxf/dwg-file. circles, polylines even texts are broken down into line segments and are transfered to a low-level line-drawing function. and this is just the point we want to put our fingers in. instead of the visualiziation of the drawing, we just want the world x,y,z-coordinates, the color and style of this low-level primitve line, to save this information in our own format and do our own output.
the reason why we want this is very simple. we have to manage very large dxf/dwg-files of over 20mbytes. the output, zoom and pan operations should be very fast. up to now we use for this an old toolkit which is not so mighty as dwgdirect. we would like to use dwgdirect in the future, but it is essential for us, to get the world-coordinates of line-primitves.
an other question: is there a documentation for the dwgdirect libraries? the dwgdirect.chm contains the class hierarchy, but no description of the functions, like odvref.
thank you (and sorry for my poor english).
one way to do this is to generate the opengl display lists once using the dwgdirect and then to use the glfeedbackbuffer and other functions to receive the generated image exploded to lines and simple triangle polygons. but this is not travial task anyway. one big problem is that you cannot define in advance the size of the buffer the opengl will need and you should determine it either heuristically or by more than one passes.
hope this helps a little.
chudomir
best regards
chudomir
hi chudomir,
thank you for your answer. it sounds rather complicated. is there no better way? how does the viewer dwgdirect work internally? there must be a function which is used to draw the splitted entities (circles, texts, ...) in a window. if this function would be exported together with the world coordinates - that would be what i need.
martin
if you want to develop absolutely "your own" viewer you can implement your rendering device which will get geometry as drawing primitives. the only primitive you need to implement is simplepolyline(). but if you want to get filled geometry simplepolygon() should be implemented too - else you will get closed polylines instead of filled polygons. you can implement other drawing primitives if you want to get arcs or text instead of polylines but it's optional.
in odv client callback functions recieve 2d geometry (lines and polygons). in dwgdirect you get 3d geometry and the set of primitives is much wider (gigeometry.h)
currently there are some sample device implementations in dd: opengl device, wingdi device and dwf export.
at this point opengl and wingdi devices have no any optimizations to speed up redraws but it's subject to change.
currently ac2004 support is the most urgent issue but the following things are planned:
-improvement of redraw speed using graphic caches and spatial indexing
-entity selection (by point and rectangle).
sergey slezkin
|