nx0105 发表于 2005-4-4 10:18:00

关于cad图形存储为图形文件求救

<BLOCKQUOTE>
哪位大哥能不能帮小弟解决一下这个问题啊


是这样我想用arx编程实现在cad里将当前图形另外生成一个象bmp,tiff这样的文件(这个文件我另外有用的),我知道每个dwg和dxf文件都保存有该文件在cad中的最后一个图形位图,但怎样调用它去保存并自动生成一个bmp那样的文件呢?真伤脑筋啊

</BLOCKQUOTE>

huiming635 发表于 2005-4-4 10:47:00

[原创]

这位朋友你好!


                       其实这是一个很简单得问题!只要在命令行里面输入export即可,AutoCAD即可跳出对话框,想把AutoCAD图形用什么图形格式输出,就可以用什么图形输出!


                       呵呵!

nx0105 发表于 2005-4-4 13:14:00

这个我是知道的,但这要客户自己操作,我想要的是在后台自动处理生成bmp等图形文件,这些文件还要被用来编程插入到另外的一种文件当中

pandoram 发表于 2005-4-4 17:38:00

直接用ARX送个bmpout命令过去..bmpout是众多export命令的一种.


今天把自己手上一个大bug解决了, 很高兴, 多写几个代码吧..


void your_command()<BR>{<BR>       CString szCommand;<BR>       CString szFName = "your_file_name_and_path"; // 输出.bmp文件路径+全名


       szCommand.Format("filedia 0\n");<BR>       acDocManager-&gt;sendStringToExecute(<BR>                       acDocManager-&gt;mdiActiveDocument(), szCommand);<BR>// FILEDIA系统变量设0, 指定不显示文件对话框, 因为CAD默认此变量为1, bmpout命令会跳出file save as对话框


// 也可以acedSetVar配合resbuf达到同样效果, 但是偶比较懒..


       szCommand.Format(("bmpout %s\nall \n", szFName);<BR>       acDocManager-&gt;sendStringToExecute(<BR>                       acDocManager-&gt;mdiActiveDocument(), szCommand);<BR>// 第一个\n代表输入要存为的文件名后必须按回车, 因为文件名允许空格<BR>// 后面的all是bmpout的一个参数, 正常命令下输入文件名后CAD等待用户选择要输出到图像文件的实体, 用all表示全选.


       szCommand.Format("filedia 1\n");<BR>       acDocManager-&gt;sendStringToExecute(<BR>                       acDocManager-&gt;mdiActiveDocument(), szCommand);<BR>// 把FILEDIA变量回复为系统默认值<BR>}


当然, 如果你用一个szCommand把所有的命令都连起来一口气发过去也是没有问题的..


(...虽然老是用ARX叫CAD命令是不好的习惯, 但sendStringToExecute()果然还是界面类的无敌指令啊..)


两个潜在问题:


1. 如果要输出的文件名已存在, 那么CAD会问要不要覆盖文件, 送过去的指令就不匹配了. 可以在输出之前检查文件是否已存在..


2. bmp输出默认只输出当前窗口内可见的图, 就是说如果当前窗口只看到全图纸的一部分, 就只能输出这一部分到bmp. 如果需要全图纸输出, 要在执行bmpout前执行zoom all. (难道CAD bmpout是借用print screen的..哈)

nx0105 发表于 2005-4-4 18:17:00

小弟不胜感谢


这位大哥我还想问一下cad里还有一个指令saveimg它是将当前图形经过渲染再保存保存成bmp、tiff等图形文件,如果调用那个指令是不是就可以避免你说的第二种情况了呢?但不知道经cad渲染过的图与原来相比有什么变化呢?

nx0105 发表于 2005-4-4 18:29:00

还有对于第一个问题有哪位大哥知道怎么解决吗?假如我知道有一个同名文件在那里,该怎么发送指令使它覆盖呢?

pandoram 发表于 2005-4-5 09:28:00

...倒, saveimg是不是直接输出整个图纸你自己到CAD上去试一下不就得了..


       


...可惜它不是..你还是要手动定义输出窗口大小..


saveimg是专门给3D渲染图用的输出指令, 对2D图没有特殊效果, 初始化慢, 而且对话框输入隐藏运行很麻烦...(还是干脆就不能后台运行, 这个不是很清楚..)


同名文件..在指令中间多发一个y表示同意覆盖..bmpout %s\ny all \n

nx0105 发表于 2005-4-5 13:29:00




呵呵,小弟是菜鸟,先谢谢了,有什么问题再来问,希望各位大哥不吝指教

freejustin 发表于 2005-4-11 15:55:00

收到       <A name=20547><FONT color=#000066><B>pandoram</B></FONT></A>        大侠的帮助。谢谢!

pzhang 发表于 2005-4-11 17:31:00

本帖最后由 作者 于 2005-4-11 21:01:38 编辑

太感谢pandoram啦!



这个问题我都愁了快一星期了!
页: [1] 2
查看完整版本: 关于cad图形存储为图形文件求救