首页 > 解决方案 > Lock/Unlock of the parameter (Check), Check the value of parameter is set from KWA Rule (Edit Window for CADPRT)

问题描述

Catia V5 R24

1) is there any way to check by the VBA code if the parameter in catia is locked ? 
2) Is there any way to check by the VBA code if the value of the parameter is set from the KWA rule ?

我要做什么:我将在 KWA 中拥有一个具有必要几何、参数和规则的 Catia 零件。我只会在 VBA 窗口中添加用户可以轻松编辑和修改几何图形的地方。您可以在下面找到一个示例它的外观如何 在此处输入图像描述

  1. 用户将选择计算参数的方法(3 和 4)
  2. 如果他会选择第一个(脚本将检查 PRT 文件中的参数是否具有锁定状态,以及是否从 KWA 规则设置)如果是,则脚本应更改窗口选项(启用 > 假,禁用 posililiby 放置任何值到此窗口),并启用按钮 2

我知道这个窗口会有更多的问题,但我会尝试一一解决。

这是我的测试代码

    Private Sub cmdClose_Click()
    
Call ChangeValue("Show_Window", "No")
     Me.Hide
     'End


End Sub



Public Sub Start_Click()

On Error Resume Next
Set curDoc = CATIA.ActiveDocument
Set mySel = curDoc.Selection
mySel.Search "Name= 'xy plane', in"
If TypeName(curDoc) = "PartDocument" Then Set curPrt = curDoc.Part
If TypeName(curDoc) = "ProductDocument" Then Set curPrt = mySel.FindObject("CATIAPart")


Set ihybBodies = curPrt.HybridBodies
Set ihybBody = curPrt.InWorkObject
Dim iPars As Parameters: Set iPars = curPrt.Parameters
Dim iPar As Parameter


'search parameters length
mySel.Clear: mySel.Add ihybBody: mySel.Search "Name=Length_Param,in"
Set iPar = mySel.Item2(1).Value: LengthParam = iPar.Value & " mm"

  

'search parameters length 2nd method
Set iPar = Parameters.Item("Length_Param").Value: Length2ndMethod = iPar.Value & " mm"

'check lock status
 Dim myLockStatus As Boolean
    myLockStatus = Parameters.LockStatus("Length_Param").Lock
    
    MsgBox myLockStatus
'---------------------------------------------------------------------------------------------------------
'search string
mySel.Clear: mySel.Add ihybBody: mySel.Search "Name=String Param,in"
Set iPar = mySel.Item2(1).Value: StringParam = iPar.Value
'---------------------------------------------------------------------------------------------------------
'search ListBox
mySel.Clear: mySel.Add ihybBody: mySel.Search "Name=String_List,in"
Set iPar = mySel.Item2(1).Value

'Clear List
 ListBox.Clear


'Add Items to list from CADPRT
cnt = iPar.GetEnumerateValuesSize

Dim ParamValues() As Variant

ReDim ParamValues(cnt)
iPar.GetEnumerateValues ParamValues

        For i = 0 To cnt - 1
           With ListBox
           .AddItem ParamValues(i)
           End With
        Next
        
'set value from PRT
ListBox = iPar.Value
'---------------------------------------------------------------------------------------------------------

End Sub

标签: vbacatia

解决方案


推荐阅读