SolidWorks管道二次开发:获取管道下料长度方法

引言

    卡套管和铜管备料的时候,现场备料师傅通常会根据工程图计算出管道下料长度,首次弯管时在图纸上注明对应规格管道的下料长度,方便批量下料及后续弯管作业,可不可以在绘图的时候使用软件自动获取管件的下料长度呢?答案是肯定的。

    使用SolidWorks绘制管道模型,该软件有官方插件Routing,但是本文不着重讲如何使用这款插件,我从事过的单位没有使用Routing,一般用扫描管道的方式,接下来我就介绍如何用VBA获取管道的下料长度

准备

    首先我们要在车间里收集数据,管道弯后扣除,比如直径20mm、厚度1.5mm的铜管弯90°后的扣除量,这里类似半径的折弯扣除。为了让大家直观的了解,我用下图说明扣除的问题,假设管道折弯后一条边是30mm一条边是60mm,折弯角度是90度,圆角半径是5mm,如果该管道的折弯扣除是2mm那么折弯前的长度就是88mm,就是说原材料88mm的管子,如果要完成90°,圆角是R5的折弯它的扣除就是2mm,下图就是30+60-88=2mm。需要注意的是和管材的厚度也是有关系的,不同的厚度扣除也不一样。

折弯扣除示意图

    有了折弯的表就有了扣除的依据,通过在脚本里设定公式就可以得到原材料管子的长度了。

原理

    此方法是通过读取R角来算出原材料的长度。

    需要说明的是,这里只读取R角,因为我工作过的单位,R角大小和管材的规格有着对应关系,这里只需获取R角就能得到相对应的扣除量。如果没有对应的话就要获取扫描草图的长度,同时识别管材厚度、直径,再更具折弯的R角具体大小来获取对应的扣除。

举例

STEP 1

       获取"3D草图"("3DSketch")特征。

For Each fa In swFeatm

        If InStr(fa.Name, "3D草图") <> 0 Or InStr(fa.Name, "3DSketch") <> 0 Then

            boolstatus = swModel.Extension.SelectByID2(fa.Name, "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

            Exit For

        End If

    Next

STEP 2

获取圆角的半径,计算圆弧数量,有一次圆角就要计一次扣除,最后把长度累加起来再剪掉扣除,就得到了管材原材料的长度。

Set swFeat = swSelMgr.GetSelectedObject5(1)

   

    swModel.ClearSelection2 True

   

    If Not swFeat Is Nothing Then

        Set swSketch = swFeat.GetSpecificFeature2

        vSketchSeg = swSketch.GetSketchSegments

       

        For i = 0 To UBound(vSketchSeg)

            Set swSketchSeg = vSketchSeg(i)

            ' Ignore construction lines

            If swSketchSeg.ConstructionGeometry = False Then

                ' Ignore text

                If swSketchLINE = swSketchSeg.GetType Then

                    nLength = nLength + swSketchSeg.GetLength

                End If

               

                If swSketchARC = swSketchSeg.GetType Then

                    ARLength = swSketchSeg.GetLength

                    Set swSkArc = swSketchSeg

                    Radius = Round(swSkArc.GetRadius, 3)  '获取弯弧半径

                    RD = ARLength / Radius

                    If Round(RD, 6) = Round(0.5 * PI, 6) Then

                        nARC = nARC + 1 '计数弯弧数量

ElseIf Round(RD, 6) = Round(PI, 6) Then

                            nARC = nARC + 2

                            ARLength = 0.5 * ARLength

End If

                    Select Case Radius

                        Case 0.025 ’半径25mm的对应扣除10mm

                                CutLine = 0.01

                            Case 0.03, 0.035 ’半径30mm和35mm的对应扣除15mm

                                CutLine = 0.015

                            Case 0.04 ’半径40mm的对应扣除20mm

                                CutLine = 0.02

                            Case 0.05 ’半径50mm的对应扣除25mm

                                CutLine = 0.025

                            Case 0.06 ’半径60mm的对应扣除30mm

                                CutLine = 0.03

                            Case Else  ’半径60mm以外的对应扣除40mm

                                CutLine = 0.04

                        End Select

                End If

                End If

        Next i

End If

nLength = nLength + (4 * ARLength / PI - CutLine) * nARC ’计算原材料长度

SETP3

       换算到毫米。

If InStr(Str(Round(nLength * 1000, 1)), ".") <> 0 Then

        If Right(Str(Round(nLength * 1000, 1)), 1) = "5" Then

            If (CLng(Mid(StrReverse(Str(Round(nLength * 1000, 1))), 3, 1)) Mod 2 <> 1) Then: linelong = Round(nLength * 1000, 0) + 1

        End If

    End If

STEP4

       写入到零件属性。

    bRet = swModel.DeleteCustomInfo2("", "下料")

    blnretval = swModel.AddCustomInfo3("", "下料", swCustomInfoText, linelong)

结语

    以上就是获取长度的方法,第二步种有不少草图相关的API大家可以在bing上查找,有机会后面再逐个介绍。

 

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空