标题: 求教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
小王请看,我获取的结果就如图片所示。只要把这句代码的问题搞定,别的代码能省不少事了。不知道是怎么回事就是不行,搞得头痛