|
在sw版本,2018以上支持零件边界框插入,2019以上支持装配体边界框插入,小巧门就是用边界框的这个功能。
如果单单使用边界框插入,在配置特定属性中会生成相关属性,可以使用。
只是,边界框这一个虚线框在工作区,显示确实很不方便,到了装配体,一大堆线条,到了工程图也是每个视图带个框。边界框生成后可以隐藏或压缩,只是感觉不太稳定。
所以这个特征还是不要的好,只要它(边框界)的相关数值就好了。
所以思路就出来了,
首先创建一个边界框,然后获取边界框参数值,即配置属性评估值,
再删除边界框特征,
再写入刚提取参数到文件属性中,
最后防止有文件已有边界框的情况下,可能补压缩特征,或其他原因倒致参数没更新到最新,所以,创建边界前先执行删除旧边界框,再重新创建,以保边界框是最新的,准确的。
另外说一下,这个边界框比之前论坛中的零件(xyz最大最小)长宽高提取的区别,用xyz最大小点提取的,相对一些异形的,坐标是斜的工件就做得不太准了,边界框侧可以最佳适配,或自定义。
下面附代码:
Sub main()
Dim mo0301 As String
Dim mo0302 As String
Dim mo0303 As String
Dim mo0304 As String
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
Dim swFeat As Object
Dim swFeatMgr As Object
'Set myModelView = Part.ActiveView
'myModelView.FrameState = swWindowState_e.swWindowMaximized
'boolstatus = Part.Extension.SelectByID2("边界框", "BBOXSKETCH", 0, 0, 0, False, 0, Nothing, 0)
'Part.EditDelete
Set swFeatMgr = Part.FeatureManager
Dim swFeatData As Object
Set swFeatData = swFeatMgr.CreateDefinition(swFeatureNameID_e.swFmBoundingBox)
swFeatData.IncludeHiddenBodies = False
swFeatData.IncludeSurfaces = False
swFeatData.ReferenceFaceOrPlane = 1
Set swFeat = swFeatMgr.CreateFeature(swFeatData)
Part.ClearSelection2 True
mo0301 = swApp.ActiveDoc.GetCustomInfoValue("默认", "合计边界框长度")
mo0302 = swApp.ActiveDoc.GetCustomInfoValue("默认", "合计边界框宽度")
mo0303 = swApp.ActiveDoc.GetCustomInfoValue("默认", "合计边界框厚度")
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SelectByID2("边界框", "BBOXSKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.EditDelete
mo0304 = mo0301 + " X " + mo0302 + " X " + mo0303
bRet = Part.DeleteCustomInfo2("", "长宽高")
bRet = Part.AddCustomInfo3("", "长宽高", swCustomInfoText, mo0304)
End Sub
|
评分
-
查看全部评分
|