void DrawRect( AcGiWorldDraw* mode, const AcGePoint3d& insertPt, double angle, double width, double height, bool fill ) { AcGiSubEntityTraits& traits = mode->subEntityTraits(); AcGeVector3d v1( AcGeVector3d::kXAxis ), v2( AcGeVector3d::kXAxis ); v1.rotateBy( angle, AcGeVector3d::kZAxis ); v2.rotateBy( angle + PI / 2, AcGeVector3d::kZAxis ); AcGePoint3dArray pts; pts.append( CaclPt( insertPt, v1, width, v2, height ) ); v1.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( insertPt, v1, width, v2, height ) ); v2.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( insertPt, v1, width, v2, height ) ); v1.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( insertPt, v1, width, v2, height ) ); // 是否填充 AcGiFillType ft = traits.fillType(); traits.setFillType( fill ? kAcGiFillAlways : kAcGiFillNever ); mode->geometry().polygon( pts.length(), pts.asArrayPtr() ); traits.setFillType( ft ); }
void SimpleWallDraw::caclBackGroundMinPolygon( AcGePoint3dArray& pts ) { AcGeVector3d v1( AcGeVector3d::kXAxis ), v2( AcGeVector3d::kXAxis ); v1.rotateBy( m_angle, AcGeVector3d::kZAxis ); v2.rotateBy( m_angle + PI / 2, AcGeVector3d::kZAxis ); pts.append( CaclPt( m_insertPt, v1, m_width, v2, m_height ) ); v1.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( m_insertPt, v1, m_width, v2, m_height ) ); v2.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( m_insertPt, v1, m_width, v2, m_height ) ); v1.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( m_insertPt, v1, m_width, v2, m_height ) ); }
void BuildRect( const AcGePoint3d& pt, double angle, double width, double height, AcGePoint3dArray& pts ) { AcGeVector3d v1( AcGeVector3d::kXAxis ), v2( AcGeVector3d::kXAxis ); v1.rotateBy( angle, AcGeVector3d::kZAxis ); v2.rotateBy( angle + PI / 2, AcGeVector3d::kZAxis ); pts.append( CaclPt( pt, v1, width, v2, height ) ); v1.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( pt, v1, width, v2, height ) ); v2.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( pt, v1, width, v2, height ) ); v1.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( pt, v1, width, v2, height ) ); }
void SimpleDoubleGateDraw::caclBackGroundMinPolygon( AcGePoint3dArray& pts ) { AcGeVector3d v1( AcGeVector3d::kXAxis ), v2( AcGeVector3d::kXAxis ); v1.rotateBy( m_angle, AcGeVector3d::kZAxis ); v2.rotateBy( m_angle + PI / 2, AcGeVector3d::kZAxis ); double width = CaclWidth( m_radius, m_dTWidth ) + m_gap; pts.append( CaclPt( m_insertPt, v1, width, v2, m_length ) ); v1.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( m_insertPt, v1, width, v2, m_length ) ); v2.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( m_insertPt, v1, width, v2, m_length ) ); v1.rotateBy( PI, AcGeVector3d::kZAxis ); pts.append( CaclPt( m_insertPt, v1, width, v2, m_length ) ); }