void FX_DWF_2D_Generator::getUnits( const WT_Object *obj ) { WT_Units units = *(WT_Units *) obj; const WT_Matrix mat16 = units.application_to_dwf_transform(); m_transformMatDWF = new double[16]; memcpy( m_transformMatDWF, mat16.elements(), sizeof( double ) * 16 ); WT_String str = units.units(); if( str.is_ascii() ) { m_unitType = str.ascii(); } // Set scalar for each axises. if( m_transformMatDWF[0] != 0.0f ) m_xScalar = m_transformMatDWF[0]; if( m_transformMatDWF[5] != 0.0f ) m_yScalar = m_transformMatDWF[5]; } void FX_DWF_2D_Generator::getView( const WT_Object *obj ) { WT_View *viewObj = (WT_View *) obj; WT_Logical_Box viewBox = viewObj->view(); m_viewHeight = viewBox.maxpt().m_y - viewBox.minpt().m_y; m_viewWidth = viewBox.maxpt().m_x - viewBox.minpt().m_x; m_DWF2DView_NLB.x = -m_viewWidth / 2; m_DWF2DView_NLB.y = -m_viewHeight / 2; m_DWF2DView_FRU.x = m_viewWidth / 2; m_DWF2DView_FRU.y = m_viewHeight / 2; m_viewTranslateX = viewBox.minpt().m_x + m_viewWidth / 2; m_viewTranslateY = viewBox.minpt().m_y + m_viewHeight / 2; } void FX_DWF_2D_Generator::generatePolyLine( const WT_Object *obj ) { WT_Polyline *polylineObj = (WT_Polyline *) obj; WT_Logical_Point* points = polylineObj->points(); int count = polylineObj->count(); VM_POINT_3D polyPoint; boost::shared_ptr currentDrawing( boost::make_shared< FX_DWF_Polyline >() ); // Set element type in order to specify drawing method. currentDrawing->m_elemType = FX_Polyline; currentDrawing->m_weight = m_lineWeight; for( int i=0; im_pointList.push_back( polyPoint ); } // Set a specified color to this new object. setObjectColor( currentDrawing ); // Put the new object into drawing stack. insertNewObject( currentDrawing ); }