iCAx开思网

标题: 有关在solidworks2018中使用3D边界框链接焊接钢板的外廊尺寸问题 [打印本页]

作者: linkral    时间: 2019-11-25 13:29
标题: 有关在solidworks2018中使用3D边界框链接焊接钢板的外廊尺寸问题
本帖最后由 linkral 于 2019-11-27 14:02 编辑

[attach]1269537[/attach]
如上图所示,试过了很多遍
钢板 "SW-3D-边界框长度@@@"X"SW-3D-边界框宽度@@@"X"SW-3D-边界框厚度@@@"

这段在solidworks2016中是可以使用的,但是在solidworks2018里就无法出来结果。
求知道的朋友告知一下这里如何适应2018的。




作者: linkral    时间: 2019-11-25 16:26
没有人遇到过吗?

作者: linkral    时间: 2019-11-25 17:00
在solidworks2018中使用下面这段才能生效
钢板 "SW-3D-边界框长度@@""X"SW-3D-边界框宽度@@""X"SW-3D-边界框厚度@@""
作者: linkral    时间: 2019-11-25 17:01
custPrOPMgr.Add "名称", "文字", "钢板""SW-3D-边界框长度@@@""X""SW-3D-边界框宽度@@@""X""SW-3D-边界框厚度@@@"""

但是这段代码不知道如何修正才能自动添加上面那段属性
作者: 三维专家    时间: 2019-11-25 20:18
本帖最后由 三维专家 于 2019-11-25 20:23 编辑

如果用宏程序,可用下面一句:
注意:swFeat.name:为特征名;
         FileName:文件名

swCustPropMgr.Add3 "备注", swCustomInfoType_e.swCustomInfoText, _

                    """SW-3D-边界框长度@@@" & swFeat.name & "@" & FileName & ".SLDPRT""" _
                    & "x""" & "SW-3D-边界框宽度@@@" & swFeat.name & "@" & FileName & ".SLDPRT""" _
                    & "x""" & "SW-3D-边界框厚度@@@" & swFeat.name & "@" & FileName & ".SLDPRT""", _
                    swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
作者: scattie    时间: 2019-11-26 09:19
来学习学习
作者: linkral    时间: 2019-11-26 09:45
三维专家 发表于 2019-11-25 20:18
如果用宏程序,可用下面一句:
注意:swFeat.name:为特征名;
         FileName:文件名[/ ...
  1. Option Explicit
  2. Dim swApp As SldWorks.SldWorks
  3. Dim Part As SldWorks.ModelDoc2
  4. Dim thisFeat As SldWorks.Feature
  5. Dim thisSubFeat As SldWorks.Feature
  6. Dim cutFolder As Object
  7. Dim BodyCount As Integer
  8. Dim fn As String
  9. Dim pn As String
  10. Dim custPrOPMgr As SldWorks.CustomPropertyManager
  11. Dim propNames As Variant
  12. Dim vName As Variant
  13. Dim propName As String
  14. Dim Value As String
  15. Dim resolvedValue As String
  16. Dim TotalW As Double
  17. Dim Parts As Object
  18. Dim boolstatus As Boolean
  19. Dim longstatus As Long, longwarnings As Long
  20. Dim swFeat As Feature
  21. Dim FileName As String

  22. Sub main()
  23. Set swApp = Application.SldWorks
  24. Set Parts = swApp.ActiveDoc
  25. Set thisFeat = Parts.FirstFeature
  26. boolstatus = Parts.Extension.SelectByID2("实体", "BDYFOLDER", 0, 0, 0, False, 0, Nothing, 0)
  27. boolstatus = Parts.Extension.SelectByID2("实体", "BDYFOLDER", 0, 0, 0, False, 0, Nothing, 0)
  28. Parts.ClearSelection2 True
  29. boolstatus = Parts.Extension.SelectByID2("实体", "BDYFOLDER", 0, 0, 0, False, 0, Nothing, 0)
  30. Parts.Extension.Create3DBoundingBox

  31. Do While Not thisFeat Is Nothing
  32.     If thisFeat.GetTypeName = "SolidBodyFolder" Then
  33.         thisFeat.GetSpecificFeature2.UpdateCutList
  34.     End If
  35.     Set thisSubFeat = thisFeat.GetFirstSubFeature
  36.     Do While Not thisSubFeat Is Nothing
  37.         If thisSubFeat.GetTypeName = "CutListFolder" Then
  38.             Set cutFolder = thisSubFeat.GetSpecificFeature2
  39.         End If
  40.         If Not cutFolder Is Nothing Then
  41.             BodyCount = cutFolder.GetBodyCount
  42.             If BodyCount > 0 Then
  43.                 Set custPrOPMgr = thisSubFeat.CustomPropertyManager
  44.                 If Not custPrOPMgr Is Nothing Then
  45.                     custPrOPMgr.Delete "Total Weight"
  46.                     custPrOPMgr.Delete "总重"
  47.                     custPrOPMgr.Delete "Weight"
  48.                     custPrOPMgr.Delete "材料"
  49.                     fn = thisSubFeat.Name
  50.                     pn = Parts.GetTitle
  51.                     custPrOPMgr.Add "单重", "文字", Chr(34) & "SW-Mass@@@" & fn & "@" & pn & Chr(34)
  52.                     custPrOPMgr.Add "重量", "文字", Chr(34) & "SW-Mass@@@" & fn & "@" & pn & Chr(34)
  53.                     custPrOPMgr.Add "材料", "文字", Chr(34) & "SW-Material@@@" & fn & "@" & pn & Chr(34)
  54.                     propNames = custPrOPMgr.GetNames
  55.                     If Not IsEmpty(propNames) Then
  56.                         For Each vName In propNames
  57.                             propName = vName
  58.                             custPrOPMgr.Get2 propName, Value, resolvedValue
  59.                             If propName = "重量" Then TotalW = resolvedValue
  60.                         Next vName
  61.                     End If
  62.                     custPrOPMgr.Add "总重", "文字", Format(BodyCount * TotalW, "0.00")
  63.                     custPrOPMgr.Add3 "名称", "文字", "钢板""""SW-3D-边界框长度@@@" & swFeat.Name & "@" & FileName & ".SLDPRT""" & "x""" & "SW-3D-边界框宽度@@@" & swFeat.Name & "@" & FileName & ".SLDPRT""" & "x""" & "SW-3D-边界框厚度@@@" & swFeat.Name & "@" & FileName & ".SLDPRT""", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  64.                 End If
  65.             End If
  66.         End If
  67.         Set thisSubFeat = thisSubFeat.GetNextSubFeature
  68.     Loop
  69.     Set thisFeat = thisFeat.GetNextFeature
  70. Loop
  71. End Sub
复制代码
修改后,提示运行时13错误,调试了之后还是没有解决,请大神帮忙看看问题出在哪里?


作者: 三维专家    时间: 2019-11-26 11:37
本帖最后由 三维专家 于 2019-11-26 11:39 编辑
  1. '?ú????????и??嵥??????д?Щ???????????????????????????????Щ?й???????
  2. '?硰????????и??嵥???????????????"????"???SW-Mass???????
  3. '?硰?????????QUANTITY???????"????"???SW-Mass???????
  4. '???????????????????????????????????????????ò?????д??????????????

  5. Option Explicit

  6. Dim swApp As SldWorks.SldWorks
  7. Dim swModel As SldWorks.ModelDoc2
  8. Dim swModelDocExt As SldWorks.ModelDocExtension
  9. Dim swFeat As SldWorks.Feature

  10. Dim swCustPropMgr As SldWorks.CustomPropertyManager
  11. Dim names As Variant '???????????????
  12. Dim bRet As Boolean
  13. Dim evalval As String
  14. Dim featureName As String
  15. Dim boolstatus As Boolean
  16. Dim opt As Long

  17. Sub main()
  18.     Set swApp = Application.SldWorks
  19.     Set swModel = swApp.ActiveDoc
  20.     Set swModelDocExt = swModel.Extension
  21.    
  22.     ' ????????????
  23.     Set swFeat = swModel.FirstFeature
  24.    
  25.     Dim FileName As String
  26.     Dim name As String      '????????
  27.     Dim textexp As String
  28.     Dim evalval As String
  29.    
  30.     FileName = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "") + 1)
  31.    
  32.    
  33.     Do While Not swFeat Is Nothing
  34.         If swFeat Is Nothing Then
  35.             Exit Do
  36.         End If
  37.         featureName = swFeat.name
  38.         If swFeat.GetTypeName2 = "CutListFolder" Then
  39.             boolstatus = swModelDocExt.SelectByID2(featureName, "SUBWELDFOLDER", 0, 0, 0, False, 0, Nothing, 0)
  40.             Set swCustPropMgr = swFeat.CustomPropertyManager
  41.             names = swCustPropMgr.GetNames
  42.             name = Join(names, " ") '???????????????????????
  43.             
  44.             
  45.             swCustPropMgr.Add3 "????", swCustomInfoType_e.swCustomInfoText, _
  46.                 """SW-CutListItemName@@@" & swFeat.name & "@" & FileName & """", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  47.             
  48.             
  49.             swCustPropMgr.Get2 "DESCRIPTION", textexp, evalval
  50.             swCustPropMgr.Add3 "????", swCustomInfoType_e.swCustomInfoText, _
  51.                 """SW-Mass@@@" & swFeat.name & "@" & FileName & """", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  52.             
  53.             swCustPropMgr.Get2 "QUANTITY", textexp, evalval
  54.             swCustPropMgr.Add3 "????", swCustomInfoType_e.swCustomInfoText, _
  55.                 textexp, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  56.             swCustPropMgr.Add3 "????????", swCustomInfoType_e.swCustomInfoText, _
  57.                 "$PRP:""SW-File Name""", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  58.             
  59.             If InStr(1, name, "????") <= 0 Then '?ж????????
  60.                
  61.                 swCustPropMgr.Add3 "????", swCustomInfoType_e.swCustomInfoText, _
  62.                     """SW-Material@@@" & swFeat.name & "@" & FileName & """", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  63.                 swModelDocExt.Create3DBoundingBox '????????
  64.                
  65.                 swCustPropMgr.Add3 "???", swCustomInfoType_e.swCustomInfoText, _
  66.                     """SW-3D-??????@@@" & swFeat.name & "@" & FileName & ".SLDPRT""" _
  67.                     & "x""" & "SW-3D-??????@@@" & swFeat.name & "@" & FileName & ".SLDPRT""" _
  68.                     & "x""" & "SW-3D-??????@@@" & swFeat.name & "@" & FileName & ".SLDPRT""", _
  69.                     swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  70.                
  71.             Else
  72.                 swCustPropMgr.Get2 "DESCRIPTION", textexp, evalval '???????????DESCRIPTION?????
  73.                 swCustPropMgr.Add3 "????", swCustomInfoType_e.swCustomInfoText, _
  74.                     textexp, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd '???????DESCRIPTION???????д???????????????
  75.                
  76.             End If
  77.         End If
  78.         '        Debug.Print swFeat.GetTypeName2
  79.         Set swFeat = swFeat.GetNextFeature
  80.         
  81.     Loop
  82.     bRet = swModel.ForceRebuild3(False)
  83.     MsgBox "???"
  84. End Sub
复制代码

这是我编写的一个给焊件填写属性的宏程序,你可参考一下:
作者: 三维专家    时间: 2019-11-26 11:40
三维专家 发表于 2019-11-26 11:37
这是我编写的一个给焊件填写属性的宏程序,你可参考一下:

好好的文件,怎么成了乱码?

作者: 三维专家    时间: 2019-11-26 11:46
本帖最后由 三维专家 于 2019-11-26 11:47 编辑
  1. '该宏可为焊件切割清单属性填写一些通过其它方式获取的属性(也就是和其它一些有关联),
  2. '如“名称”和切割清单某个项目名称相同;"单重"和“SW-Mass”相同;
  3. '如“数量”和“QUANTITY”相同;
  4. '对于板材件,增加一项“备注”,并获取平板的边界框参数,将该参数填写进“备注”项目中

  5. Option Explicit

  6. Dim swApp As SldWorks.SldWorks
  7. Dim swModel As SldWorks.ModelDoc2
  8. Dim swModelDocExt As SldWorks.ModelDocExtension
  9. Dim swFeat As SldWorks.Feature

  10. Dim swCustPropMgr As SldWorks.CustomPropertyManager
  11. Dim names As Variant '属性名称数组变体
  12. Dim bRet As Boolean
  13. Dim evalval As String
  14. Dim featureName As String
  15. Dim boolstatus As Boolean
  16. Dim opt As Long

  17. Sub main()
  18.     Set swApp = Application.SldWorks
  19.     Set swModel = swApp.ActiveDoc
  20.     Set swModelDocExt = swModel.Extension
  21.    
  22.     ' 获取第一个特征
  23.     Set swFeat = swModel.FirstFeature
  24.    
  25.     Dim FileName As String
  26.     Dim name As String      '属性名称
  27.     Dim textexp As String
  28.     Dim evalval As String
  29.    
  30.     FileName = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "") + 1)
  31.    
  32.    
  33.     Do While Not swFeat Is Nothing
  34.         If swFeat Is Nothing Then
  35.             Exit Do
  36.         End If
  37.         featureName = swFeat.name
  38.         If swFeat.GetTypeName2 = "CutListFolder" Then
  39.             boolstatus = swModelDocExt.SelectByID2(featureName, "SUBWELDFOLDER", 0, 0, 0, False, 0, Nothing, 0)
  40.             Set swCustPropMgr = swFeat.CustomPropertyManager
  41.             names = swCustPropMgr.GetNames
  42.             name = Join(names, " ") '将数组转变为用空格隔开的字符串
  43.             
  44.             
  45.             swCustPropMgr.Add3 "名称", swCustomInfoType_e.swCustomInfoText, _
  46.                 """SW-CutListItemName@@@" & swFeat.name & "@" & FileName & """", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  47.             
  48.             
  49.             swCustPropMgr.Get2 "DESCRIPTION", textexp, evalval
  50.             swCustPropMgr.Add3 "单重", swCustomInfoType_e.swCustomInfoText, _
  51.                 """SW-Mass@@@" & swFeat.name & "@" & FileName & """", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  52.             
  53.             swCustPropMgr.Get2 "QUANTITY", textexp, evalval
  54.             swCustPropMgr.Add3 "数量", swCustomInfoType_e.swCustomInfoText, _
  55.                 textexp, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  56.             swCustPropMgr.Add3 "所属装配号", swCustomInfoType_e.swCustomInfoText, _
  57.                 "$PRP:""SW-File Name""", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  58.             
  59.             If InStr(1, name, "长度") <= 0 Then '判断是否为板材
  60.                
  61.                 swCustPropMgr.Add3 "材料", swCustomInfoType_e.swCustomInfoText, _
  62.                     """SW-Material@@@" & swFeat.name & "@" & FileName & """", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  63.                 swModelDocExt.Create3DBoundingBox '创建边界框
  64.                
  65.                 swCustPropMgr.Add3 "备注", swCustomInfoType_e.swCustomInfoText, _
  66.                     """SW-3D-边界框长度@@@" & swFeat.name & "@" & FileName & ".SLDPRT""" _
  67.                     & "x""" & "SW-3D-边界框宽度@@@" & swFeat.name & "@" & FileName & ".SLDPRT""" _
  68.                     & "x""" & "SW-3D-边界框厚度@@@" & swFeat.name & "@" & FileName & ".SLDPRT""", _
  69.                     swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
  70.                
  71.             Else
  72.                 swCustPropMgr.Get2 "DESCRIPTION", textexp, evalval '如果为型材,获取DESCRIPTION属性值
  73.                 swCustPropMgr.Add3 "材料", swCustomInfoType_e.swCustomInfoText, _
  74.                     textexp, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd '将获取的DESCRIPTION属性值填写到“材料”属性中
  75.                
  76.             End If
  77.         End If
  78.         '        Debug.Print swFeat.GetTypeName2
  79.         Set swFeat = swFeat.GetNextFeature
  80.         
  81.     Loop
  82.     bRet = swModel.ForceRebuild3(False)
  83.     MsgBox "完成"
  84. End Sub
复制代码
转到记事本,重新复制一下,又好了!

作者: linkral    时间: 2019-11-26 13:56
三维专家 发表于 2019-11-26 11:46
转到记事本,重新复制一下,又好了!

可能你使用的环境与我的不同还是什么原因。
在焊接件中,材料明细表属性添加相关性
我们这里是强链接的
出现的效果如下:
[attach]1269560[/attach]


备注部分就是型材关联的长度或标准板材的厚度。




作者: linkral    时间: 2019-11-26 14:11
三维专家 发表于 2019-11-26 11:46
转到记事本,重新复制一下,又好了!

[attach]1269561[/attach]
经使用材料切割清单中的型材也被重命名,出现混乱的局面,
板材的情况也是不容乐观。

[attach]1269562[/attach]



作者: 三维专家    时间: 2019-11-26 14:14
一般,切割清单项目可重新命名有意义的名称,属性中的“名称”和切割清单项目相同,不是很好吗?
作者: 三维专家    时间: 2019-11-26 14:16
[attach]1269563[/attach]

作者: linkral    时间: 2019-11-26 14:39
三维专家 发表于 2019-11-26 14:14
一般,切割清单项目可重新命名有意义的名称,属性中的“名称”和切割清单项目相同,不是很好吗?

哦,明白了你使用的方式了,
可能是应用环境不同,我这个焊接材料清单是需要直接体现所用的材料给采购,
具体使用在哪里目前还没有这样的要求。
谢谢你的开阔了我的眼界。



作者: 三维专家    时间: 2019-11-26 15:23
程序在运行前,将原来所创建的边界框删除,否则程序会判断失误!
作者: 三维专家    时间: 2019-11-26 15:26
linkral 发表于 2019-11-26 14:39
哦,明白了你使用的方式了,
可能是应用环境不同,我这个焊接材料清单是需要直接体现所用的材料给采购, ...

像你这样,将名称赋予材料规格,一般少见!一般是在材料栏,填写材料规格!
作者: 三维专家    时间: 2019-11-26 15:34
[attach]1269566[/attach]
这是我做的焊件明细表

作者: linkral    时间: 2019-11-27 14:04
今天不知道怎么回事,怎么论坛上的图片都成了空白的,什么都看不到了,大家也是这样的情况吗?
作者: linkral    时间: 2020-4-14 08:31
三维专家 发表于 2019-11-26 15:26
像你这样,将名称赋予材料规格,一般少见!一般是在材料栏,填写材料规格!

型材规格之后要标记不同材质的,我这种表格要方便些





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