2. 레이어 변경 (현재 레이어로) [VB]




1. Form_Load

공통루틴에 설명된 프로그램 초기화 과정을 Form 로드시에 수행합니다.
그리고, 위 그림과 같이 현재 레이어를 표시해 줍니다.

Private Sub Form_Load()

  ' 프로그램 초기화
  InitApplication
  ' 현재 레이어 표시
  ShowCurrentLayer

End Sub

2. ShowCurrentLayer

아래와 같이 도면으로 부터 현재 레이어명을 가져와서 TextBox(txtLayer)에 표시합니다.

' 현재 레이어를 라벨에 표시한다.
Private Sub ShowCurrentLayer()

  ' CLAYER 값으로 레이어 표시
  txtLayer.Text = objAcDoc.GetVariable("CLAYER")

End Sub 

3. ChangeLayer

strLayer라는 인수를 이용하여 레이어 명을 입력받아 선택한 엔티티들의 레이어를 변경한다.

' 사용자가 선택한 엔티티들을 지정한 레이어로 변경한다.
Private Sub ChangeLayer(strLayer As String)

  Dim objSS As AcadSelectionSet
  Dim objEnt As AcadEntity
  Dim nCount, i As Integer

  ' 레이어가 지정되지 않으면 실행종료
  If strLayer = "" Then
    MsgBox "레이어가 지정되지 않았습니다!"
  Exit Sub
  End If

  ' 엔티티를 선택한다.
  Set objSS = objAcDoc.ActiveSelectionSet
  ' 현재 선택 삭제
  objSS.Clear
  ' 화면상에서 선택
  objSS.SelectOnScreen

  ' 엔티티 개수 확인
  nCount = objSS.Count
  ' 엔티티 개수만큼 반복
  For i = 0 To nCount - 1
  ' i번째 엔티티 얻기
  Set objEnt = objSS.Item(i)
  ' 해당 엔티티 레이어 변경
  objEnt.Layer = strLayer
  Next

  ' 화면 갱신
  objAcApp.Update

End Sub

4. cmdSelect_Click

엔티티 선택 버튼에 대한 처리를 수행합니다.

Private Sub cmdSelect_Click()

  Hide
  GetActiveDocument
  ' 현재 레이어로 변경
  ChangeLayer (txtLayer.Text)
  Show

End Sub

5. cmdExit_Click

종료 버튼에 대한 처리를 수행합니다.

Private Sub cmdExit_Click()

  ' 프로그램 종료
  Unload Me

End Sub



관련 자료
disk [1] 레이어 변경 (현재 레이어로) [VB & VBA] (18KB)

Last updated 2002-09-07 by choi@moon-sun.com
Home