最近需要从做一个读取DWG文件中块属性值,但是不打开CAD,用代码修改块属性中某一个值,然后再保存,生成新的DWG文件,最后转换成JPG文件显示,DWGdirect能实现吗?请做过的朋友们指条路!

解决方案 »

  1.   

    不知道LZ是干什么用的,所以不好回答,猜想几种可能性吧。
    1. 不用AutoCad打开,可不可以用其它的软件打开?大部分制图软件都能打开DWG文件,如 CAXA, SolidWords等等,打开后,通过程序或手动修改块属性。
    2. 转换成DXF文件,这是文本文件,比较容易改。
    3. 如果是想做一个插件,在主人不知情时把他画的图改掉。在电脑主人不在的时候,加一段 AutoLisp 程序到acad.lsp中,把你想要的功能加上,你就可以修改和获取他人的图形了。(有点像病毒)
    4. 只是修改某些固定的属性:存两个不同的DWG文件,用二进制分析工具打开两个文件,看看什么地方不一样,然后做一个程序修改。(不很保险)
    5. 自己编一个程序,把AutoCad内嵌到你的程序,并且不显示,进行各种后台操作。不知道以上各项有没有你想要的,第5项好象好一些。另外,换成JPG文件不太好,又大质量也差,用gif和png比较好,又小,又无损。
      

  2.   

    我是做ASP.NET项目,客户只提供建筑楼栋的DWG文件,其中这个DWG的块都是统一的属性,只是值不同。我得从中取到这些属性值,每一个块的属性值都是一条数据存储到数据库中,和你说的第5种情况差不多。这个DWG文件是通过上传到服务器,我只需要读取服务器中的文件就行。能给点具体的提示吗?
      

  3.   

    大概明白了,目前的需求是从dwg文件的标题栏中读取信息,存到数据库中,便于统计和查询,应该是这个意思吧?推荐几种方法:
    1. 和用户商量一下,把DWG另存为DXF文件上传,这是一个文本文件,用正则表达式能取到属性值。
    2. 在服务器上装一套AutoCAD,从ASP.NET中引用AutoCAD插件就能对DWG文件操作了。3. 以上两种方法都是按你现在的需求设计的,但不是很规范,较好的方法是从AutoCAD直接输出一个BOM表到数据库或EXECL文件,BOM表是标准工程类文件明细输出接口。ASP.NET直接用就行了。好多年以前搞过AutoCAD开发,细节都想不起来了,推荐几个方法仅供参考,good luck.
      

  4.   

    谢谢!数据上其实都比较好说,就是我在修改后再显示出来,这一步怎么也不知道怎么去做,因为我对DWG文件的操作只是用代码提取其中的块属性值和明细表,将这些数据存储到数据库中,但是如果修改了块属性值,那么在显示DWG文件的那个页面也得显示的是修改后的DWG文件。于是就存在了一个提取数据和修改数据不同方法的矛盾,这里不知道怎么去弄了。4楼你说的方法,都是我正在尝试的方法,现在都卡在了怎样去获得块属性值的那个表,有没有这样例子的代码供我参考下呢!
      

  5.   

    楼主可以看看这个帖子http://zyrzhaoy.blog.163.com/blog/static/127824420200981372928647/
      

  6.   

    这个贴子网上的转载很多啊,我现在主要是因为英语不行,看英文版的帮助说明太费力了,而且是准备用DWGDirect插件来做,现在就是因为DWGDirect中的类库和方法不知道!所以不知道怎么进行了。
      

  7.   

    可以实现,对DWG文件支持很好,多看看下载的例子和文档。
      

  8.   


    哥们能给个Q么?我现在也要用DWGdirect。想跟你聊聊行不?