iCAx开思网

标题: 烦请闷大、丹大指教两个SWDM-API使用中的代码问题 [打印本页]

作者: dreamsboy    时间: 2016-11-4 14:34
标题: 烦请闷大、丹大指教两个SWDM-API使用中的代码问题
  1. Sub ReadModelPrpInSlddrw()
  2. Dim swModel As SwDMDocument10
  3. Dim dmSearchOpt As SwDMSearchOption
  4. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
  5. SWDMLicenseKey = InputBox("輸入許可證密碼")
  6. If SWDMLicenseKey = "" Then Exit Sub
  7. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM
  8. HeaderRoll = 2
  9. RollNumber = HeaderRoll + 1
  10. PathName = ActiveSheet.Cells(RollNumber, 1) '讀取第一個路徑的值
  11. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄
  12.     Filename = ActiveSheet.Cells(RollNumber, 2)
  13.     Set swDoc = swDM.GetDocument(PathName & Filename, 3, False, mOpenErrors) '開啟工程圖
  14.     If Not swDoc Is Nothing Then
  15.         RefModelNames = swDoc.GetAllExternalReferences(dmSearchOpt) '獲取參考檔案名稱
  16.         If Not TypeName(RefModelNames) = "Empty" Then '過濾沒有參考檔案
  17.             Cells(RollNumber, 2).Interior.ColorIndex = 8
  18.             RefModelName = RefModelNames(0) '獲取第一個參考檔案的名稱
  19.             If "SLDPRT" = UCase(Left(RefModelName, 6)) Then '分辨參考檔案的類型
  20.                 RefModelTYpe = 1 '這是零件
  21.             Else
  22.                 RefModelTYpe = 2 '這是組合件
  23.             End If
  24.             Set swModel = swDM.GetDocument(RefModelName, RefModelTYpe, False, mOpenErrors) '開啟
  25.             ColumnNumber = 3
  26.             PropName = Cells(HeaderRoll, ColumnNumber)
  27.             While Not (PropName = "" Or PropName = 0 Or IsEmpty(PropName)) '直到讀完表頭
  28.                 PropNames = swModel.GetCustomPropertyNames '獲取模型內所有屬性的名稱
  29.                 HasPropName = False
  30.                 If Not IsEmpty(PropNames) Then
  31.                     For i = 0 To UBound(PropNames) '核對書否存在表單上的屬性名稱
  32.                         If UCase(PropNames(i)) = UCase(PropName) Then HasPropName = True
  33.                     Next
  34.                 End If
  35.                 If HasPropName Then
  36.                     PropValue = swModel.GetCustomProperty(PropName, swDmCustomInfoText) '獲取參考檔案的屬性
  37.                     Cells(RollNumber, ColumnNumber) = PropValue '寫入屬性到表格
  38.                 Else
  39.                     Cells(RollNumber, ColumnNumber) = "-----" '寫入代表不存在屬性的字符
  40.                 End If
  41.                 ColumnNumber = ColumnNumber + 1 '下一欄
  42.                 PropName = ActiveSheet.Cells(HeaderRoll, ColumnNumber)
  43.             Wend '回到>直到讀完表頭
  44.             swModel.CloseDoc '關閉參考檔案
  45.             Cells(RollNumber, ColumnNumber) = RefModelName '寫入參考檔案名稱到表格到行末
  46.             End If
  47.         swDoc.CloseDoc '關閉工程圖
  48.     End If
  49.     RollNumber = RollNumber + 1 '下一列
  50.     PathName = ActiveSheet.Cells(RollNumber, 1)
  51. Wend '回到>直到讀完路徑欄
  52. End Sub
复制代码


闷大,以上代码为您在几何专门论坛 https://www.solidworks.org.tw/forum.php?mod=viewthread&tid=26031&extra=page%3D1&page=2 这帖的51楼贴出来的一段代码。我现在想做一个EXCEL版的SWDM-API文件,在参考使用、修改这些代码,在此过程中碰到两个问题,百度求助没找到能解决我的问题的资料,SWDM-API帮助中又没有VBA的实例,有个VB.NET的实例,但复制到VBA里想看看原理时一运行就出错,可能是代码兼容性问题。没办法只能向闷大您求教了。问题的情况是:
一:在您51楼的读取工程图中参考的零部件的属性中,不知道怎样修改代码可以让获取得到的属性值是工程图中关联的零部件件的配置特定的属性而不是自定义属性选项卡上的属性?
二:SWDM-API打开工程图后,不知道用什么代码获取这个工程图的图纸格式的大小?不管获得的是类似A4 A3这样的结果还是类似于“297mm*210mm"这样的结果,当然最好是能输出A4 A3这种的,我需要输出的是这个值。(知识匮乏,不知道应该分别怎样称呼这两种格式,是否其一是“图纸格式”其一是“图幅”?)SW-API获取图页图幅属性的代码为            vsheetprops = swCurrentSheet.GetProperties
但是我不知道在SWDM-API中读取图页图幅属性的代码。
恳请闷大指点,谢谢。
也请大能 丹大以及梁大等一众高人指点。谢谢。

作者: DaveChan    时间: 2016-11-4 18:53
本帖最后由 DaveChan 于 2016-11-4 19:04 编辑

我来帮你解答第一个问题吧
1.SWDM-API我不能获取到工程图模型的配置,所以只写了获取活动配置,
暂时不知道怎么获取工程图模型引用的配置,以下代码是获取活动配置的属性(一般情况下是"默认"配置)
由于不是专业写代码的,有不对的地方,还望指正
  1. Sub ReadModelPrpInSlddrw()
  2. Dim swModel As SwDMDocument12
  3. Dim dmSearchOpt As SwDMSearchOption
  4. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
  5. SWDMLicenseKey = InputBox("輸入許可證密碼")
  6. If SWDMLicenseKey = "" Then Exit Sub
  7. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM
  8. HeaderRoll = 2
  9. RollNumber = HeaderRoll + 1
  10. PathName = ActiveSheet.Cells(RollNumber, 1) '讀取第一個路徑的值
  11. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄
  12.     FileName = ActiveSheet.Cells(RollNumber, 2)
  13.     Set swDoc = swDM.GetDocument(PathName & FileName , 3, False, mOpenErrors) '開啟工程圖
  14.     If Not swDoc Is Nothing Then
  15.         RefModelNames = swDoc.GetAllExternalReferences(dmSearchOpt) '獲取參考檔案名稱
  16.         If Not TypeName(RefModelNames) = "Empty" Then '過濾沒有參考檔案
  17.             Cells(RollNumber, 2).Interior.ColorIndex = 8
  18.             RefModelName = RefModelNames(0) '獲取第一個參考檔案的名稱
  19.             If "SLDPRT" = UCase(Left(RefModelName, 6)) Then '分辨參考檔案的類型
  20.                 RefModelTYpe = 1 '這是零件
  21.             Else
  22.                 RefModelTYpe = 2 '這是組合件
  23.             End If
  24.             Set swModel = swDM.GetDocument(RefModelName, RefModelTYpe, False, mOpenErrors) '開啟
  25.             Set swCfgMgr = swModel.ConfigurationManager
  26.             ColumnNumber = 3
  27.             PropName = Cells(HeaderRoll, ColumnNumber)
  28.             While Not (PropName = "" Or PropName = 0 Or IsEmpty(PropName)) '直到讀完表頭
  29.                 swConfigName = swCfgMgr.GetActiveConfigurationName
  30.                 Dim swCfg As SwDMConfiguration12
  31.                 Set swCfg = swCfgMgr.GetConfigurationByName(swConfigName)
  32.                 PropNames = swCfg.GetCustomPropertyNames '獲取模型內所有屬性的名稱
  33.                 HasPropName = False
  34.                 If Not IsEmpty(PropNames) Then
  35.                     For I = 0 To UBound(PropNames) '核對書否存在表單上的屬性名稱
  36.                         If UCase(PropNames(I)) = UCase(PropName) Then HasPropName = True
  37.                     Next
  38.                 End If
  39.                 If HasPropName Then
  40.                     PropValue = swCfg.GetCustomProperty(PropName, swDmCustomInfoText) '獲取參考檔案的屬性
  41.                     Cells(RollNumber, ColumnNumber) = PropValue '寫入屬性到表格
  42.                 Else
  43.                     Cells(RollNumber, ColumnNumber) = "-----" '寫入代表不存在屬性的字符
  44.                 End If
  45.                 ColumnNumber = ColumnNumber + 1 '下一欄
  46.                 PropName = ActiveSheet.Cells(HeaderRoll, ColumnNumber)
  47.             Wend '回到>直到讀完表頭
  48.             swModel.CloseDoc '關閉參考檔案
  49.             Cells(RollNumber, ColumnNumber) = RefModelName '寫入參考檔案名稱到表格到行末
  50.             End If
  51.         swDoc.CloseDoc '關閉工程圖
  52.     End If
  53.     RollNumber = RollNumber + 1 '下一列
  54.     PathName = ActiveSheet.Cells(RollNumber, 1)
  55. Wend '回到>直到讀完路徑欄
  56. End Sub
复制代码


作者: dreamsboy    时间: 2016-11-4 20:06
DaveChan 发表于 2016-11-4 18:53
我来帮你解答第一个问题吧
1.SWDM-API我不能获取到工程图模型的配置,所以只写了获取活动配置,
暂时不知 ...

谢谢老兄,我晚上熬夜研究学习下。谢谢。

作者: DaveChan    时间: 2016-11-4 20:18
dreamsboy 发表于 2016-11-4 20:06
谢谢老兄,我晚上熬夜研究学习下。谢谢。

第二个问题,如果工程图中有多张图纸,那么读取哪一张工程图的图页属性呢?
作者: dreamsboy    时间: 2016-11-4 20:39
DaveChan 发表于 2016-11-4 20:18
第二个问题,如果工程图中有多张图纸,那么读取哪一张工程图的图页属性呢?

就读取第一张的就OK了。谢谢关注和帮助。

作者: DaveChan    时间: 2016-11-4 20:55
本帖最后由 DaveChan 于 2016-11-4 21:04 编辑
dreamsboy 发表于 2016-11-4 20:39
就读取第一张的就OK了。谢谢关注和帮助。

请测试
  1. Sub GetFormatProp()
  2. Dim swDoc As SwDMDocument14
  3. Dim dmSearchOpt As SwDMSearchOption
  4. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
  5. SWDMLicenseKey = InputBox("輸入許可證密碼")
  6. If SWDMLicenseKey = "" Then Exit Sub
  7. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM
  8. HeaderRoll = 2
  9. RollNumber = HeaderRoll + 1
  10. PathName = ActiveSheet.Cells(RollNumber, 1) '讀取第一個路徑的值
  11. RowCount = 1
  12. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄
  13.     FileName = ActiveSheet.Cells(RollNumber, 2)
  14.     Set swDoc = swDM.GetDocument(PathName & FileName, 3, False, mOpenErrors)  '開啟工程圖
  15.     If Not swDoc Is Nothing Then
  16.         Dim SheetNameVar As Variant
  17.         Dim SheetCount As Long
  18.         Dim SheetName As String
  19.         Dim SheetNameCount As Integer
  20.         Dim FormatName As String
  21.         Dim Status1 As SwDocumentMgr.swSheetFormatPathResult
  22.         Dim Status2 As SwDocumentMgr.swSheetPropertiesResult
  23.         Dim FormatProp As Variant
  24.         Dim para As Double
  25.         SheetCount = swDoc.GetSheetCount
  26.         SheetNameVar = swDoc.GetSheetNames
  27.         SheetName = SheetNameVar(LBound(SheetNameVar))
  28.         Status1 = swDoc.GetSheetFormatPath(SheetName, FormatName)
  29.         Status2 = swDoc.GetSheetProperties(SheetName, FormatProp)
  30.         ActiveSheet.Cells(RowCount + RollNumber - 1, 5) = SheetName
  31.         ActiveSheet.Cells(RowCount + RollNumber - 1, 6) = FormatProp(1) * 1000 & "X" & FormatProp(2) * 1000
  32.     End If
  33.     swDoc.CloseDoc '關閉工程圖
  34.     RollNumber = RollNumber + 1 '下一列
  35.     PathName = ActiveSheet.Cells(RollNumber, 1)
  36. Wend '回到>直到讀完路徑欄
  37. End Sub
复制代码



作者: dreamsboy    时间: 2016-11-4 21:01
DaveChan 发表于 2016-11-4 20:55
请测试

非常感谢。
其实这一步今天下午我在公司时已经解决得差不多了,是参考SW中自带的SWDM的帮助文件的实例做的,慢慢的修改,虽然最终也能达成我的需要了,但被我改得乱七八糟让人不忍直视了。谢谢您的大作,我还是放弃自己改的那些乱七八糟的代码,研究学习您这精简的代码吧。

作者: DaveChan    时间: 2016-11-4 21:05
dreamsboy 发表于 2016-11-4 21:01
非常感谢。
其实这一步今天下午我在公司时已经解决得差不多了,是参考SW中自带的SWDM的帮助文件的实例做 ...

刚才代码声明部分发现不对,有更改一点,还请重新复制测试
作者: DaveChan    时间: 2016-11-4 21:13
重贴完整代码
  1. Sub GetFormatProp()
  2. Dim swDM As SwDMApplication
  3. Dim objClassfac As SwDMClassFactory
  4. Dim mOpenErrors As SwDmDocumentOpenError
  5. Dim swDoc As SwDMDocument14
  6. Dim dmSearchOpt As SwDMSearchOption
  7. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
  8. SWDMLicenseKey = InputBox("輸入許可證密碼")
  9. If SWDMLicenseKey = "" Then Exit Sub
  10. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM
  11. HeaderRoll = 2
  12. RollNumber = HeaderRoll + 1
  13. PathName = ActiveSheet.Cells(RollNumber, 1) '讀取第一個路徑的值
  14. RowCount = 1
  15. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄
  16.     FileName = ActiveSheet.Cells(RollNumber, 2)
  17.     Set swDoc = swDM.GetDocument(PathName & FileName, 3, False, mOpenErrors)  '開啟工程圖
  18.     If Not swDoc Is Nothing Then
  19.         Dim SheetNameVar As Variant
  20.         Dim SheetCount As Long
  21.         Dim SheetName As String
  22.         Dim SheetNameCount As Integer
  23.         Dim FormatName As String
  24.         Dim Status1 As SwDocumentMgr.swSheetFormatPathResult
  25.         Dim Status2 As SwDocumentMgr.swSheetPropertiesResult
  26.         Dim FormatProp As Variant
  27.         Dim para As Double
  28.         SheetCount = swDoc.GetSheetCount
  29.         SheetNameVar = swDoc.GetSheetNames
  30.         SheetName = SheetNameVar(LBound(SheetNameVar))
  31.         Status1 = swDoc.GetSheetFormatPath(SheetName, FormatName)
  32.         Status2 = swDoc.GetSheetProperties(SheetName, FormatProp)
  33.         ActiveSheet.Cells(RowCount + RollNumber - 1, 5) = SheetName
  34.         ActiveSheet.Cells(RowCount + RollNumber - 1, 6) = FormatProp(1) * 1000 & "X" & FormatProp(2) * 1000
  35.     End If
  36.     swDoc.CloseDoc '關閉工程圖
  37.     RollNumber = RollNumber + 1 '下一列
  38.     PathName = ActiveSheet.Cells(RollNumber, 1)
  39. Wend '回到>直到讀完路徑欄
  40. End Sub
复制代码

作者: dreamsboy    时间: 2016-11-4 22:07
DaveChan 发表于 2016-11-4 21:13
重贴完整代码

好的。
刚才有点事在忙了会,才看到消息。
谢谢。

作者: dreamsboy    时间: 2016-11-4 22:13
DaveChan 发表于 2016-11-4 21:13
重贴完整代码

晕,我是不是点了“点评”按钮了?用点评功能可能看上去有点不尊重您了。抱歉了。
作者: dreamsboy    时间: 2016-11-5 01:55
DaveChan 发表于 2016-11-4 18:53
我来帮你解答第一个问题吧
1.SWDM-API我不能获取到工程图模型的配置,所以只写了获取活动配置,
暂时不知 ...

您好。
试用你的代码,现在试用的结果如下:
第一:代码中
  1.   If "SLDPRT" = UCase(Left(RefModelName, 6)) Then '分辨參考檔案的類型
  2.                 RefModelTYpe = 1 '這是零件
  3.             Else
  4.                 RefModelTYpe = 2 '這是組合件
复制代码
这一段应该改为
  1. If "SLDPRT" = UCase(Right(RefModelName, 6)) Then '分辨參考檔案的類型
  2.                 RefModelTYpe = 1 '這是零件
  3.             Else
  4.                 RefModelTYpe = 2 '這是組合件
复制代码
修改后才能正确抓取后缀的几位字母以识别为零或者装配体;
第二:您给的这段代码,获取的还是在“自定义”选项卡上的属性而非“配置特定选项卡”中的属性。
今天晚上我熬夜弄这个东西,看来要再另想办法找出正确的代码来了。
仍然感谢你。

作者: DaveChan    时间: 2016-11-5 08:23
本帖最后由 DaveChan 于 2016-11-5 08:27 编辑
dreamsboy 发表于 2016-11-5 01:55
您好。
试用你的代码,现在试用的结果如下:
第一:代码中

1.这段代码确实错了,我是按照你提供的代码更改的,没注意到,但是很奇怪,我使用却并无异常
2.代码确实是读取的配置特定中的属性,确认是读取下图中的属性,无误
[attach]1241012[/attach]
我重贴一下代码
  1. Sub ReadModelPrpInSlddrw()
  2. Dim swDM As SwDMApplication
  3. Dim swDoc As SwDMDocument12
  4. Dim swModel As SwDMDocument12
  5. Dim dmSearchOpt As SwDMSearchOption
  6. Dim objClassfac As SwDMClassFactory
  7. Dim mOpenErrors As SwDmDocumentOpenError
  8. Dim swCfgMgr As SwDMConfigurationMgr
  9. Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
  10. SWDMLicenseKey = InputBox("輸入許可證密碼")
  11. If SWDMLicenseKey = "" Then Exit Sub
  12. Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '啟動SWDM
  13. HeaderRoll = 2
  14. RollNumber = HeaderRoll + 1
  15. PathName = ActiveSheet.Cells(RollNumber, 1) '讀取第一個路徑的值
  16. While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄
  17.     FileName = ActiveSheet.Cells(RollNumber, 2)
  18.     Set swDoc = swDM.GetDocument(PathName & FileName, 3, False, mOpenErrors)  '開啟工程圖
  19.     If Not swDoc Is Nothing Then
  20.         RefModelNames = swDoc.GetAllExternalReferences(dmSearchOpt) '獲取參考檔案名稱
  21.         If Not TypeName(RefModelNames) = "Empty" Then '過濾沒有參考檔案
  22.             Cells(RollNumber, 2).Interior.ColorIndex = 8
  23.             RefModelName = RefModelNames(0) '獲取第一個參考檔案的名稱
  24.             If "SLDPRT" = UCase(Right(RefModelName, 6)) Then '分辨參考檔案的類型
  25.                 RefModelTYpe = 1 '這是零件
  26.             Else
  27.                 RefModelTYpe = 2 '這是組合件
  28.             End If
  29.             Set swModel = swDM.GetDocument(RefModelName, RefModelTYpe, False, mOpenErrors) '開啟
  30.             Set swCfgMgr = swModel.ConfigurationManager
  31.             ColumnNumber = 3
  32.             PropName = Cells(HeaderRoll, ColumnNumber)
  33.             While Not (PropName = "" Or PropName = 0 Or IsEmpty(PropName)) '直到讀完表頭
  34.                 swConfigName = swCfgMgr.GetActiveConfigurationName
  35.                 Dim swCfg As SwDMConfiguration12
  36.                 Set swCfg = swCfgMgr.GetConfigurationByName(swConfigName)
  37.                 PropNames = swCfg.GetCustomPropertyNames '獲取模型內所有屬性的名稱
  38.                 HasPropName = False
  39.                 If Not IsEmpty(PropNames) Then
  40.                     For i = 0 To UBound(PropNames) '核對書否存在表單上的屬性名稱
  41.                         If UCase(PropNames(i)) = UCase(PropName) Then HasPropName = True
  42.                     Next
  43.                 End If
  44.                 If HasPropName Then
  45.                     PropValue = swCfg.GetCustomProperty(PropName, swDmCustomInfoText) '獲取參考檔案的屬性
  46.                     Cells(RollNumber, ColumnNumber) = PropValue '寫入屬性到表格
  47.                 Else
  48.                     Cells(RollNumber, ColumnNumber) = "-----" '寫入代表不存在屬性的字符
  49.                 End If
  50.                 ColumnNumber = ColumnNumber + 1 '下一欄
  51.                 PropName = ActiveSheet.Cells(HeaderRoll, ColumnNumber)
  52.             Wend '回到>直到讀完表頭
  53.             swModel.CloseDoc '關閉參考檔案
  54.             Cells(RollNumber, ColumnNumber) = RefModelName '寫入參考檔案名稱到表格到行末
  55.             End If
  56.         swDoc.CloseDoc '關閉工程圖
  57.     End If
  58.     RollNumber = RollNumber + 1 '下一列
  59.     PathName = ActiveSheet.Cells(RollNumber, 1)
  60. Wend '回到>直到讀完路徑欄
  61. End Sub
复制代码
你说的问题可否截图说明一下


作者: dreamsboy    时间: 2016-11-5 08:59
DaveChan 发表于 2016-11-5 08:23
1.这段代码确实错了,我是按照你提供的代码更改的,没注意到,但是很奇怪,我使用却并无异常
2.代码确实 ...

现在测试正常了。
请问大师,知不知道在swdm中,用什么语句读取到属性的评估值而不是读取到那一段代码?
谢谢

作者: DaveChan    时间: 2016-11-5 09:02
dreamsboy 发表于 2016-11-5 08:59
现在测试正常了。
请问大师,知不知道在swdm中,用什么语句读取到属性的评估值而不是读取到那一段代码? ...

获取评估值代码
  1. GetCustomPropertyValues
复制代码



作者: DaveChan    时间: 2016-11-5 09:15
本帖最后由 DaveChan 于 2016-11-5 09:43 编辑
dreamsboy 发表于 2016-11-5 08:59
现在测试正常了。
请问大师,知不知道在swdm中,用什么语句读取到属性的评估值而不是读取到那一段代码? ...

获取评估值完整代码(配置特定属性中)
  1. Sub ReadModelPrpInSlddrw()
  2. Dim swDM As SwDMApplication
  3. Dim swDoc As SwDMDocument12
  4. Dim swModel As SwDMDocument12
复制代码



作者: dreamsboy    时间: 2016-11-5 09:20
DaveChan 发表于 2016-11-5 09:15
获取评估值完整代码(配置特定属性中)

谢谢。我刚按闷大的大法修改了一下,发现运行出错。原来是图片上的那个14只能改成12就可以了。不知道这个是不是因为版本的关系?

作者: dreamsboy    时间: 2016-11-5 09:25
DaveChan 发表于 2016-11-5 09:15
获取评估值完整代码(配置特定属性中)

真是太感谢您了。
接下来我就是要找到从工程图直接打开工程图所引用的零件的配置并读取这个配置的属性的代码了。
我是VBA小白,代码都只能慢慢的改慢慢的试。幸亏有你们这些大师不吝指点了。万分感谢了。

作者: DaveChan    时间: 2016-11-5 09:27
本帖最后由 DaveChan 于 2016-11-5 09:37 编辑
dreamsboy 发表于 2016-11-5 09:20
谢谢。我刚按闷大的大法修改了一下,发现运行出错。原来是图片上的那个14只能改成12就可以了。不知道这个 ...

只要是5以上都能获取,具体数值根据自己的版本来
作者: dreamsboy    时间: 2016-11-5 09:35
DaveChan 发表于 2016-11-5 09:27
只要是5以上都能获取

学到了。
学疏才浅,不知道这些后缀数字到底有什么不同,所以前面硬搬闷大的那个“14”进来,运行出错。乱改了一个小点的数字,改成“12”竟然就没报错了。
大师能不能指点一下,这些不同的数字到底有什么不同的含义和用法呢?看了很多宏,都有这种用不同的数字后缀的情况,搞晕头了都不知道为什么要用这些不同的数字。

作者: DaveChan    时间: 2016-11-5 09:42
dreamsboy 发表于 2016-11-5 09:35
学到了。
学疏才浅,不知道这些后缀数字到底有什么不同,所以前面硬搬闷大的那个“14”进来,运行出错。 ...

每个代码的含义都不尽相同,具体得查API这个代码查API如下图
[attach]1241016[/attach][attach]1241017[/attach]


作者: dreamsboy    时间: 2016-11-5 09:47
DaveChan 发表于 2016-11-5 09:42
每个代码的含义都不尽相同,具体得查API这个代码查API如下图

好的,知道了,谢谢大师指点。
之前稍微学习了下VBA了,SWDM又是刚接触,又很多用法搞不清,有空还要多向大师们请教。

另外,大师有没有听说过从工程图直接打开它引用的配置的用法?

作者: DaveChan    时间: 2016-11-5 09:51
dreamsboy 发表于 2016-11-5 09:47
好的,知道了,谢谢大师指点。
之前稍微学习了下VBA了,SWDM又是刚接触,又很多用法搞不清,有空还要多 ...

获取工程图引用模型的配置名这个
SW-API我知道怎么获取,但是这个必须打开工程图
SWDM-API暂时还没有找到方法,也不知道是否可行

作者: dreamsboy    时间: 2016-11-5 10:22
大师能否提供SW-API中打开引用的配置的代码研究学习下?
作者: DaveChan    时间: 2016-11-5 10:48
dreamsboy 发表于 2016-11-5 10:22
大师能否提供SW-API中打开引用的配置的代码研究学习下?
  1. ReferencedConfiguration
复制代码



作者: dreamsboy    时间: 2016-11-5 11:30
DaveChan 发表于 2016-11-5 10:48

大师,就一句代码太简单啦,菜鸟表示根本不知道它的用法。

作者: 冉冉升起liu    时间: 2016-11-5 15:46
学习了,谢谢分享




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3