源程序没有,建议倒有一条:目前尚不知你的CAD图形格式,也不知平均大小和增长速度,因而可能与需求有出入。一般情况下,CAD图形存储在数据库中不是可行的方案,可以采用文件系统和数据库结合的办法,即数据库中仅存储CAD文件的位置,真正的图形文件则存储在NT/2000下分布文件系统中。如果CAD文件仅仅是ACAD的,可以直接使用Autodesk公司的whip(一套ActiveX控件)。文件的上传和同步可以利用Delphi的WinSocket控件编写。

解决方案 »

  1.   

    把图形存到BLOB字段里,速度还可以。我存过。
      

  2.   

    对使用blob存储。用TblobField的ReadFromStream,SaveToStream方法下面是一段BCB的例子。
    Hank(星星农场) (2000-12-18 19:13:00)  得0分 
    读:
    TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
    TBlobStream * pmem=new TBlobStream(pField,bmRead);
    pmem->Seek(0,soFromBeginning);
    Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
    pBitmap->LoadFromStream(pmem);
    Image1->Picture->Assign(pBitmap);
    delete pBitmap;
    delete pmem;
    写:
    TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
    TBlobStream * pmem=new TBlobStream(pField,bmWrite);
    pmem->Seek(0,soFromBeginning);
    Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
    pBitmap->Assign(Image1->Picture->Graphic);
    pBitmap->SaveToStream(pmem);
    delete pBitmap;
    delete pmem; 
      

  3.   

        我还是不赞成使用BLOB来存储CAD图形数据,在数量较大的情况下,效率极差。我曾经开发过PDM系统,对这方面深有体会,另外,几乎没有采用BLOB来存储大量CAD图形的成功先例。注意,量的多少与增长的速度对是否采用BLOB有很大的影响。CAD图形达到100~200MB并不少见,特别是三维工具的模型。假设要保存的数量为20000张(中型制造企业),平均大小为2M,则可是40G的容量,用BLOB来存储其效率如何,不言自明。同时还带来更多问题,因为图纸版本比较多,则有可能数据量更大。
      

  4.   

    老吴子大师:
         我现在也在做一个PDM系统,打算用delphi做,就是没办法解决CAD图纸的存储
    与显示问题,能给个很好的建议吗?你有OICQ吗?我的OICQ是:35628594,真心真诚
    地期待你的指点,