How to add a hyperlink to an MTEXT entity?

  1. FAQ
  2. »
  3. Examples

OdWriteEx sample contains creating a circle with hyperlink. Search DbFiller.cpp for "hyperlink".

Here is sample code for creating MTEXT with hyperlink in field. Code:

OdDbMTextPtr pMText = OdDbMText::createObject();
  pMText->setDatabaseDefaults(pRecord->database());
  pRecord->appendOdDbEntity(pMText);

  /**********************************************************************/
  /* Set some properties                                                */
  /**********************************************************************/

  pMText->setLocation(point);
  pMText->setTextHeight(0.2);
  pMText->setAttachment(OdDbMText::kTopLeft);
  pMText->setContents(OD_T("Sample Hyperlink"));
  pMText->setWidth(w * 7.0 / 8.0);
  pMText->setTextStyle(styleId);
  
  OdDbFieldPtr pTextField3 = OdDbField::createObject();
  OdDbFieldPtr pField3_1 = OdDbField::createObject();

  OdDbObjectId textFldId3 = pMText->setField(OD_T("TEXT"), pTextField3);
  OdDbObjectId fldId3_1 = pTextField3->setField(OD_T(""), pField3_1);

  pField3_1->setEvaluationOption(OdDbField::kAutomatic);
  OdString fc6(OD_T("\\AcVar \\href \"http://forum.opendesign.com/showthread.php?14172-How-do-I-add-a-hyperlink-to-an-MTEXT-entity##Open Design Alliance Forum > Teigha, C++ version#0\""));
  pField3_1->setFieldCode(fc6);

  OdDbEntityHyperlinkPEPtr    hpe = pField3_1;
  OdDbHyperlinkCollectionPtr  urls = hpe->getHyperlinkCollection(pField3_1);
  
  urls->addTail(L"http://forum.opendesign.com/showthread.php?14172-How-do-I-add-a-hyperlink-to-an-MTEXT-entity##ForumLink#0\"", 
    L"Open Design Alliance Forum > Teigha, C++ version");
  
  hpe->setHyperlinkCollection(pField3_1, urls);

  pTextField3->setEvaluationOption(OdDbField::kAutomatic);
  OdString fc7(OD_T("HyperLink sample %<\\_FldIdx 0>%"));
  pTextField3->setFieldCode(fc7, OdDbField::FieldCodeFlag(OdDbField::kTextField | OdDbField::kPreserveFields));

  pField3_1->evaluate(OdDbField::kAutomatic);