Hi Gents
I am looking for a method in OPM, when we placed a support location, is possible to catch the support number of the support location to the cell name? e.g. in element properties,
Cell Name = Name as shown the illustrated fig below, can you give some tips how can I make it? I know there maybe some function in class editor, it maybe can add some formula/expression.
I want the parameter "Cell Name" got the name as in OPM support location attribute automatically.
3107.Empty.dgn
Hi You,
Thank you for raising your query in Bentley Plant Forum.
From the image, I understand that you want to update the value of Cell Name with Tag Information, while the cell name will remain constant based on the cell being used.
Can you please provide us the reason behind this requirement.
Regards | Swapnil Joshi
Hi Sir
The reason is because I found the model will always show as a name "Cell" in our review model tree, e.g. Navisworks.
but if I give a name to the cell, the cell name will be shown in the model tree, instead of "Cell".
But in this case we have define the cell name manually both in OPM TAG and Element properties. that is double work.
So I wondering if I can add some ECexpression etc within Class Editor, to let the Cell Name = TAG. that will be perfect!
Do you understand?
Answer Verified By: You Quanwu
从未遇到过问题。imodel是唯一的带属性跨软件的方法。如果某些元素带某些不带,应该是不带的那些元素的问题。
您那边代码运行没有问题吗?能把cell name都赋上值吗?是不是因为 SUPPORT_NAME 是ECExpressions, 代码不同?
我这里当然是没问题的。也许schema不同,你的support没有support_name这个属性,换一个别的文本类型的、能确认support的其它属性。
刚刚又自带的项目试了一下,除了Support Location块无法赋上cell name,其它的都能。
非常感谢啊!
如果要实现让support location实现我应该怎么做呢,你有没有什么建议?
查看帮助修改相应的getvalue获取不同类型的属性。
追加了一个属性, 现在都能实现了, 谢谢!谢谢!
您好,现在我想在OPM里获取参考模型的相关信息然后我在DO 循环前加了一个FOR循环用来对每个Attachment进行Scan, 新的代码如下, 调试时在Set Mycell = MyEnum.Current 出现报错说是类型不匹配,麻烦您帮忙看看。
Sub FillCellNameAsTag() Dim Mycell As CellElement Dim ee As ElementEnumerator Dim sc As New ElementScanCriteria dim oAtt as Attachment ‘新加变量 sc.ExcludeAllTypes sc.IncludeType msdElementTypeCellHeader For For Each oAtt In ActiveModelReference.Attachments Set MyEnum = ActiveModelReference.Scan(sc) Do While MyEnum.MoveNext Set Mycell = MyEnum.Current ’调试时这里报错说 “Type mismatch”, Select Case GetCellProperty(Mycell, "SUPPORT_NAME") Case "NotAvailable" Case Else ActiveModelReference.AddElement GetCellProperty(Mycell, "NAME") '此处改为放置文本 End Select Loop Next End Sub Function GetCellProperty(CellEle As Element, PropertyNameString As String) As String Dim OPH As PropertyHandler Set OPH = CreatePropertyHandler(CellEle) On Error Resume Next GetCellProperty = "NotAvailable" OPH.SelectByAccessString (PropertyNameString) GetCellProperty = OPH.GetValue End Function Sub SetCellProperty(CellEle As Element, PropertyNameString As String, PropertyValue As String) Dim OPH As PropertyHandler Set OPH = CreatePropertyHandler(CellEle) OPH.SelectByAccessString (PropertyNameString) OPH.SetValue PropertyValue End Sub
有一些别的元素也在msdelementtypecellheader,但其又不是cell。找到这个元素,然后排除掉在赋值。