2020년 1월 10일

sirius 라이브러리를 활용한 스캐너 및 레이저 제어 방법 (예제 3)

이번시간에는 하나의 문서(Document) 데이타를 뷰어와 에디터에 같이 처리하는 것을 예로 들어보겠습니다.

아래와 같이 하나의 폼안에 각각 에디터(SiriusEditorForm) 와 뷰(SiriusViewerForm)을 각각 끌어다 놓습니다. 해당 인스턴스의 이름이 siriusEditorForm1, siriusViewerForm1 으로 생성되었겠지요.



자 그럼, 다음과 같이 하나의 문서 데이타를 에디터및 뷰어에 연결해 줍니다.

public FormMain()
{
    InitializeComponent();
    SpiralLab.Core.Initialize();

     var doc = new DocumentDefault();
     siriusEditorForm1.Document = doc;
     siriusViewerForm1.Document = doc;
...
}

만약 에디터에서 사용자가 신규 문서(Document)를 열(Open) 경우, 이 변경사항이 뷰어에도 알려져야 동일한 데이타를 기반으로 화면에 출력이 되므로, 아래의 이벤트 핸들러와 같이 구현해 줍니다.

{
...
  /// 소스 문서(IDocument) 가 변경될경우 다른 멀티 뷰에 이를 통지하는 이벤트 핸들러 등록
    siriusEditorForm1.OnDocumentSourceChanged += SiriusEditorForm1_OnDocumentSourceChanged;
...
}

private void SiriusEditorForm1_OnDocumentSourceChanged(object sender, IDocument doc)
{
    /// 변경된 문서 소스 업데이트
    siriusEditorForm1.Document = doc;
    siriusViewerForm1.Document = doc;
}


자 그럼 왼쪽 에디터에서 외부의 DXF 파일을 가져오기(Import) 를 하면, 위와 같이 오른쪽 뷰어에도 해당 데이타가 출력 되는것을 확인할수있습니다. 심지어 왼쪽 편집기에서 개체(Entity)를 이동, 삭제, 추가 등을 해보시면 그 수정사항이 고스란히 오른쪽 뷰어에도 반영이 됩니다. 위 예제에서는 결국 하나의 데이타 문서 소스(Document)를 가지고 여러개의 뷰, 즉 1 Source Multiple View 가 가능함을 보여주고 있습니다.

댓글 없음:

댓글 쓰기

시리우스 라이브러리 홈페이지 오픈

현재 시리우스(Sirius) 라이브러리라는 제품을 개발하고 이를 소개하는 홈페이지를 오픈 하였습니다. 관심있는 분들의 많은 방문 요청드립니다. 앞으로 업데이트 소식및 변경사항은 스파이럴랩 홈페이지를 통해 진행할 예정입니다. 스파이럴랩 홈페이지 :  h...