高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】how can i create dxfdwg output from odgesurface - deriv
how can i create dxf/dwg output from odgesurface - derived o
how can i create dxf/dwg output from odgesurface - derived objects?
i am working just a few days with directdwg - library. i need to create some geometrical surfaces like cone, torus etc. with specified parameters. i found out that there are odgesurface - objects, which can be used to create the geometry. but i cannot find any method for creating a dxf/dwg output from such objects. the question is, how can i add the created odgesurface - objects to oddbdatabase in order to write it out to a dxf/dwg file?
thanks a lot,
paul
hi,
at first, odge* objects are from geometry library (mathematics and ect.). oddb* objects are from database.
i.e. odgeelliparc3d is from geometry library and oddbarc is database object.
you should create oddbarc object, add it to database and save database to dxf file.
for additional information look at examples (like writeex).
hi alexander,
first of all thanks for the answer. by the way, i was born and had been living in st'petersburg for 25 years!
may be you can help me better, if i briefly discribe you that i have to do:
i've to create create some geometic surfaces like sphere, torus, cylinder etc. with my own angles, bounding parameters and so on. i use for that purpose odge-objects with extended constructors, such as odgesphere(double radius, const odgepoint3d& center,const odgevector3d& northaxis, const odgevector3d& refaxis, double startangleu, double endangleu, double startanglev, double endanglev). this seems to work fine.
the next step is to add created odge-surface to the database, but how?
my idea was to write it out to the dxf/dwg file not as extended object, but as some kind of standard acad-object (or set of such objects).
because of that, i was looking for a serialiser for odge-surface objects and found out, that there are some static methods in od?ge?file?io class like void odgefileio:utfields(odgefiler*, const odgesphere&,
const odgelibversion& = odge::glibversion). i was trying to use them for serialising, but i could not find the right way to do it, and, in addition, these methods could not be found by linker.
unfortunally, i could not find any database objects belonging to ge-surface objects (like torus, cylinder etc. ).
if i create my own extended object (like in writeex) it works, but in this case directdwg create a proxy object in dxf-file and if opening this file with acad i get the message about missing application ... sometimes acad crashes even, if i do some operations like zooming! free dwg viewer can't open this dxf file at all and crashes with the message "pure virtual function call".
i hope you can help me.
thanks a lot,
paul
well,
try to use oddb3dsolid object and
virtual void createbox(double xlen, double ylen, double zlen);
virtual void createfrustum(double height, double xradius,
double yradius, double topxradius);
virtual void createsphere(double radius);
virtual void createtorus(double majorradius, double minorradius);
virtual void createwedge(double xlen, double ylen, double zlen);
but it are limited funtionality. autocad uses acdbsolid3d object for sphere, torus ... ddt has oddb3dsolid. ddt know how to draw oddb3dsolid and can create simple objects like full sphere, full torus ... but ddt has not functionality to create piece of sphere.
look at excustobjs sample too. another way is using of oddbline, oddbarc, oddbcircle objects to sphere simulation (like wire mode in autocad).
|