查看单个帖子
旧 2009-05-06, 11:53 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】problems with dxf reader

problems with dxf reader
problems with dxf reader
hi all!
inspired from the sample program odreadex, i wrote a dxf reader. i took all the entities from the modelspace (i'm only interrested in that), then i apply worlddraw on each entity (given an instance of odgiworlddrawdumper as parameter which extends odgiworlddraw).
the dumper is associated to an instance of odgiworldgeometrydumper (extends odgiworldgeometry).
the implementations of odgiworldgeometrydumper calls a an instance of simplifier (which extends odgigeometrysimplifier) as much as possible. for exemple:
void odgiworldgeometrydumper::circle(...){ _simplifier->circleproc(...); }
odgiworlddrawdumper
the method odgiworldgeometrydumper:: draw(pdrawable) calls pdrawable->worlddraw(_worlddraw); where _worlddraw is the unique instance of odgiworldgeometrydumper.
i overloaded procpolygon and procpolyline in the simplifier to store the polygons.
results are shown in the file attached to this email (with 3d house sample). we see that the most obvious problem is that the roof of the house is displaced. i was thinking that it was because i did not implement pushmodeltransform and popmodeltransform. but even after implementing those (that is storing the matrix in a stack and multiplying my vertex by these matrix) it did not solve the problem. did i miss something?
also my second question is the following. for most entities in odgiworlddraw the correspongind entityproc is defined in odgigeometrysimplifier. but for some not. for example
* one of the definitions of: void odgiworlddraw::circulararc
* one of the definitions of: void odgiworlddraw::elliparc
* one of the definitions of: void odgiworlddraw::text
what shoud i do with those?
is it the right things of doing things?
thanks for any guidance.
cheers,
gregoire
ps:
to clarify my goal is to obtain a list of polygon/polyline from a dxf file. these data are used for scientific computation. therefore i am not a cad user and i possibly miss some concepts associated to this library. so please be indulgent!
attached images
hi,
1: it's definitely something wrong with pushmodeltransform()/popmodeltransform(), make sure that they are really called during vectorization and their implementations are correct.
2: all overloaded versions of odgiworlddraw::circulararc could be implemented to call single corresponding version odgigeometrysimplifier::circulararcproc(). the same for other primitives.
you'd better use odgibasevectorizer (or odgsbasevectorizedevice and odgsbasevectorizeview) as base implementation for your vectorizer. please, refer to odvectorizeex example for more details.
last edited by dmitry a. novikov; 22nd march 2007 at 04:54 amfff">.
hi!
thanks for the answer.
1. as you said this was related to the implementation of pushmodeltransform. this has been fixed by correcting the implementation of matrix multiplication (originally i used the method transformby of odgevector3d, with matrix xfm as parameter. replacing this by a manual matrix multiplication fixed the problem).
2. ok.
thanks again,
regards,
gregoire
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)