In general, we call ContentFamily.CreateMember to create the instance of a content family row by inputting index of this row. However, sometimes, we would need to pick one row which has specific cell value such as diameter, radius, length etc. I do not find a direct way to get specific table row. while we could still iterate the table rows and find out the specific item by the cell value(s).
In the other blog, my colleague Adam shared a code demo on how to get specific family. I produced another code based on that. The code tries to get the table row with one column: 'radius is 0.25".
Note: the method ContentTableRow.GetCellValue accepts the column index, or its internal name. e.g. in this case, the internal name of column 'radius' is 'RR'. In addition, in this demo code, I input one column only, however obviously, in family 'Bolt GB/T 35', there are many rows whose radius is also '0.25'. So you would need to input other columns and cell values, in order to get the unique row.
One more thing: if you have known the member id of a row, you could also get ContentTableRow by a direct method:ContentCenter.GetContentObject. In the blog, my colleague Wayne introduced it.
Public Function GetFamily( _ name As String, node As ContentTreeViewNode) _ As ContentFamily Dim cc As ContentCenter Set cc = ThisApplication.ContentCenter If node Is Nothing Then Set node = cc.TreeViewTopNode Dim cf As ContentFamily For Each cf In node.Families If cf.DisplayName = name Then Set GetFamily = cf Exit Function End If Next Dim child As ContentTreeViewNode For Each child In node.ChildNodes Set cf = GetFamily(name, child) If Not cf Is Nothing Then Set GetFamily = cf Exit Function End If Next End Function 'input: specific content family ' internal name of specific ContentTableColumn (ContentTableColumn.internalName) ' the cell value of this column 'Note: you would need to input other columns and cell values, in order to get the unique row. Public Function GetSpecificRow(cf As ContentFamily, colInternalName As String, cellValue As Variant) Dim oRow As ContentTableRow Dim oCol As ContentTableColumn Dim oFound As Boolean oFound = False For Each oRow In cf.TableRows 'check the cell value of the specific column Dim oCellV As String oCellV = oRow.GetCellValue(colInternalName) If oCellV = cellValue Then oFound = True Exit For End If Next If oFound Then Set GetSpecificRow = oRow Else Set GetSpecificRow = Nothing End If End Function Public Sub CcTest() Dim asm As AssemblyDocument Set asm = ThisApplication.ActiveDocument 'get specific family Dim cf As ContentFamily Set cf = GetFamily("Bolt GB/T 35", Nothing) 'get specific table row Dim oOneTableRow As ContentTableRow Set oOneTableRow = GetSpecificRow(cf, "RR", "0.25") 'create this member Dim member As String Dim ee As MemberManagerErrorsEnum member = cf.CreateMember(oOneTableRow, ee, "Problem") Dim tg As TransientGeometry Set tg = ThisApplication.TransientGeometry 'inser the member to the assembly Call asm.ComponentDefinition.Occurrences.Add( _ member, tg.CreateMatrix()) End Sub