明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

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

求组关于在EXCEL的VBA环境调用CAD打印问题

[复制链接]
 楼主| 发表于 2022-11-11 17:13:04 | 显示全部楼层
做测试获得的结果:
第一个图框块GetBoundingBox获得的坐标       
        803289.999954268--541273.365925417
        832693.999954268--561712.731753247
第一个图框块为打印窗口后GetWindowToPlot获取坐标       
        654021.295610093--361267.136916942
        683425.295610093--381706.502744772
       
第二个图框块GetBoundingBox获得的坐标
        832693.999954268--541273.365925417
        862097.999954267--561712.731753247
第二个图框块为打印窗口后GetWindowToPlot获取坐标
        683425.295610093--361267.136916942
        712910.295610093--381706.502744772
       
第三个图框块GetBoundingBox获得的坐标
        862095.684084867--541273.365925417
        891504.315823679--583575.467145161
第三个图框块为打印窗口后GetWindowToPlot获取坐标
        712826.979740693--361268.746855386
        742486.611479505--403567.628198242
       
第四个图框块GetBoundingBox获得的坐标
        803289.999954268--494623.000097587
        832693.999954268--515062.365925417
第四个图框块为打印窗口后GetWindowToPlot获取坐标
        654021.295610093--314616.771215901
        683427.611479613--335056.136916942
       
第五个图框块GetBoundingBox获得的坐标
        832691.684084867--494623.000097587
        862100.315823679--536925.101317331
第五个图框块为打印窗口后GetWindowToPlot获取坐标
        683422.979740693--314618.381027555
        712831.611479505--356917.262370412
 楼主| 发表于 2022-11-11 17:23:56 | 显示全部楼层
数据分析的情况:
比例是一致的,1:1,只是原点不一致,具体如下:
                X坐标        Y坐标        长(X2-X1)        高(Y2-Y1)        原点差值(XB-XP)        原点差值(YB-YP)
第一个图框块GetBoundingBox获得的坐标        左下角        803290        541273        29404        20439        149269        180006
        右上角        832694        561713                               
第一个图框块为打印窗口后GetWindowToPlot获取坐标        左下角        654021        361267        29404        20439               
        右上角        683425        381707                               
第二个图框块GetBoundingBox获得的坐标        左下角        832694        541273        29404        20439        149269        180006
        右上角        862098        561713                               
第二个图框块为打印窗口后GetWindowToPlot获取坐标        左下角        683425        361267        29485        20439               
        右上角        712910        381707                               
第三个图框块GetBoundingBox获得的坐标        左下角        862096        541273        29409        42302        149269        180005
        右上角        891504        583575                               
第三个图框块为打印窗口后GetWindowToPlot获取坐标        左下角        712827        361269        29660        42299               
        右上角        742487        403568                               
第四个图框块GetBoundingBox获得的坐标        左下角        803290        494623        29404        20439        149269        180006
        右上角        832694        515062                               
第四个图框块为打印窗口后GetWindowToPlot获取坐标        左下角        654021        314617        29406        20439               
        右上角        683428        335056                               
第五个图框块GetBoundingBox获得的坐标        左下角        832692        494623        29409        42302        149269        180005
        右上角        862100        536925                               
第五个图框块为打印窗口后GetWindowToPlot获取坐标        左下角        683423        314618        29409        42299               
        右上角        712832        356917                               
 楼主| 发表于 2022-11-11 17:25:38 | 显示全部楼层
X坐标Y坐标长(X2-X1)高(Y2-Y1)原点差值(XB-XP)原点差值(YB-YP)
第一个图框块GetBoundingBox获得的坐标左下角
803290
541273
2940420439149269180006
右上角
832694
561713
第一个图框块为打印窗口后GetWindowToPlot获取坐标左下角
654021
361267
2940420439
右上角
683425
381707
第二个图框块GetBoundingBox获得的坐标左下角
832694
541273
2940420439149269180006
右上角
862098
561713
第二个图框块为打印窗口后GetWindowToPlot获取坐标左下角
683425
361267
2948520439
右上角
712910
381707
第三个图框块GetBoundingBox获得的坐标左下角
862096
541273
2940942302149269180005
右上角
891504
583575
第三个图框块为打印窗口后GetWindowToPlot获取坐标左下角
712827
361269
2966042299
右上角
742487
403568
第四个图框块GetBoundingBox获得的坐标左下角
803290
494623
2940420439149269180006
右上角
832694
515062
第四个图框块为打印窗口后GetWindowToPlot获取坐标左下角
654021
314617
2940620439
右上角
683428
335056
第五个图框块GetBoundingBox获得的坐标左下角
832692
494623
2940942302149269180005
右上角
862100
536925
第五个图框块为打印窗口后GetWindowToPlot获取坐标左下角
683423
314618
2940942299
右上角
712832
356917
 楼主| 发表于 2022-11-11 17:39:16 | 显示全部楼层
现在来看,很可能是CAD里面有2套坐标系导致的,或者是不同空间模式导致的。
 楼主| 发表于 2022-11-11 18:24:30 | 显示全部楼层
搞定了   
    Dim Target As Variant
    Target = cadDoc.GetVariable("target")
发表于 2022-11-12 09:31:24 来自手机 | 显示全部楼层
楼主厉害,谢谢分享
发表于 2022-11-12 19:46:43 | 显示全部楼层
楚河 发表于 2022-11-11 16:44
我大概找到原因了,程序执行是正确的,错误的是块的左下角坐标和右上角坐标,不是模型空间的坐标,这是怎么 ...

图框的块确定是在模型空间吗?另外获得的坐标一般是相对UCS坐标系的,打印设置的坐标系是针对WCS坐标系的,需要一个转换代码,所以你这程序代码问题不大,但是有可能出现某些图纸文件用了ucs,图框的坐标不是wcs对应的。
 楼主| 发表于 2022-11-13 13:22:29 | 显示全部楼层
chixun99 发表于 2022-11-12 19:46
图框的块确定是在模型空间吗?另外获得的坐标一般是相对UCS坐标系的,打印设置的坐标系是针对WCS坐标系的 ...

在模型空间,其他情况没遇到,暂时没考虑。
发表于 2022-11-13 15:11:00 | 显示全部楼层
自己平时也用点vba,不过感觉楼主这个挺高深的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 06:52 , Processed in 0.134243 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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