3. 레이어 변경 (선택된 레이어로) [VB]




1. Form_Load

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

Private Sub Form_Load()

  ' 프로그램 초기화
  InitApplication
  ' 현재 레이어 리스트 표시
  ShowLayerList cmbLayer

End Sub

2. ShowLayerList

아래와 같이 도면으로 부터 레이어 리스트를 가져와서 지정한 ComboBox에 표시합니다.

' 레이어 리스트를 콤보에 표시한다.
Private Sub ShowLayerList(ctrlCmb As ComboBox)

  Dim cnt, i

  ' 현재 콤보 내용을 모두 삭제한다.
  ctrlCmb.Clear

  ' 레이어 개수를 얻는다.
  cnt = objAcDoc.Layers.Count
  For i = 0 To cnt - 1
    ' 레이어 이름을 콤보에 추가한다.
    ctrlCmb.AddItem (objAcDoc.Layers(i).Name)
  Next

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. cmdLayer_Click

레이어 버튼에 대한 처리를 수행합니다. 레이어 리스트를 ComboBox(cmbLayer)에 표시해 줍니다.

Private Sub cmdLayer_Click()

  GetActiveDocument
  ' 현재 레이어 리스트 표시
  ShowLayerList cmbLayer

End Sub

5. cmdSelect_Click

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

Private Sub cmdSelect_Click()

  Hide
  GetActiveDocument
  ' 선택된 레이어로 변경
  ChangeLayer (cmbLayer.Text)
  Show

End Sub

6. cmdExit_Click

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

Private Sub cmdExit_Click()

  ' 프로그램 종료
  Unload Me

End Sub



관련 자료
disk [1] 레이어 변경 (선택된 레이어로) [VB & VBA] (21KB)

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