找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 5672|回复: 8
打印 上一主题 下一主题

[求助] 求教SWDM获取工程图张数的VBA宏代码

[复制链接]
跳转到指定楼层
1
发表于 2016-9-5 20:56:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
今天在公司时测试了一个SUB,发现这个SUB可以获取SW自带的培训文件里的工程图张数,但自建的工程图文件,不管实际是几页,获取得到的结果都是1页,不知道是怎么回事。如果说是代码有问题,那为什么获取SW自带的那工程图的张数的结果又是准确的呢?要说它是正确的,但获取的自己的文件的页数永远是1页,获取软件自带的工程图页数时也还是有问题的,比如自带的那个文件 ,初始页数是4页,这时获取结果是正确的,但是把这个图纸增加或者删除一两页后,获取的结果仍然是4页。
后面附上代码,请各位帮忙分析测试一下是什么原因?谢谢

Sub TestForSWDM()

    Dim swClassFact As SwDocumentMgr.SwDMClassFactory
    Dim docMgrApp As SwDocumentMgr.SwDMApplication
    Dim docDrw As SwDocumentMgr.SwDMDocument13
    Dim res As SwDocumentMgr.SwDmDocumentOpenError

    Set swClassFact = CreateObject("SwDocumentMgr.SwDMClassFactory")
    Set docMgrApp = swClassFact.GetApplication("your swdmkey")
    Set docDrw = docMgrApp.GetDocument("C:\Program Files\SOLIDWORKS Corp\SolidWorks\samples\tutorial\advdrawings\foodprocessor.slddrw", SwDmDocumentType.swDmDocumentDrawing, True, res)    '此为SW自带的工程图文件,初始状态获取结果是正确的。
    Dim sheetNameVar As Variant
    Dim sheetCount As Long
    sheetCount = docDrw.GetSheetCount
    sheetNameVar = docDrw.GetSheetNames

    Dim i As Integer
    For i = 0 To sheetCount - 1
      Debug.Print sheetNameVar(i)
    Next

End Sub

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 赞一下!赞一下!
2
发表于 2016-9-6 00:49:23 | 只看该作者
本帖最后由 gt.adan 于 2016-9-6 08:05 编辑

我不知道您是如何操作的,但我的沒有問題。以下是我的操作過程。
1.按LZ說的路徑打開自帶圖檔。
2.輸入許可證號。
3.修改代碼中的文件路徑。(這會不會是LZ沒注意到的關鍵?)
4.刪除工程圖第三及第四頁。
5.運行宏。

結果如下~(正常)
【PS】使用自創的文件也沒有問題。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3
发表于 2016-9-6 11:56:23 | 只看该作者
4
发表于 2016-9-7 00:03:00 | 只看该作者
gt.adan 发表于 2016-9-6 00:49
我不知道您是如何操作的,但我的沒有問題。以下是我的操作過程。
1.按LZ說的路徑打開自帶圖檔。
2.輸入許 ...

谢谢丹大指点。
肯定的是不会是路径的问题。因为打开那个文件,四页时是可以正常读取的,我添加删除页面,结果还是显示是4页,就不知道怎么回事了。
5
发表于 2016-9-7 00:35:22 | 只看该作者
dreamsboy 发表于 2016-9-7 00:03
谢谢丹大指点。
肯定的是不会是路径的问题。因为打开那个文件,四页时是可以正常读取的,我添加删除页面 ...

丹大,你是用我上面贴出来的代码试的吗?有没有改动哪里呢?是用的SW哪个版本呢?我在SW2012和SW2014两个版本上试了都不行。难道这还和引用的库文件有关系吗?
6
发表于 2016-9-7 00:41:38 | 只看该作者
gt.adan 发表于 2016-9-6 00:49
我不知道您是如何操作的,但我的沒有問題。以下是我的操作過程。
1.按LZ說的路徑打開自帶圖檔。
2.輸入許 ...

丹大,你是用我上面贴出来的代码试的吗?有没有改动哪里呢?是用的SW哪个版本呢?我在SW2012和SW2014两个版本上试了都不行。难道这还和引用的库文件有关系吗?
7
发表于 2016-9-7 00:46:07 | 只看该作者
本帖最后由 dreamsboy 于 2016-9-7 01:00 编辑
gt.adan 发表于 2016-9-6 00:49
我不知道您是如何操作的,但我的沒有問題。以下是我的操作過程。
1.按LZ說的路徑打開自帶圖檔。
2.輸入許 ...

丹大请看,我获取的结果就如图片所示。只要把这句代码的问题搞定,别的代码能省不少事了。不知道是怎么回事就是不行,搞得头痛。
话说,删掉两张图后,他前面显示sheetcount 还是4,但是要它显示各页的名字时,它又读取到第二张后后面的读不出来了会报错。
丹大能否把您测试正常的代码发上来我试下,或者您把您做的测试的API文件发上来我试试读取我电脑上的文件会不会也是这样的情况?如果牵涉到SWDMKkey有不方便的话,请加密宏后发给我试试,可以吗?谢谢了。急需解决这莫名其妙的问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8
发表于 2016-9-7 09:30:53 | 只看该作者
本帖最后由 DaveChan 于 2016-9-7 09:33 编辑
dreamsboy 发表于 2016-9-7 00:46
丹大请看,我获取的结果就如图片所示。只要把这句代码的问题搞定,别的代码能省不少事了。不知道是怎么回 ...

我试了一下,跟楼主的问题一样,测试版本是SW2012 SP5,是什么原因出现这个问题不是很清楚

既然getsheetcount有问题,getsheetnames是没有问题的,可以尝试以下解决方法


  1. sheetCount = UBound(sheetNameVar) + 1
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9
发表于 2016-9-7 10:31:58 | 只看该作者
DaveChan 发表于 2016-9-7 09:30
我试了一下,跟楼主的问题一样,测试版本是SW2012 SP5,是什么原因出现这个问题不是很清楚

既然getshe ...

谢谢指点了。实在不能直接getsheetcount就只能这样了,估计这是最好的解决办法了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-2-18 20:39 , Processed in 0.029427 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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