![]() |
【转帖】using Linetype Data With Opengl
using linetype data with opengl
using linetype data with opengl hello all, every polyline has some linetype, that should be applied to that line while displaying it. in odreadex sample project i am reading the linetype data from void dbdumper::dumplinetypes(oddbdatabase* pdb, int indent) the data for a specific dwg file looks like this (i have pasted the dumped data). i am displaying the autocad objects like polylines... hatch... etc... using opengl. my question is how can i use this data in opengl functions (like gllinestipple ..etc) pattern name ======= byblock precord->patternlength= 0.000000 precord->numdashes= 0 pattern name ======= bylayer precord->patternlength= 0.000000 precord->numdashes= 0 pattern name ======= continuous precord->patternlength= 0.000000 precord->numdashes= 0 pattern name ======= verdeckt precord->patternlength= 9.525000 precord->numdashes= 2 precord->dashlengthat(0)= 6.350000 precord->dashlengthat(1)= -3.175000 pattern name ======= strichpunkt precord->patternlength= 25.400000 precord->numdashes= 4 precord->dashlengthat(0)= 12.700000 precord->dashlengthat(1)= -6.350000 precord->dashlengthat(2)= 0.000000 precord->dashlengthat(3)= -6.350000 pattern name ======= acad_iso03w100 precord->patternlength= 30.000000 precord->numdashes= 2 precord->dashlengthat(0)= 12.000000 precord->dashlengthat(1)= -18.000000 pattern name ======= 1192 precord->patternlength= 0.000000 precord->numdashes= 0 pattern name ======= 1183 precord->patternlength= 3.000000 precord->numdashes= 2 precord->dashlengthat(0)= 2.000000 precord->dashlengthat(1)= -1.000000 pattern name ======= 1175 precord->patternlength= 3.000000 precord->numdashes= 2 precord->dashlengthat(0)= 2.000000 precord->dashlengthat(1)= -1.000000 pattern name ======= 1182 precord->patternlength= 0.000000 precord->numdashes= 0 pattern name ======= 1166 precord->patternlength= 3.000000 precord->numdashes= 2 precord->dashlengthat(0)= 2.000000 precord->dashlengthat(1)= -1.000000 pattern name ======= 1165 precord->patternlength= 0.000000 precord->numdashes= 0 pattern name ======= 1058 precord->patternlength= 0.000000 precord->numdashes= 0 pattern name ======= 8058 precord->patternlength= 0.000000 precord->numdashes= 0 pattern name ======= 2 precord->patternlength= 2.000000 precord->numdashes= 2 precord->dashlengthat(0)= 1.000000 precord->dashlengthat(1)= -1.000000 pattern name ======= verdeckt2 precord->patternlength= 4.762500 precord->numdashes= 2 precord->dashlengthat(0)= 3.175000 precord->dashlengthat(1)= -1.587500 pattern name ======= hidden precord->patternlength= 9.525000 precord->numdashes= 2 precord->dashlengthat(0)= 6.350000 precord->dashlengthat(1)= -3.175000 pattern name ======= hidden2 precord->patternlength= 4.762500 precord->numdashes= 2 precord->dashlengthat(0)= 3.175000 precord->dashlengthat(1)= -1.587500 pattern name ======= dashdot precord->patternlength= 25.400000 precord->numdashes= 4 precord->dashlengthat(0)= 12.700000 precord->dashlengthat(1)= -6.350000 precord->dashlengthat(2)= 0.000000 precord->dashlengthat(3)= -6.350000 pattern name ======= punkt precord->patternlength= 6.350000 precord->numdashes= 2 precord->dashlengthat(0)= 0.000000 precord->dashlengthat(1)= -6.350000 pattern name ======= hidden4 precord->patternlength= 2.381200 precord->numdashes= 2 precord->dashlengthat(0)= 1.587500 precord->dashlengthat(1)= -0.793700 hi, quote: my question is how can i use this data in opengl functions (like gllinestipple ..etc) i answer on this question in one of your previous posts sometime ago: quote: linetype can contain not only dots and dashes, but also shapes and text. of course, you can manually convert this array to needed form, but this convertion guarantees data lost on many linetypes. i think impossible to convert dd linetypes representation to opengl binary form. lengths of dashes cannot be correctly converted to 16bit mask and glint multiplication factor for gllinestipple() call. i think only simplest linetypes (dots, dash-dot and etc.) with integer values can be converted, but some of them will be inaccurate. |
所有的时间均为北京时间。 现在的时间是 06:44 PM. |