欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    显示DWG文件缩略图的三种方法.doc

    • 资源ID:2390262       资源大小:394KB        全文页数:4页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    显示DWG文件缩略图的三种方法.doc

    显示 D W G 文件缩略图的三种方法白桂梅 ,张丽娟(洛阳大学 ,河南 洛阳 471023)摘 要 : Windows2000 以后的版本对于有些图形文件提供直接预览功能 , 而对有的图形文件则不提供 , AutoCAD 的. DW G文件就是其中之一 ,如果想预览必须安装第三方提供的插件 。文中所介绍的是三种编程实现. DW G 文件的预览方法 ,尤其 是方法三 ,其运行环境完全独立 ,不借助于任何第三方控件 ,可适用于任何语言编写的 Windows 程序 ,并且读取速度很快 。 关键词 :缩略图 ;控件 ; . DW G 文件 ;位图文件中图分类号 : TP311152文献标识码 :A文章编号 :1005 - 3751 ( 2003) 09 - 0074 - 04Three Methods of Displaying. D W G Files Thumbna ilBA I Gui2mei , ZHAN G Li2juan(L uoyang U niversity ,L uoyang 471023 ,China)Abstract :The later versio n af ter Windows2000 directly offers t he f unctio n of p reviewing so me t ypes of drawing files , but do not hing of t he ot hers. Auto CADs. DW G file is o ne of t he ot hers. In o rder to p review t he file , so me t hird sof t ware is needed. Three p rogrammingmet ho ds of p reviewing. DW G file are int ro duced in t his paper . Particularly t he t hird is co mpletely independent in it s running enviro nment . And no ot her t hird co nt rol is needed. Mo reover any Windows p rogram wit h sho rter running time can realize t his met ho d.Key words :t humbnail ;co nt rol ; . DW G File ; . BM P File在使用 Windows 操作系统时 , 经常要用到文件的查询和检索 ,2000 以后的版本对有些图形文件提供直接预 览功能 ,能够实现详细浏览和缩略图格式的随时切换 ,如此就能根据图形的大概轮廓直接找到想要的文件 。但是对于有些图形文件 Windows 本身不提供直接的预览 , 如 果想预 览 必 须 安 装 第 三 方 提 供 的 插 件 , 如 : CDR 文 件 ( CorelDRAW 文 件 格 式) 需 安 装 CorelDRAW 软 件 Win2 dows 才 能 预 览 , D GN 文 件 必 须 安 装 Micro Station 。然 而 DW G 文件 ( AutoCAD) 文 件 格 式 较 为 特 殊 , 即 使 安 装 过 AutoCAD (2002 之 前 版 本) , Windows 仍 然 无 法 预 览 。而 AutoCAD ( R14 以后版本) 在自己定制的打开文件对话框 中已经带有文件的缩略图预览功能 ,那么能否用编程实现 缩略图预览呢 ? 回答是肯定的 。下面以 Visual C + + 为例编程实现缩略图的预览 。(1) 新建一个工程 ,命名为 DwgView ;(2) 切换到对话框编辑状态 ,单击右键菜单 ,使用 In2 sert ActiveX Cont rol ,选中 AutoCAD dwg Thumbnail Con2 t rol ,点击 O K(如图 1 所示) ;图 1 添加控件(3) 把此控件的控制变量命名为 m- ct rlDwgView ; (4) 添加一个按钮用于显示缩略图文件 ;(5) DwgViewDlg. h 源程序如下 : ( 非加黑部分为系统 缺省添加)# include“Dwg Thumbnail . h”/ / CDwgViewDlg dialogclass CDwgViewDlg : p ublic CDialo g/ / Const ruction1方 法 一 使 用 D wgThumbna il . ocx 控 件 读 取文件缩略图安装 过 AutoCAD2002 后 在 系 统 目 录 下 生 成 一 个Dwg Thumbnail . ocx 文件 ,使用 ActiveX 技术添加控件到工 程中1 ,具体步骤如下 :收稿日期 :2003 - 05 - 31作者简介 :白桂梅 ( 1964 ) ,女 ,山西孝义人 ,硕士 ,讲师 ,研究方向为 计算机软件工程 。2 方法二 使用 ObjectA RX新建一个 ObjectARX 工程 ( AutoDesk 厂商提供 CAD开发包2 ,可到 www . autocad. co m 网站上下载) , 添加一 个对话框3 ,在对话框上添加一个静态控件命名为 CStat2 ic m- ct rlDwgView ,步骤如下 :添加对话框 On Paint 事件 ,修改代码为 :void CDwgViewDlg : :On Paint ( )CPaintDC dc ( t his) ;/ / device context for painting m - ct rlDwgView . Enable Window ( TRU E) ;CSt ring st r FileName = - T (“E : 00670 . dwg”) ;if ( ! acdbDisplayPreview Fro mDw g ( st r FileName , m - ct rlD2wgView . m - h Wnd) )m - ct rlDwgView . Enable Window ( FAL SE) ;编译生成 DwgViewDlg. arx 程序 , 启动对话框 , 加 载 程序运行 。p ublic :CDwgViewDlg ( CWnd 3const ructor/ / Dialog DataNULL ) ; / /p Parent=standard/ / AFX - DA TA ( CDwgViewDlg)enum IDD = IDD - DW GV I EW - DIAL O G ; CDwg Thumbnail m - ct rlDwgView ;/ / AFX - DA TA/ / ClassWizard generated virt ual f unction overrides/ / AFX - V IR TUAL ( CDwgViewDlg)protected :virt ual void DoData Exchan ge ( CData Exchange 3DDX/ DDV support/ / AFX - V IR TUAL/ / Implementation protected :HICON m - h Icon ;/ / Generated messa ge map f unctions/ / AFX - MS G( CDwgViewDlg)virt ual BOOL On InitDialo g ( ) ;pDX) ; / /af x - msg void OnSysCo mmand ( U IN T n ID ,L PARAMl Param) ;af x - msg void On Paint ( ) ;af x - msg HCU RSOR OnQuer yDrag Icon ( ) ;af x - msg void OnBut ton Test ( ) ;/ / AFX - MS GD ECL AR E - M ESSA GE - MAP ( ) ;DwgViewDlg. cpp 源程序如下 : (非加黑部分为系统缺省添 加)3方法三 二进制方式打开 DWG 文件定位读取 BMP 缩略图信息此方法利用 DW G 文件本身已经存储缩略图信息这 一特性 ,以二进制方式打开 DW G 文件 , 定位文件位置直接读取缩略图信息 。缩略图在 DW G 文件中的存储结构 信息如表 1 所示 ,设 DW G 文件的起始偏移量为 0 ,则在第表 1 缩略图在 DW G 文件中的存储结构信息voidCDwgViewDlg : :OnBut tonSet FileName ( )/ / 让控件显示 E : 00670 . dw g 文件缩略图m - ct rlDwgView . SetDwgFileName (“E : 00670 . dwg”) ;13 字节处是一个长整型的指针 ,指向预览图片特征字段( sentinel) 的开始位置 ,特征字段的长度为 16 字节 ,在特征 字段之后 ,是一个 4 字节的长整数 ,它说明的是除特征字 段之外整个预览图片数据的长度 ,其后是说明预览图片数 量的一个单字节整数 ,在 DW G 文件中可以选择不保存预 览图片 ,保存 BM P 和/ 或 WM F 格式的预览图片 ,这一情 况就由预览图片数量字节表示 , 根据预览图片数量的不 同 ,后面是一至三组数据描述块 ,每一块由 9 个字节组成 , 第一个字节是图片的类型 ,25 字节是图片的实际位置 ,69 字节是图片的大小 ,图片类型字节可以取值 1 , 2 或3 。取值为 1 时说明是图形的描述内容 ,它的长度至少需 要有 80 字节 ,即使实际使用的部分不足 80 字节 ,系统也 会为他保留 80 字节 。当取值为 2 时说明是 BM P 图片 ,在 DW G 文件中保存的 BM P 图片可是任何满足 BM P 规范(6) 编译程序运行 ,点击按钮 ,界面如图 2 所示 。图 2 运行结果thumbnail sentinel - 16 bytessize of thumbnail data - 4 bytesnumber of thumbnail objects - 1 bytearray of thumbnail object descriptors(0 thru n - 1)type of object - 1byteoff set of object f rom start of dwg - 4 bytessize of object - 4 bytesthumbnail data for objects 0 thru n - 1inverse thumbnail sentinel的图像文件数据 , 但是不保存 B I TMA PF IL EHEAD ER 数据 。Auot CAD 系统保存的 BM P 图像数据是 256 色图像 数据并使用 B I - RL E8 格式压缩 。图片类型字节取值为 3 时说明是 WM F 文件 ,它带有 22 字节长的 Aldus 文件头 。 在数据描述块的后面是所有既存的预览图片数据 ,随后跟 随的是 16 字节按位取反的特征字节 。B I TMA PF IL EHEAD ER 是由 Windows 系统规定的数据类型 ,它的长度为 14 字节 ,具体定义是 :Type B I TMAPF IL EHEAD ERbf Type As Integer bf Size As Longbf Reserved1 As Inte gerbf Reserved2 As Ingeger bf OffBit s As LongEnd Type在 DW G 文件中 , 预览图片的特征字段长度为 16 字 节 ,它的内容为 :OX1 F ,OX25 ,OX6D ,OX07 ,OXD4 ,OX36 , OX28 , OX28 , OX9D , OX57 , OXCA , OX3 F , OX9D , OX44 ,OX10 ,OX2B程序的头文件包括 :constDwgSentinel = 0x01 F , 0x25 , 0x6D , 0x07 , 0xD4 , B YT E 0x36 ,0x28 , 0x28 , 0x9D , 0x57 , 0xCA , 0x3 F , 0x9D , 0x44 , 0x10 , 0x2B ,0x0 ;const int iDwg ThumbnailOff set = 13 ;st ruct SDwg Headerchar Sentinel 16 ; unsigned long Size ; char Num ; ;st ruct S Thumbnail Infochar Type ;unsigned long Off set ;unsigned long Size ; ;实现文件包括 :BOOL CDwgViewDlg : : ReadDwgFile ( CSt ring st r ReadFileName , CSt ring st r Save FileName)/ / dwg file infor mation/ / pDib - > Empt y ( ) ;B I TMAPF IL EHEAD ER bmp Header ; SDwg Header Dwg Header ;S Thumbnail Info Thumbnail Info ;long off set ; CFile file ;bool FindSi gn = false ;if ( file . Open ( st r ReadFileName , CFile : : modeRead | CFile : :shareDenyNone) )if ( file . GetLengt h ( ) < ( unsigned int ) ( iDwg Thumb2nailOff set ) )file . Close ( ) ;ret urn false ;file . Seek (iDwg ThumbnailOff set ,CFile : : be gin) ;file . Read ( ( void 3 ) &off set ,sizeof (off set ) ) ;if ( unsigned long ( off set ) > = unsigned long ( file . GetLengt h ( ) ) )file . Close ( ) ;ret urn FAL SE ;file . Seek (off set ,CFile : : be gin) ; CSt ring st rbuf ;file . Read ( st rbuf . GetBuffer ( 17) ,16) ;if ( memcmp ( st rbuf , (char 3 ) DwgSentinel ,16) = = 0)file . Seek (off set ,CFile : : be gin) ;file . Read ( ( void 3 ) &Dwg Header ,21) ;for (int i = 0 ;i < Dwg Header . Num ;i + + )char t ype ;file . Seek ( off set + 21 + ( i 3 9 ) , CFile : : be2gin) ;file . Read ( ( void 3 ) &t ype ,1) ;if ( t ype = = 2)Thumbnail Info . Type = t ype ;file . Read ( ( void 3 ) & Thumbnail Info . Off 2set ,4) ;file . Read ( ( void 3 ) & Thumbnail Info . Size ,4) ;FindSign = t rue ;if ( FindSign)if ( Thumbnail Info . Type = = 2)H GL OBAL glob = ( H GL OBAL ) : : GlobalAlloc ( GM EM - MOV EABL E | GM EM - ZERO IN I T , Thumbnail Info . Size) ;if ( glob = = 0)ret urn false ;file . Close ( ) ;memfile . Seek ToBe gin ( ) ;memfile . Close ( ) ;L PS TR pDIB = ( L PS TR) : : GlobalLock ( ( H GL OBAL )glob) ;/ 3 Go and read t he bit s 3 /file . Seek ( Thumbnail Info . Off set ,CFile : : be gin) ;if (file . Read ( pDIB , Thumbnail Info . Size ) ! = Thumbnail2Info . Size): : Global Unlock ( ( H GL OBAL ) glob) ;: : Global Free ( ( H GL OBAL ) glob) ;glob = NULL ;ret urn false ;bmp Header . bf Type = ( ( WORD) (M < < 8) | B) ;ret urn t rue ;file . Close ( ) ;ret urn FindSi gn ;4结束语以上三种方法的特点是 : 方法一借助 AutoDesk 公司 提供的控件 ,安全稳定 ,但是程序运行必须先安装此控件 ,而且不能直接读位图结构到内存中 ,使用起来不灵活 ; 对 方法二 ,程序必须借助 AutoCAD 运行 ,不能应用于其他可执行程序 ;方法三完全独立 ,不借助于任何第三方控件 ,可bmp Header . bf Size = Thumbnail Info . Size(B I TMAPF IL EHEAD ER) ;bmp Header . bf Reserved1 = 0 ;bmp Header . bf Reserved2 = 0 ;+sizeofbmp Header . bf OffBit s = sizeof (B I TMAPF IL EHEAD ER) ;CFile memfile ;if ( ! memfile . Open ( st r Save FileName , CFile : : modeCreate| CFile : : modeReadWrite) ): : Global Unlock ( ( H GL OBAL ) glob) ;: : Global Free ( glob) ;file . Close ( ) ;ret urn false ;memfile . Write ( &bmp Header , sizeof ( B I TMAPF IL E2HEAD ER) ) ;memfile . Write (pDIB , Thumbnail Info . Size) ;: : Global Unlock ( ( H GL OBAL ) glob) ;: : Global Free ( glob) ;适用于任何语言编写的 Windows 程序 ,并且读取速度快 。对于方法三中至关重要的 DW G 文件存储结构信息 ,是笔者作为 www . autocad. co m 网站的 ADN 会员 ,从该网站对 会员 开 放 的 相 关 资 料 中 获 得 的 。以 上 程 序 均 在 Win2dows2000 ,Visual C + + 6 . 0 下调试通过 。参考文献 :朱战立 1 面向对象程序设计与 C + + 语言M 1 西安 : 西安电子科技大学出版社 ,2002 . 227 - 235 .余 承 飞 , 方勇 1AutoCAD 二 次 开 发 技 术 ( Object ARX) M 1 北京 :人民邮电出版社 ,1999 . 5 - 14 .刘路放 1Visual C + + 与面向对 象 程 序 设 计 教 程 M 1 北 京 :高等教育出版社 ,2000 . 150 - 163 .123(上接第 73 页)从图 2 可以看出 ,L RU - L FU 管理策略的访问命中 率明显高于 L RU 管理策略的访问命中率 ,而且更接近于 L FU 管理策略的访问命中率 。起来 。参考文献 :1Tanenbaum A S , Woodhull A S. OP ERA TIN G S YS T EMS :Design and Implementation 2nd Ed M . 北京 : 清华大学出 版社 ,2001 .陈莉君. Linux 操作系统内核分析M . 北京 : 人民邮电出 版社 ,2000 .J eon H S , No h S H. Dynamic Buffer Cache Mana gement Scheme based on Si mple and Aggressive PrefetchingR . At 2 lanta , U SA : U SEN IX ,2000 .Huilie ,Duchamp D. An Anl ytical Approach to File Prefetchin gR . Anahei m CA , U SA : U SEN IX , 1997 .Cao Pei , Felten E W. Implementation and Perfor mance of In2 tegrated Application - Cont rolled File Cachin g , Prefetching , and Disk SchedulingJ . ACM Transactions on Co m p uter Sys2tems ,1996 , 14 ( 4) :311 - 343 .4结论综合执行效率和访问命中率两个因素 ,执行效率介于 L RU 管理策略和 L FU 管理策略之间的 L RU - L FU 管理 策略 ,凭 借 其 较 为 理 想 的 访 问 命 中 率 可 以 有 效 地 提 高M IN IX2 . 0 文件系统文件属性信息的访问效率 ,从而对整个 M IN IX2 . 0 文件系统性能的提高做出了一定的贡献 。 但是 与 L RU 管 理 策 略 和 L FU 管 理 策 略 一 样 , L RU -L FU 管理策略也是一种与应用无关的管理策略 , 因此即 使再调大 N R - INOD ES 值 , 其对访问命中率的提高也是有限的 。为取得更高的访问命中率 ,我们未来的工作将集 中于如何将 L RU - L FU 管理策略与实际的应用程序结合2345

    注意事项

    本文(显示DWG文件缩略图的三种方法.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开