AutoCAD 엔티티에 하이퍼링크 추가 방법

AutoCAD .NET API를 사용하여 엔티티에 하이퍼링크 생성하는 방법?

원본 게시물

AutoCAD에서 엔티티는 하이퍼링크와 연결될 수 있습니다. 사용자는 엔티티의 하이퍼링크를 통해 참조된 위치로 이동할 수 있습니다. AutoCAD 엔티티에 적용할 수 있는 하이퍼링크 유형에는 URL, 파일, DWG 파일 타겟(모델, 레이아웃 등)이 있습니다. 이 글에서는 .NET API를 사용하여 엔티티에 URL 형식의 하이퍼링크를 생성하는 방법을 보여줍니다. 코드는 C#으로 작성되었습니다.

[CommandMethod("createHLink")]

static public void CmdCreateHyperLink()

{

  Editor ed = Application.DocumentManager.

    MdiActiveDocument.Editor;

  Database db = Application.DocumentManager.

    MdiActiveDocument.Database;

  PromptEntityResult selectedEntity =

    ed.GetEntity("엔티티를 선택하세요: ");

  ObjectId objectId = selectedEntity.ObjectId;

  try

  {

    using (Transaction trans =

      db.TransactionManager.StartTransaction())

    {

      // 엔티티 가져오기

      Entity ent = trans.GetObject(objectId,

        OpenMode.ForWrite) as Entity;

 

      // 엔티티의 하이퍼링크 컬렉션 가져오기

      HyperLinkCollection linkCollection = ent.Hyperlinks;

 

      // 새로운 하이퍼링크 생성

      HyperLink hyperLink = new HyperLink();

      hyperLink.Description = "ADN DevBlog";

      hyperLink.Name = "ADN DevBlog";

      hyperLink.SubLocation =

        "http://adndevblog.typepad.com/autocad/";

 

      // 하이퍼링크를 컬렉션에 추가

      linkCollection.Add(hyperLink);

      trans.Commit();

    }

  }

  catch (System.Exception ex)

  {

    ed.WriteMessage(ex.Message);

  }

}

문제 발생:

같은 작업을 반복 실행하면,

후속 작업 시 기존 하이퍼링크를 교체하려고 하면,

직접 삭제하면 프로그램이 중단되는 문제가 발생합니다.

게시판에 올라온 VB 코드는 이해가 안 되어,

C#으로 변환하지 못했습니다.

나는 스스로 다음과 같은 방법을 시도했고,

결과적으로 원하는 대로 작동했습니다:

 if (ent.Hyperlinks.Count > 0)
 {
     //ent.Hyperlinks[0].Name = csvName;
     HyperLink hl = new HyperLink();
     hl.Name = csvName;
     hl.Description = ent.Hyperlinks[0].Description;
     ent.Hyperlinks.RemoveAt(0);
     ent.Hyperlinks.Insert(0,hl);
     ///2020년 2월 20일
     ///하이퍼링크를 직접 지우면 프로그램이 중단됨
     ///add로 새로운 링크를 추가해도 기존 링크가 여전히 표시됨
     ///RemoveAt(0)도 효과 없음
     ///Insert(0,hl)로 새로운 링크를 삽입하면 원하는 결과 얻음
     ///정말 이상한 일이죠!
 }

태그: AutoCAD .NET API 하이퍼링크 엔티티 C#

8월 7일 02:33에 게시됨