vba - 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 窗口中添加用户可以轻松编辑和修改几何图形的地方。您可以在下面找到一个示例它的外观如何
- 用户将选择计算参数的方法(3 和 4)
- 如果他会选择第一个(脚本将检查 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
解决方案
推荐阅读
- python - 为什么我会得到:ValueError:当我使用:random.choice(x.remove()) 时,a 必须是一维或整数?
- c# - C# 中的强化命令注入问题
- bootstrap-4 - 在 navbar navbar-expand-lg navbar 中插入图像需要帮助吗?
- angular - ng serve 上的 Angular 版本不匹配
- ubuntu - sudo apt-get 更新连接超时
- java - 如何在 selenium java 中找到日历控件的结束日期
- java - 如何将库文件夹添加到 netbeans 项目?
- linux - 如何在大括号扩展中使用变量
- list - Scala 元组列表在 for 循环后变为空
- java - Keycloak admin客户端春季启动测试不影响真正的keycloak