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

标题: 求教SWDM获取工程图张数的VBA宏代码 [打印本页]

作者: 為愛垨護    时间: 2016-9-5 20:56
标题: 求教SWDM获取工程图张数的VBA宏代码
今天在公司时测试了一个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
作者: guanlye    时间: 2016-9-6 06:05
我不知道您是如何操作的,但我的沒有問題。以下是我的操作過程。
1.按LZ說的路徑打開自帶圖檔。
2.輸入許可證號。
3.修改代碼中的文件路徑。(這會不會是LZ沒注意到的關鍵?)
4.刪除工程圖第三及第四頁。
<font color="#000000">5.咝泻辍
作者: JoyeaC    时间: 2016-9-8 09:55

作者: 244371560    时间: 2016-9-8 13:01
谢谢小王指点。
肯定的是不会是路径的问题。因为打开那个文件,四页时是可以正常读取的,我添加删除页面,结果还是显示是4页,就不知道怎么回事了。
作者: pianaiUG    时间: 2016-9-8 15:58
小王,你是用我上面贴出来的代码试的吗?有没有改动哪里呢?是用的SW哪个版本呢?我在SW2012和SW2014两个版本上试了都不行。难道这还和引用的库文件有关系吗?
作者: 给明天一个笑脸.    时间: 2016-9-8 20:19
小王,你是用我上面贴出来的代码试的吗?有没有改动哪里呢?是用的SW哪个版本呢?我在SW2012和SW2014两个版本上试了都不行。难道这还和引用的库文件有关系吗?
作者: wuxuan1993    时间: 2016-9-9 13:27
小王请看,我获取的结果就如图片所示。只要把这句代码的问题搞定,别的代码能省不少事了。不知道是怎么回事就是不行,搞得头痛

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

小王能否把您测试正常的代码发上来我试下,或者您把您做的测试的API文件发上来我试试读取我电脑上的文件会不会也是这样的情况?如果牵涉到SWDMKkey有不方便的话,请加密后发给我试试,可以吗?谢谢了。急需解决这莫名其妙的问题。
作者: 天地和一    时间: 2016-9-9 13:54
我试了一下,跟楼主的问题一样,测试版本是SW2012 SP5,是什么原因出现这个问题不是很清楚
既然getsheetcount有问题,getsheetnames是没有问题的,可以尝试以下解决方法

复制代码
作者: 逍遥旅途    时间: 2016-9-10 01:42
谢谢指点了。实在不能直接getsheetcount就只能这样了,估计这是最好的解决办法了




欢迎光临 SolidWorks机械工程师网——最大的SolidWorks学习平台 (https://www.swbbsc.com/) Powered by Discuz! X3.2