天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 11|回复: 0

自定义浏览DWG控件的实现方法, 有时间研究一下(AcGsView使用)

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
[code]自定义浏览DWG控件的实现方法ARX


总是需要在自定义控件上显示DWG图形,如在一个对话框上动态浏览一个DWG图形,于是写了一个控件,专门用来动态浏览DWG,这个控件从CStatic中派生,运用AcGs类库中的AcGsView,AcGsDevice,AcGsModel来协作显示DWG图形。

从CStatic派生,使用方便,只要在对话框中放一个CStatic,然后把CStatic的对象名换成fcGsPreviewCtrl即可。

fcGsPreviewCtrl.h

/* *******************************************************************
日 期: 2007/10/08
文件 名: fcgspreviewctrl.h
作 者: Racky Ye
单 位:
描 述: 用来预览DWG图形的控件
******************************************************************** */
#ifndef _FC_GS_PREVIEW_CTRL_H__
#define  _FC_GS_PREVIEW_CTRL_H__

#if  _MSC_VER > 1000
#pragma  once
#endif   //  _MSC_VER > 1000

#include  " acgi.h "
#include  < math.h >
#include  " gs.h "
#include  " acgs.h "
#include  " acgsmanager.h "


//  用来预览DWG图形的控件
class  fcGsPreviewCtrl :  public  CStatic
{
public :
fcGsPreviewCtrl();
virtual   ~ fcGsPreviewCtrl();

public :
// 函数功能:传入dwg文件即可预览
BOOL Init(LPCTSTR szDwgFile);
// 函数功能:传入数据库指针即可预览数据库中的实体
BOOL Init(AcDbDatabase  * pDb);
//  缩放到整个图纸可见
void  ZoomE();

void  Clear();

protected :
void  InitGS(HINSTANCE hRes);  //  初始化图形系统
BOOL InitInner(AcDbDatabase  * pDb);  //  内部初始化
bool  GetActiveViewPortInfo (ads_real  & height, ads_real  & width, AcGePoint3d  & target,
AcGeVector3d  & viewDir, ads_real  & viewTwist,  bool  getViewCenter);
// 获得块中的所有实体
void  GetAllEnt( const  AcDbObjectId &  idBlockRec, AcDbObjectIdArray &  IDArray);
// 获得实体的范围
Acad::ErrorStatus GetEntExtents( const  AcDbObjectId &  idEnt, AcDbExtents &  extents);
void  GetEntExtents( const  AcDbObjectIdArray &  aridEnt, AcDbExtents &  extents);
void  Mid( const  AcGePoint3d &  pt1,  const  AcGePoint3d &  pt2, AcGePoint3d &  ptMid);
protected :
// {{AFX_MSG(fcGsPreviewCtrl)
afx_msg  void  OnPaint();
afx_msg  void  OnSize(UINT nType,  int  cx,  int  cy);
afx_msg BOOL OnMouseWheel(UINT nFlags,  short  zDelta, CPoint pt);
afx_msg  void  OnLButtonDown(UINT nFlags, CPoint point);
afx_msg  void  OnMButtonDown(UINT nFlags, CPoint point);
afx_msg  void  OnMButtonUp(UINT nFlags, CPoint point);
afx_msg  void  OnMouseMove(UINT nFlags, CPoint point);
afx_msg UINT OnNcHitTest(CPoint point);
afx_msg  void  OnSetFocus(CWnd *  pOldWnd);
afx_msg  void  OnLButtonUp(UINT nFlags, CPoint point);
// }}AFX_MSG

DECLARE_MESSAGE_MAP()

private :
AcDbExtents m_extents;  //  图纸范围
HCURSOR m_hPanCursor;  //  移动时的图标
HCURSOR m_hCrossCursor;  //  十字图标
HCURSOR m_hOrbitCursor;  //  旋转图标
AcGsView  * m_pView;  //  图形系统中的视图,用来绘制图形的区域
AcGsDevice  * m_pDevice;  //  图形系统中的设备,
AcGsModel  * m_pModel;

bool  m_bPanning;  //  是否处于移动图形状态
bool  m_bOrbiting;  //  是否处于旋转图形状态
AcDbDatabase *  m_pDb;  //  该预览空间绑定的数据库
CPoint m_StartPt;  //  移动或旋转时的起点

};

/// //

// {{AFX_INSERT_LOCATION}}
//  Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif   //  !defined(_FC_GS_PREVIEW_CTRL_H__)

CPP文件:

/* *******************************************************************
日 期: 2007/10/08
文件 名: fcgspreviewctrl.cpp
作 者: Racky Ye
单 位:
描 述: 用来预览DWG图形的控件
******************************************************************** */

#include  " StdAfx.h "
#include  " resource.h "
#include  " fcGsPreviewCtrl.h "

#include  " dbents.h "


#ifdef _DEBUG
#define  new DEBUG_NEW
#undef  THIS_FILE
static   char  THIS_FILE[]  =  __FILE__;
#endif

fcGsPreviewCtrl::fcGsPreviewCtrl()
{
m_hPanCursor  =  NULL;  //  移动时的图标
m_hCrossCursor  =  NULL;  //  十字图标
m_hOrbitCursor  =  NULL;  //  旋转图标
m_pView  =  NULL;  //  图形系统中的视图,用来绘制图形的区域
m_pDevice  =  NULL;  //  图形系统中的设备,
m_pModel  =  NULL;

m_bPanning  =   false ;  //  是否处于移动图形状态
m_bOrbiting  =   false ;  //  是否处于旋转图形状态
m_pDb  =  NULL;  //  该预览空间绑定的数据库
}

fcGsPreviewCtrl:: ~ fcGsPreviewCtrl()
{
Clear();
}


BEGIN_MESSAGE_MAP(fcGsPreviewCtrl, CStatic)
// {{AFX_MSG_MAP(fcGsPreviewCtrl)
ON_WM_PAINT()
ON_WM_SIZE()
ON_WM_MOUSEWHEEL()
ON_WM_LBUTTONDOWN()
ON_WM_MBUTTONDOWN()
ON_WM_MBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_NCHITTEST()
ON_WM_SETFOCUS()
ON_WM_LBUTTONUP()
// }}AFX_MSG_MAP
END_MESSAGE_MAP()

/// //
//  fcGsPreviewCtrl message handlers

void  fcGsPreviewCtrl::OnPaint()
{
CPaintDC dc( this );
// 刷新图形系统视图
if  (m_pView)
{
m_pView -> invalidate();
m_pView -> update();
}
}

void  fcGsPreviewCtrl::OnSize(UINT nType,  int  cx,  int  cy)
{
CRect rect;
if  (m_pDevice)
{
GetClientRect( & rect);
m_pDevice -> onSize(rect.Width(), rect.Height());
}
}

BOOL fcGsPreviewCtrl::OnMouseWheel(UINT nFlags,  short  zDelta, CPoint pt)
{
if  (m_pView)
{
if  (zDelta  <   0 )
m_pView -> zoom( 0.5 );
else
m_pView -> zoom( 1.5 );

Invalidate();
}
return  TRUE;
}

void  fcGsPreviewCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
SetFocus();
// 设置光标样式
m_bOrbiting  =   true ;
SetCapture();

::SetClassLong(m_hWnd, GCL_HCURSOR, NULL);
::SetCursor(m_hOrbitCursor);

m_StartPt  =  point;
}

void  fcGsPreviewCtrl::OnMButtonDown(UINT nFlags, CPoint point)
{
// 开始移动
m_bPanning  =   true ;
SetCapture();

::SetClassLong(m_hWnd,GCL_HCURSOR,NULL);
::SetCursor(m_hPanCursor);

m_StartPt  =  point;

}

void  fcGsPreviewCtrl::OnMButtonUp(UINT nFlags, CPoint point)
{
ReleaseCapture();
m_bPanning  =   false ;
::SetClassLong(m_hWnd,GCL_HCURSOR,( long )m_hCrossCursor);
}

// 函数功能:鼠标滚轮放大缩小视图
void  fcGsPreviewCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
if  (m_pView)
{
if  (m_bPanning)
{
// 完成从设备坐标系统到世界坐标系统的转换
AcGeVector3d pan_vec( - (point.x - m_StartPt.x),point.y - m_StartPt.y, 0 );
pan_vec.transformBy(m_pView -> viewingMatrix()  *  m_pView -> worldToDeviceMatrix().inverse());
m_pView -> dolly(pan_vec);
Invalidate();
m_StartPt  =  point;
}
else   if  (m_bOrbiting)
{
const   double  Half_Pi  =   1.570796326795 ;

AcGsDCRect view_rect;
m_pView -> getViewport (view_rect);

int  nViewportX  =  (view_rect.m_max.x  -  view_rect.m_min.x)  +   1 ;
int  nViewportY  =  (view_rect.m_max.y  -  view_rect.m_min.y)  +   1 ;

int  centerX  =   int (nViewportX  /   2.0f )  +  view_rect.m_min.x;
int  centerY  =   int (nViewportY  /   2.0f )  +  view_rect.m_min.y;

const   double  radius  =  min (nViewportX, nViewportY)  *   0.4f ;

//  从最后和新的鼠标位置计算出两个矢量
AcGeVector3d last_vector ((m_StartPt.x  -  centerX)  /  radius,
- (m_StartPt.y  -  centerY)  /  radius,
0.0 );

if  (last_vector.lengthSqrd ()  >   1.0 )  //  超出半径范围
last_vector.normalize ();
else
last_vector.z  =  sqrt ( 1.0   -  last_vector.x  *  last_vector.x  -  last_vector.y  *  last_vector.y);

AcGeVector3d new_vector((point.x  -  centerX)  /  radius,
- (point.y  -  centerY)  /  radius,
0.0 );

if  (new_vector.lengthSqrd ()  >   1.0 )  //  超出半径范围
new_vector.normalize ();
else
new_vector.z  =  sqrt ( 1.0   -  new_vector.x  *  new_vector.x  -  new_vector.y  *  new_vector.y);

//  确定相机操作的角度
AcGeVector3d rotation_vector (last_vector);
rotation_vector  =  rotation_vector.crossProduct (new_vector);  //  rotation_vector = last_vector x new_vector

AcGeVector3d work_vector (rotation_vector);
work_vector.z  =   0.0f ;  //  rotation_vector到xy平面的投影

double  roll_angle  =  atan2 (work_vector.x, work_vector.y);  //  假设相机的向上矢量是朝上的

//  计算向上的矢量和工作矢量的夹角
double  length  =  rotation_vector.length ();
double  orbit_y_angle  =  (length  !=   0.0 )  ?  acos (rotation_vector.z  /  length)  +  Half_Pi : Half_Pi;  //  represents inverse cosine of the dot product of the
if  (length  >   1.0f )
length  =   1.0f ;

double  rotation_angle  =  asin (length);

//  view操作
m_pView -> roll( roll_angle);
m_pView -> orbit(  0.0f , orbit_y_angle);
m_pView -> orbit( rotation_angle,  0.0f );
m_pView -> orbit(  0.0f ,  - orbit_y_angle);
m_pView -> roll( - roll_angle);
Invalidate();
m_StartPt  =  point;
}
else
{
::SetClassLong(m_hWnd,GCL_HCURSOR,( long )m_hCrossCursor);
SetFocus();
}
}

}

UINT fcGsPreviewCtrl::OnNcHitTest(CPoint point)
{
return  HTCLIENT;
}


void  fcGsPreviewCtrl::OnSetFocus(CWnd *  pOldWnd)
{
::SetClassLong(m_hWnd, GCL_HCURSOR, ( long )m_hCrossCursor);

}

void  fcGsPreviewCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bOrbiting  =   false ;
::SetClassLong(m_hWnd,GCL_HCURSOR,( long )m_hCrossCursor);
ReleaseCapture();
}


void  fcGsPreviewCtrl::Clear()
{
AcGsManager  * pGsManager  =  acgsGetGsManager();
RXASSERT(pGsManager);
if  (m_pView)
{
m_pView -> eraseAll();
if  (m_pDevice)
{
bool  b  =  m_pDevice -> erase(m_pView);
RXASSERT(b);
}

AcGsClassFactory  * pFactory  =  pGsManager -> getGSClassFactory();
RXASSERT(pFactory);
pFactory -> deleteView(m_pView);
m_pView  =  NULL;
}

if  (m_pModel)
{
pGsManager -> destroyAutoCADModel(m_pModel);
m_pModel  =  NULL;
}

if  (m_pDevice)
{
pGsManager -> destroyAutoCADDevice(m_pDevice);
m_pDevice  =  NULL;
}


if  (m_pDb)
{
delete m_pDb;
m_pDb  =  NULL;
}

}

// 函数功能:传入dwg文件即可预览
BOOL fcGsPreviewCtrl::Init(LPCTSTR szDwgFile)
{
Clear();

m_pDb  =   new  AcDbDatabase( false , true );

Acad::ErrorStatus es  =  m_pDb -> readDwgFile(szDwgFile);

if  (es  !=  Acad::eOk)
{
delete m_pDb;
m_pDb  =  NULL;
}

return  InitInner(m_pDb);
}


// 函数功能:传入数据库指针即可预览数据库中的实体
BOOL fcGsPreviewCtrl::Init(AcDbDatabase  * pDb)
{
Clear();

return  InitInner(pDb);
}


// 函数功能:获得当前视口的信息。
// 输出参数:height 视口高度,width 视口宽度,target 视口中心点,viewDir 视口的观察向量,twist 扭曲的视口
bool  fcGsPreviewCtrl::GetActiveViewPortInfo (ads_real  & height, ads_real  & width,
AcGePoint3d  & target, AcGeVector3d  & viewDir,
ads_real  & viewTwist,  bool  getViewCenter)
{
AcDbDatabase  * pDb  =  acdbHostApplicationServices() -> workingDatabase();

if  (pDb  ==  NULL)
return   false ;

AcDbViewportTable  * pVTable  =  NULL;
Acad::ErrorStatus es  =  pDb -> getViewportTable (pVTable, AcDb::kForRead);

if  (es  ==  Acad::eOk)
{
AcDbViewportTableRecord  * pViewPortRec  =  NULL;
es  =  pVTable -> getAt ( " *Active " , pViewPortRec, AcDb::kForRead);
if  (es  ==  Acad::eOk)
{
height  =  pViewPortRec -> height ();
width  =  pViewPortRec -> width ();

if  (getViewCenter  ==   true )
{
struct  resbuf rb;
memset ( & rb,  0 ,  sizeof  ( struct  resbuf));
acedGetVar ( " VIEWCTR " ,  & rb);

target  =  AcGePoint3d (rb.resval.rpoint[X], rb.resval.rpoint[Y], rb.resval.rpoint[Z]);
}
else
{

target  =  pViewPortRec -> target ();
}

viewDir  =  pViewPortRec -> viewDirection ();

viewTwist  =  pViewPortRec -> viewTwist ();
}
pVTable -> close ();
pViewPortRec -> close();
}

return  ( true );
}

// 函数功能:初始化图形系统
void  fcGsPreviewCtrl::InitGS(HINSTANCE hRes)
{
//  加载光标
if  (m_hPanCursor  ==  NULL)
m_hPanCursor  =  LoadCursor(hRes,MAKEINTRESOURCE(IDI_PAN));
if  (m_hCrossCursor  ==  NULL)
m_hCrossCursor  =  LoadCursor(hRes,MAKEINTRESOURCE(IDI_CROSS));
if  (m_hOrbitCursor  ==  NULL)
m_hOrbitCursor  =  LoadCursor(hRes,MAKEINTRESOURCE(IDI_ORBIT));
::SetClassLong(m_hWnd,GCL_HCURSOR,NULL);

//  初始化视图

//  获得图形系统管理器
AcGsManager  * pGsManager  =  acgsGetGsManager();
RXASSERT(pGsManager);
//  获得图形系统类工厂
AcGsClassFactory  * pFactory  =  pGsManager -> getGSClassFactory();
RXASSERT(pFactory);

//  创建图形系统设备
m_pDevice  =  pGsManager -> createAutoCADDevice(m_hWnd);
RXASSERT(m_pDevice);

CRect rect;
GetClientRect( & rect);

m_pDevice -> onSize(rect.Width(), rect.Height());
//  创建图形系统视图
m_pView  =  pFactory -> createView();
RXASSERT(m_pView);

m_pModel  =  pGsManager -> createAutoCADModel();
RXASSERT(m_pModel);

m_pDevice -> add(m_pView);

double  height  =   0.0 , width  =   0.0 , viewTwist  =   0.0 ;
AcGePoint3d ptTargetView;
AcGeVector3d vecViewDir;
GetActiveViewPortInfo (height, width, ptTargetView, vecViewDir, viewTwist,  true );

m_pView -> setView(ptTargetView  +  vecViewDir, ptTargetView,
AcGeVector3d( 0.0 ,  1.0 ,  0.0 ),  1.0 ,  1.0 );

}

BOOL fcGsPreviewCtrl::InitInner(AcDbDatabase  * pDb)
{
if  (pDb  ==  NULL)
{
m_pDb  =   new  AcDbDatabase( true ,  true );
}
else
{
m_pDb  =  pDb;
}

if  (m_pDb  ==  NULL)
return  FALSE;

Acad::ErrorStatus es  =  Acad::eOk;
AcDbBlockTableRecord  * pRec  =  NULL;
AcDbBlockTable  * pTab  =  NULL;
if  ((es  =  m_pDb -> getBlockTable(pTab, AcDb::kForRead)) != Acad::eOk)
return  FALSE;

if  ((es  =  pTab -> getAt(ACDB_MODEL_SPACE,pRec,AcDb::kForRead)) != Acad::eOk)
{
pTab -> close();
return  FALSE;
}
pTab -> close();

AcDbObjectId idRec  =  pRec -> id();
AcDbObjectIdArray aridEnt;
GetAllEnt(idRec, aridEnt);

GetEntExtents(aridEnt, m_extents);

InitGS(_hdllInstance);

m_pView -> add(pRec, m_pModel);

pRec -> close();
ZoomE();

return  TRUE;
}

//  缩放到整个图纸可见
void  fcGsPreviewCtrl::ZoomE()
{
AcGePoint3d ptTargetView;
Mid(m_extents.maxPoint(), m_extents.minPoint(), ptTargetView);

double  dLenght  =  m_extents.maxPoint().x  -  m_extents.minPoint().x;
double  dWidth  =  m_extents.maxPoint().y  -  m_extents.minPoint().y;

m_pView -> setView(ptTargetView  +  AcGeVector3d::kZAxis,ptTargetView,AcGeVector3d::kYAxis,dLenght * 1.05 ,dWidth * 1.05 );
OnPaint();
}

void  fcGsPreviewCtrl::Mid( const  AcGePoint3d &  pt1,  const  AcGePoint3d &  pt2, AcGePoint3d &  ptMid)
{
ptMid.x  =   0.5   * (pt1.x  +  pt2.x);
ptMid.y  =   0.5   * (pt1.y  +  pt2.y);
ptMid.z  =   0.5   * (pt1.z  +  pt2.z);
}

// 函数功能:获得块中的所有实体
void  fcGsPreviewCtrl::GetAllEnt( const  AcDbObjectId &  idBlockRec, AcDbObjectIdArray &  IDArray)
{
IDArray.setPhysicalLength( 0 );

Acad::ErrorStatus es;

AcDbBlockTableRecord  * pBlkRec  =  NULL;
if  (Acad::eOk  !=  (es  =  acdbOpenObject(pBlkRec,idBlockRec,AcDb::kForRead)))
{
return ;
}

AcDbBlockTableRecordIterator  * pIt  =  NULL;
pBlkRec -> newIterator(pIt);
pBlkRec -> close();

for  (pIt -> start();  ! pIt -> done(); pIt -> step())
{
AcDbObjectId idEnt;
if  (Acad::eOk  ==  pIt -> getEntityId(idEnt))
{
IDArray.append(idEnt);
}
}
delete pIt;
pIt  =  NULL;
}

// 函数功能:获得实体的范围
Acad::ErrorStatus fcGsPreviewCtrl::GetEntExtents( const  AcDbObjectId &  idEnt, AcDbExtents &  extents)
{
Acad::ErrorStatus es;
AcDbEntity  * pEnt  =  NULL;
if  (Acad::eOk  ==  acdbOpenObject(pEnt, idEnt, AcDb::kForRead))
{
AcDbBlockReference  * pBlkRef  =  AcDbBlockReference::cast(pEnt);
if  (pBlkRef)
{
es  =  pBlkRef -> geomExtentsBestFit(extents);
}
else
{
es  =  pEnt -> getGeomExtents(extents);
}
pEnt -> close();
}

return  (es);
}


void  fcGsPreviewCtrl::GetEntExtents( const  AcDbObjectIdArray &  aridEnt, AcDbExtents &  extents)
{
for  ( int  i  =   0 ; i < aridEnt.length();i ++ )
{
AcDbExtents tem;
if  (GetEntExtents(aridEnt[i], tem)  ==  Acad::eOk)
{
extents.addExt(tem);
}
}
}[/code]

 

 

 

 

自定义浏览DWG控件的实现方法, 有时间研究一下(AcGsView使用)

该用户从未签到

主题

0

回帖

0

积分

管理员

积分
0
发表于 2024-7-28 09:28:43 | 显示全部楼层
  法拉利膜材作为一种高性能的建筑材料,在建筑、汽车及广告等多个领域有着广泛的应用。以下是对法拉利膜材型号、特点及优点的详细分析:
[img]http://www.mjgou.com/data/attachment/forum/202403/13/223041uiqmeujen4jjj6zv.jpg[/img]
[b]一、法拉利膜材型号[/b]
法拉利膜材有多种型号,包括但不限于以下几种:1302 S2 Flexlight Advanced:这是一种高性能IV型柔性复合膜材,以其卓越的透光性、耐久性和易维护性而受到青睐。942、1202 S2、1002 S2、902 S2、1212 S2、912 S2:这些型号同样属于法拉利膜材系列,各自具有不同的特性和适用范围,但具体特点需根据具体型号进一步分析。需要注意的是,法拉利膜材的型号可能随着产品更新换代而有所变化,具体型号及其特性请参考最新产品资料。
[img=860,1255]http://www.mjgou.com/data/attachment/forum/202403/13/223254bbblwlbvbvsbwlsl.jpg[/img]
[b]二、法拉利膜材特点[/b]
法拉利膜材的特点主要体现在以下几个方面:
1、高强度与耐用性:法拉利膜材采用高强度材料制成,具有良好的抗拉强度和撕裂强度,能够承受较大的外力作用而不易破损。耐用性强,能够在恶劣气候条件下保持稳定的性能,延长使用寿命。
2、透光性与美观性:部分型号如1302 S2 Flexlight Advanced具有高透光性,能够在保持室内光线充足的同时,提供清晰的视野。膜材表面平整光滑,色彩丰富多样,能够满足不同建筑和装饰需求,提升整体美观性。
3、轻质与灵活性:法拉利膜材重量较轻,便于运输和安装,能够降低施工成本和时间。膜材具有一定的柔韧性,能够适应各种复杂形状和结构的设计要求。
4、环保与可回收性:法拉利膜材符合环保要求,部分材料可回收利用,减少了对环境的影响。
[img]http://www.mjgou.com/data/attachment/forum/202403/13/223128owhn0099rrds5h5y.jpg[/img]
[b]三、法拉利膜材优点[/b]
法拉利膜材的优点主要体现在以下几个方面:
1、提升建筑性能:高强度与耐用性使得法拉利膜材能够提升建筑的稳定性和安全性,延长使用寿命。透光性与美观性使得建筑内部光线充足、视野开阔,同时提升整体美观度。
2、降低施工成本:轻质特性使得运输和安装成本降低,施工效率提高。膜材的柔韧性使得施工更加灵活多变,能够适应各种复杂地形和结构要求。
3、节能环保:部分材料可回收利用,符合环保要求,减少了对环境的影响。良好的透光性能够减少室内照明需求,降低能耗。
4、广泛应用领域:
法拉利膜材不仅适用于建筑领域(如体育设施、商业设施、文化设施、交通设施等),还广泛应用于汽车及广告领域(如高档车辆贴膜保护和装饰、广告招贴等),展现出其多功能的特性。

综上所述,法拉利膜材以其高强度、耐用性、透光性、美观性、轻质灵活性以及环保可回收性等优点,在建筑、汽车及广告等多个领域发挥着重要作用。具体型号的选择应根据实际需求和应用场景进行综合考虑。
[url=http://www.mjgou.com/forum-17-1.html][size=92169][color=Red]法拉利膜材中国代理商 - 膜结构网[/color][/size][/url]
自定义浏览DWG控件的实现方法, 有时间研究一下(AcGsView使用)

该用户从未签到

主题

0

回帖

29

积分

新手上路

积分
29
发表于 2024-8-6 10:42:43 | 显示全部楼层
希运膜材,作为比利时希运工业集团(Sioen Industries)的核心产品之一,在涂层织物领域享有很高的声誉。以下是对希运膜材的详细分析:
[b]一、公司背景与实力[/b]
希运工业集团是比利时涂层织物专业的生产商,拥有超过20个分厂,主要经营范围包括涂层、服装和化工三个部分。集团在全球拥有约4000多名优秀员工,通过不断融会贯通和改革创新,不仅拥有世界最精湛的生产技艺,还开发出了许多尖端的涂层产品。其原材料自产化,确保了产品质量的一贯性和最佳状况,使希运产品在全球市场中占据领先地位。
[b]二、产品特点[/b]
高强度与柔韧性:希运膜材是一种由聚酯、聚酰胺、聚乙烯等多种材料复合而成的高分子材料,具有高强度和优异的柔韧性。这种特性使得膜材能够形成复杂的曲面造型,满足各种建筑设计需求。
耐久性与防火性:希运膜材具有耐久性强的特点,能够抵抗紫外线、化学腐蚀等外部环境的侵蚀,延长使用寿命。同时,其防火等级通常为B1级,属于难燃材料,提高了建筑的安全性。
自洁性:部分希运膜材表面经过特殊处理,具有良好的自洁性能。雨水在其表面聚成水珠流下,自然清洗膜材表面,减少清洁成本。
光学性能:希运膜材对自然光的透射率较高,同时能够滤除大部分紫外线,防止内部物品褪色。透射光在结构内部产生均匀的漫射光,无阴影、无眩光,具有良好的显色性。
保温与隔热性能:希运膜材具有优异的保温和隔热性能,能够调节建筑内部温度,提高能源利用效率。
环保性:希运膜材注重环保性能,部分产品可回收再利用,符合现代绿色建筑的发展趋势。
[b]三、应用领域[/b]
希运膜材的应用领域非常广泛,主要包括以下几个方面:
建筑领域:希运膜材被广泛用于膜结构建筑、帐篷、遮阳篷等场合。其轻质、高强度的特性使得膜结构建筑更加经济、美观且实用。
广告与运输领域:希运膜材在广告牌、车厢顶盖、集装箱顶盖等场合也有应用。其耐久性和自洁性使得广告画面更加持久鲜艳,同时降低维护成本。
休闲与安全领域:希运膜材还用于充气玩具、游泳池、防护材料、工业用布等休闲和安全领域。其柔韧性好、耐磨损的特点使得产品更加安全可靠。
[b]四、技术创新与发展[/b]
希运工业集团一直致力于技术创新和产品研发,不断推出适应市场需求的新产品。其涂层技术精湛,产品质量上乘,得到了国内外用户的广泛认可。同时,希运还注重环保和可持续发展,积极推广绿色建筑材料和技术。
[b]五、总结[/b]
希运膜材作为一种高性能的涂层织物材料,在多个领域展现出卓越的性能和广泛的应用价值。其高强度、柔韧性、耐久性、自洁性等特点使得产品更加符合现代建筑和工业应用的需求。随着技术的不断进步和市场的不断发展,希运膜材的应用前景将更加广阔。

 

 

 

 

自定义浏览DWG控件的实现方法, 有时间研究一下(AcGsView使用)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 09:27 , Processed in 0.163607 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表