SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 976|回复: 8
打印 上一主题 下一主题

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

[复制链接]

24

主题

82

帖子

192

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
414
QQ
跳转到指定楼层
楼主
发表于 2016-9-5 20:56:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
今天在公司时测试了一个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 FilesSOLIDWORKS CorpSolidWorkssamplestutorialadvdrawingsfoodprocessor.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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

16

主题

85

帖子

119

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
296
QQ
沙发
发表于 2016-9-6 06:05:42 | 只看该作者
我不知道您是如何操作的,但我的沒有問題。以下是我的操作過程。
1.按LZ說的路徑打開自帶圖檔。
2.輸入許可證號。
3.修改代碼中的文件路徑。(這會不會是LZ沒注意到的關鍵?)
4.刪除工程圖第三及第四頁。
<font color="#000000">5.咝泻辍
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

14

主题

66

帖子

88

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
243
QQ
板凳
发表于 2016-9-8 09:55:44 | 只看该作者
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

86

帖子

72

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
228
QQ
地板
发表于 2016-9-8 13:01:49 | 只看该作者
谢谢小王指点。
肯定的是不会是路径的问题。因为打开那个文件,四页时是可以正常读取的,我添加删除页面,结果还是显示是4页,就不知道怎么回事了。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

11

主题

67

帖子

81

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
212
QQ
5#
发表于 2016-9-8 15:58:32 | 只看该作者

   经典案例图书
小王,你是用我上面贴出来的代码试的吗?有没有改动哪里呢?是用的SW哪个版本呢?我在SW2012和SW2014两个版本上试了都不行。难道这还和引用的库文件有关系吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

13

主题

77

帖子

94

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
260
QQ
6#
发表于 2016-9-8 20:19:08 | 只看该作者
小王,你是用我上面贴出来的代码试的吗?有没有改动哪里呢?是用的SW哪个版本呢?我在SW2012和SW2014两个版本上试了都不行。难道这还和引用的库文件有关系吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

66

帖子

79

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
200
QQ
7#
发表于 2016-9-9 13:27:23 | 只看该作者

   经典案例图书
小王请看,我获取的结果就如图片所示。只要把这句代码的问题搞定,别的代码能省不少事了。不知道是怎么回事就是不行,搞得头痛

话说,删掉两张图后,他前面显示sheetcount 还是4,但是要它显示各页的名字时,它又读取到第二张后后面的读不出来了会报错。

小王能否把您测试正常的代码发上来我试下,或者您把您做的测试的API文件发上来我试试读取我电脑上的文件会不会也是这样的情况?如果牵涉到SWDMKkey有不方便的话,请加密后发给我试试,可以吗?谢谢了。急需解决这莫名其妙的问题。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

19

主题

80

帖子

122

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
309
QQ
8#
发表于 2016-9-9 13:54:50 | 只看该作者
我试了一下,跟楼主的问题一样,测试版本是SW2012 SP5,是什么原因出现这个问题不是很清楚
既然getsheetcount有问题,getsheetnames是没有问题的,可以尝试以下解决方法
    sheetCount = UBound(sheetNameVar) + 1

复制代码
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

71

帖子

64

金币

天使

Rank: 2Rank: 2

积分
184
QQ
9#
发表于 2016-9-10 01:42:47 | 只看该作者
谢谢指点了。实在不能直接getsheetcount就只能这样了,估计这是最好的解决办法了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-5 04:35 , Processed in 0.206942 second(s), 36 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

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