This is weird behavior, I tried it in a regular sketch and it works perfect:
Sub Main
If ThisApplication.ActiveDocumentType <> kPartDocumentObject Then MessageBox.Show("This rule only works in Part files.", "Wrong Document type") : Exit Sub
Dim oBlock As Sketch = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kSketchObjectFilter, "Select a Sketch") : If IsNothing(oBlock) Then Exit Sub
'Enter Block Editor
oBlock.Edit
Dim oPoint As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(0, 0)
Dim oPointCenter As SketchPoint
oPoint = ThisApplication.TransientGeometry.CreatePoint2d(0, 0)
oPointCenter = oBlock.SketchPoints.Add(oPoint, True)
Try
oBlock.GeometricConstraints.AddGround(oPointCenter)
Catch
MessageBox.Show("Failed to make constraint.", "Error") : oPointCenter.Delete
End Try
oBlock.ExitEdit
End Sub
But then defining oBlock as a SketchBlockDefinition, it won't work:
Sub Main
If ThisApplication.ActiveDocumentType <> kPartDocumentObject Then MessageBox.Show("This rule only works in Part files.", "Wrong Document type") : Exit Sub
Dim oBlock As SketchBlockDefinition = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kSketchBlockDefinitionFilter, "Select a Sketch Block") : If IsNothing(oBlock) Then Exit Sub
'Enter Block Editor
oBlock.Edit
Dim oPoint As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(0, 0)
Dim oPointCenter As SketchPoint
oPoint = ThisApplication.TransientGeometry.CreatePoint2d(0, 0)
oPointCenter = oBlock.SketchPoints.Add(oPoint, True)
Try
oBlock.GeometricConstraints.AddGround(oPointCenter)
Catch
MessageBox.Show("Failed to make constraint.", "Error") : oPointCenter.Delete
End Try
oBlock.ExitEdit
End Sub
Seems like this might be a bug? It should work in the SketchBlockDefinition context based on the documentation found in the help file
I did find a possible work around by creating your geometry in a sketch and use the CopyContentsTo method into a new block:
Sub Main
If ThisApplication.ActiveDocumentType <> kPartDocumentObject Then MessageBox.Show("This rule only works in Part files.", "Wrong Document type") : Exit Sub
Dim oBlock As Sketch = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kSketchObjectFilter, "Select a Sketch") : If IsNothing(oBlock) Then Exit Sub
'Enter Block Editor
oBlock.Edit
Dim oPoint As Point2d = ThisApplication.TransientGeometry.CreatePoint2d(0, 0)
Dim oPointCenter As SketchPoint
oPoint = ThisApplication.TransientGeometry.CreatePoint2d(0, 0)
oPointCenter = oBlock.SketchPoints.Add(oPoint, True)
Try
oBlock.GeometricConstraints.AddGround(oPointCenter)
Catch
MessageBox.Show("Failed to make constraint.", "Error") : oPointCenter.Delete
End Try
oBlock.ExitEdit
Dim newBlock As SketchBlockDefinition
oBlock.CopyContentsTo(ThisApplication.ActiveDocument.ComponentDefinition.SketchBlockDefinitions.Add("new_Block"))End Sub