高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】rendering Circle And Arcs 9dd 1.100
rendering circle and arcs (dd 1.10)
rendering circle and arcs (dd 1.10)
i'm facing some problems with the new rendering classes introduced in dd 1.10. i have a custom device and view class (derived from the new odgsbasevectorizexxxx classes) that take a drawing and convert it to dwg. just implementing polylineout and polygonout works fine, but i want to support rendering to other simple entities also (circles and arcs), to generate smaller files.
what i noticed is that circleproc () and circulararcprop () are not virtual in odgigeometrysimplifier class, so i cannot override them. also if i derive from odgiconveyour directly (instead odgigeometrysimplifier) i have to implement all other drawing functions (polygonproc, meshproc, etc...), because they all are pure-virtual. is there a way to suppport custom rendering just to the entity types that i want and delegate other entities to odgigeometrysimplifier?
what i need to custom render are just planar circle and arcs, maybe already transformed to view coordinates... (in dd 1.09 i overrided circle () function and checked the normal verctor to see if it was a planar circle/arc);
thanks,
tiago gehring
hi tiago,
please see odvectorizeex example. i hope you'll find all the answers there.
dmitry,
thanks for your reply, i looked in odvectorizeex example and it indeed gave me some answers, but it has the same problem: circleproc () and circulararcproc () get never called (to test i compiled this sample and passed a test file, that has many circles and arcs);
i don't know if the sample is wrong or if there's a bug in the libraries, any help appreciated.
thanks again
tiago
hi,
it's a bug. we'll fixed it asap.
for now you can use next code as a temporary fix:
code:
void yourgeomhandler::elliparcproc(const odgeelliparc3d& arc,
const odgepoint3d* pendpointsoverrides,
odgiarctype arctype,
const odgevector3d* pextrusion)
{
if(!pendpointsoverrides && arc.isclosed() && arc.iscircular())
{
yourgeomhandler::circleproc(arc.center(), arc.majorradius(), arc.normal(), pextrusion);
}
else
{
odgigeometrysimplifier::elliparcproc(arc, pendpointsoverrides, arctype, pextrusion);
}
}
ok, thanks a lot, i'll use the work around you suggested;
tiago
hi,
i have a question that is sort of related to the problem above. the odvectorizeexample suggests overriding two versions of elliparcproc - one that takes an arc and another that takes three points and two radiuses. the problem is that i cannot find the second one in any of the parent classes. what calls it then? or is it just a mistake?
thanks
arno歵
just to know, i think this problem (the fact that circleproc / circulararcproc are never called) was not solved in dd 1.10 update 1, right?
thanks,
tiago gehring
quote:
originally posted by arnost
hi,
i have a question that is sort of related to the problem above. the odvectorizeexample suggests overriding two versions of elliparcproc - one that takes an arc and another that takes three points and two radiuses. the problem is that i cannot find the second one in any of the parent classes. what calls it then? or is it just a mistake?
thanks
arno?t
hi!
now there is only this version of elliparcproc:
code:
virtual void elliparcproc(
const odgeelliparc3d& arc,
const odgepoint3d* pendpointsoverrides = 0,
odgiarctype arctype = kodgiarcsimple,
const odgevector3d* pextrusion = 0) = 0;
|