Hi;
ON_Brep* brr = nullptr;
CRhinoDoc* activeDoc = RhinoApp().ActiveDoc();
if (activeDoc == nullptr)
return nullptr;
ON_wString st;
st.Format(L"%d", 8);
ON_wString face_name = L"Arial";
const bool bBold = true;
const bool bItalic = false;
const ON_Font* font = ON_Font::GetManagedFont(face_name, bBold, bItalic);
if (nullptr == font)
return nullptr;
ON_Plane pl_xz = activeDoc->ActiveView()->ActiveViewport().ConstructionPlane().m_plane;
const ON_DimStyle& parent_dimstyle = activeDoc->m_dimstyle_table.CurrentDimStyle();
ON_DimStyle dim_style = ON_DimStyle::CreateFromProperties(parent_dimstyle, ON::AnnotationType::Text, font, ON_UNSET_VALUE,
1.7, activeDoc->UnitSystem(), ON::TextVerticalAlignment::Middle, ON::TextHorizontalAlignment::Center);
CRhinoText* rc = activeDoc->CreateTextObject(st, pl_xz, pl_xz.origin, &dim_style);
if (rc == nullptr)
return nullptr;
const ON_Annotation* annotation = rc->Annotation();
if (nullptr == annotation)
return nullptr;
const ON_DimStyle* dim_style1 = &annotation->DimensionStyle(
activeDoc->m_dimstyle_table[activeDoc->m_dimstyle_table.FindDimStyleFromId(annotation->DimensionStyleId(),
true, true, activeDoc->m_dimstyle_table.CurrentDimStyleIndex())]);
ON_SimpleArray<ON_Object*> output;
bool rcc = RhinoCreateTextObjectGeometry(
annotation, &RhinoApp().ActiveView()->Viewport().VP(), dim_style1, 1.0, true,
activeDoc->AbsoluteTolerance(), 1.0, ON::object_type::extrusion_object, 0.4, 0.0, output);
for (int i = 0; i < output.Count(); i++)
{
if (nullptr == output[i])
return nullptr;
ON_Extrusion* ex = ON_Extrusion::Cast(output[i]);
if (nullptr == ex)
return nullptr;
ON_Brep* brrr = ex->BrepForm(nullptr);
if (brrr == nullptr)
return nullptr;
if (i == 0)
{
brr = brrr;
}
else
{
if (brrr->SolidOrientation() != 1)
brrr->Flip();
brr->Append(*brrr);
}
delete ex;
}
if (brr == nullptr)
return nullptr;
RhinoApp().ActiveDoc()->AddBrepObject(*brr);
in my code, the text object will not in the center of plane, How can I Create it in center plane?