楚河 发表于 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获得的坐标左下角8032905412732940420439149269180006
右上角832694561713
第一个图框块为打印窗口后GetWindowToPlot获取坐标左下角6540213612672940420439
右上角683425381707
第二个图框块GetBoundingBox获得的坐标左下角8326945412732940420439149269180006
右上角862098561713
第二个图框块为打印窗口后GetWindowToPlot获取坐标左下角6834253612672948520439
右上角712910381707
第三个图框块GetBoundingBox获得的坐标左下角8620965412732940942302149269180005
右上角891504583575
第三个图框块为打印窗口后GetWindowToPlot获取坐标左下角7128273612692966042299
右上角742487403568
第四个图框块GetBoundingBox获得的坐标左下角8032904946232940420439149269180006
右上角832694515062
第四个图框块为打印窗口后GetWindowToPlot获取坐标左下角6540213146172940620439
右上角683428335056
第五个图框块GetBoundingBox获得的坐标左下角8326924946232940942302149269180005
右上角862100536925
第五个图框块为打印窗口后GetWindowToPlot获取坐标左下角6834233146182940942299
右上角712832356917

楚河 发表于 2022-11-11 17:39:16

现在来看,很可能是CAD里面有2套坐标系导致的,或者是不同空间模式导致的。

楚河 发表于 2022-11-11 18:24:30

搞定了   :lol
    Dim Target As Variant
    Target = cadDoc.GetVariable("target")

sunny_8848 发表于 2022-11-12 09:31:24

楼主厉害,谢谢分享

chixun99 发表于 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坐标系的 ...

在模型空间,其他情况没遇到,暂时没考虑。

sunny_8848 发表于 2022-11-13 15:11:00

自己平时也用点vba,不过感觉楼主这个挺高深的
页: 1 [2]
查看完整版本: 求组关于在EXCEL的VBA环境调用CAD打印问题