明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: mr0810

请教怎么用VBA实现在cad图纸中嵌入图片(不是附着,源文件删除也能正常显示的那种)

[复制链接]
 楼主| 发表于 2018-8-3 12:59 | 显示全部楼层
dong20030432 发表于 2018-8-3 09:54
QQ截图理论上也是放在剪切板上了吧?怎么跟你用程序实现会不一样呢?

从截图工具或PrtSC、Alt+PrtSC等方法得到的存储在粘贴板中的图片拷贝到cad中的确不会弹出对话框;
直接拷贝文件(选中文件,按Ctrl+c),再粘贴到cad中也不会弹出对话框,但文件大一点的话就会造成cad程序死掉,没有响应;
通过在画图中打开图片,全选,复制或把图片插入Excel或word等工具中再复制,然后再粘贴到cad中就会弹出对话框;
我搞不清楚这里面的机理是什么!
发表于 2018-8-3 14:27 | 显示全部楼层
也不知道这些软件之间交换数据是通过端口直接交换还是通过内存交换数据,不懂操作系统,也对软件后台工作机制不清楚,没办法帮你。
发表于 2018-8-3 14:32 | 显示全部楼层
本帖最后由 dong20030432 于 2018-8-3 14:33 编辑
mr0810 发表于 2018-8-3 12:59
从截图工具或PrtSC、Alt+PrtSC等方法得到的存储在粘贴板中的图片拷贝到cad中的确不会弹出对话框;
直接 ...

你查看一下用不同方法插入到CAD的图片到底是光栅图像还是OLE对象,确认下是否跟这个有关。我试了很多种方法,都没出现你说的对话框,不知道怎么回事。
 楼主| 发表于 2018-8-3 17:00 | 显示全部楼层
dong20030432 发表于 2018-8-3 14:32
你查看一下用不同方法插入到CAD的图片到底是光栅图像还是OLE对象,确认下是否跟这个有关。我试了很多种方 ...

用截图工具或PrtSC、Alt+PrtSC方法得到的图片,粘贴到cad后,源图片路径变了仍然可以显示;也不跳出对话框;
用windows 自带的画图软件中打开复制或从Excel或word等工具中复制的图片,粘贴到cad后,源图片路径变了仍然可以显示,但会跳出对话框;
直接拷贝文件(选中文件,按Ctrl+c)的方法虽然不显示对话框,但修改原图片路径,cad中就只显示路径文字了;这个应该是栅格文件,跟AddRaster方法插入的图片一样。

你用哪些方法插入,不显示对话框?
发表于 2018-8-3 17:12 | 显示全部楼层
mr0810 发表于 2018-8-3 17:00
用截图工具或PrtSC、Alt+PrtSC方法得到的图片,粘贴到cad后,源图片路径变了仍然可以显示;也不跳出对话 ...

1、直接拖入;2、从图片编辑软件复制粘贴(PS和画图);3.从word复制粘贴;4、全屏截图贴入
全部都没有对话框弹出。
 楼主| 发表于 2018-8-4 09:51 | 显示全部楼层
dong20030432 发表于 2018-8-3 17:12
1、直接拖入;2、从图片编辑软件复制粘贴(PS和画图);3.从word复制粘贴;4、全屏截图贴入
全部都没有 ...

我刚又试了:
1、直接拖入不显示对话框,源文件位置变了,只显示链接文字;
2、从编辑软件中复制,会显示对话框,源文件位置变化仍能正常显示;
3、从word中复制,会显示对话框,源文件位置变化仍能正常显示;
4、截图,不显示对话框,源文件位置变化仍能正常显示。
看来只有通过截图的办法来实现,问题是qq截图捕捉窗口怎么用VBA实现呢?

点评

关于抓图,看看这个对你没有帮助:http://bbs.mjtd.com/thread-113342-1-1.html  发表于 2018-8-5 14:28
 楼主| 发表于 2018-8-6 16:03 | 显示全部楼层
自己顶一下,看看哪位大神能有办法解决这个问题
发表于 2018-8-8 10:29 | 显示全部楼层
顶下来大神解决
发表于 2018-9-26 13:16 | 显示全部楼层
经验证QQ截图不可行,插入的图像还是光栅图像。大家看上去可行的原因是这个图像是存在QQ的临时目录下的,把原文件删除或是拷贝文件到其它电脑就不能正确显示图像了。
发表于 2018-9-30 18:48 | 显示全部楼层
直接设置剪贴板的数据为图形,就不会提示了
代码如下:
Dim objPic As Picture
Dim File As String

'设置图片文件路径
File = "D:\test.jpg"

'加载图片
Set objPic = LoadPicture(File)

'清空剪贴板
Clipboard.Clear

'设置剪贴板数据
Clipboard.SetData objPic, 2

'在CAD文档中粘贴
'...............

'代码结束


VB参考手册中关于Clipboard.SetData的解释
作用:用以使用指定的图形格式将图片放到 Clipboard 对象上。
语法:object.SetData data, format
data 必需的。被放置到 Clipboard 对象中的图形。
format  可选的。一个常数或数值,按照下列“设置值”中的描述,指定 Visual Basic 识别的 Clipboard 对象格式。如果省略 format,则 SetData 自动决定图形格式。
用于 format 的设置值有:
常数:vbCFBitmap, 值=2 含义:位图(.bmp 文件)

Clipboard.SetData objPic, 2,2的含义就是format的设置值
也就是说在CAD中保存的图象是BMP格式,不是压缩的,即使你的源图是很小体积JPG格式,也会使文件体积猛增。


插入图片,还可以使用相对路径,也就是图片文件与DWG文件在同一目录,这样就可以避免分发、复制文件的时候丢失图片带来的影响,而且文件体积也不会增大。
插入图片可以使用AddRaster方法,详细解释与例子请参阅明经的CAD编程参考手册。有了这个手册与CAD自带的VBA开发手册,基本不用看别的书了。如果有不知道的,书上也没有,比如这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 23:26 , Processed in 0.500928 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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