티스토리 뷰
반응형
도면 정렬에 대하여...
본 코드는 BricsCAD에서 사용중인 코드입니다. AutoCAD와 다를수 있으니 참고바랍니다.
코드 전체글: [CAD/VBA] - 자동출력 VBA
이 글은 코드 전체 중 출력 순서에 대한 부분만 있습니다.
- 회사마다 도면을 정렬하는 방식이 달라 4가지 방식으로 구분 하였으니 그 중 자신의 회사와 맞는 방식을 확인하여 코드를 수정하시기 바랍니다.
출력 순서
Enum 문(열거형변수)으로 정의.
Enum PrtSquence
TD
TU
DD
DU
End Enum
1. TD :
한줄 출력후 아래로 내려오며 반복.
정렬기준점은 좌측하단.
2. TU :
한줄 출력후 아래로 내려오며 반복.
정렬기준점은 좌측상단.
3. DD :
한줄 출력후 위로 올라가며 반복.
정렬기준점은 좌측하단.
4. DU :
한줄 출력후 위로 올라가며 반복.
정렬기준점은 좌측상단.
위 스타일중 맞는형식을 사용하시면 됩니다.
저는 3번째 형식을 사용중이여서 아래와 같이 사용했습니다.
PrtSq = DD
정렬
'구조체 정의
Type PrtArea
X1 As Double
Y1 As Double
X2 As Double
Y2 As Double
End Type
'----------------------------------------------------------------------------------
Dim Doc As AcadDocument
'----------------------------------------------------------------------------------
'정렬
Sub Sort(ByRef Data() As PrtArea, Sq As PrtSquence)
Dim lb As Integer, ub As Integer
Dim i As Integer, J As Integer
lb = LBound(Data)
ub = UBound(Data)
'상하 정렬
For i = lb To ub - 1
For J = i + 1 To ub
'내림차순
If Sq = TD Or Sq = TU Then
'좌측하단기준
If Sq = TD Then
If Data(i).Y1 < Data(J).Y1 Then Call CData(Data(i), Data(J))
'좌측상단기준
Else
If Data(i).Y2 < Data(J).Y2 Then Call CData(Data(i), Data(J))
End If
'오름차순
Else
'좌측하단기준
If Sq = DD Then
If Data(i).Y1 > Data(J).Y1 Then Call CData(Data(i), Data(J))
'좌측상단기준
Else
If Data(i).Y2 > Data(J).Y2 Then Call CData(Data(i), Data(J))
End If
End If
Next
Next
'좌우 정렬
For i = lb To ub - 1
For J = i + 1 To ub
'하단기준
If Sq = TD Or Sq = DD Then
If Data(i).X1 > Data(J).X1 And Int(Data(i).Y1) = Int(Data(J).Y1) _
Then Call CData(Data(i), Data(J))
'상단기준
Else
If Data(i).X1 > Data(J).X1 And Int(Data(i).Y2) = Int(Data(J).Y2) _
Then Call CData(Data(i), Data(J))
End If
Next
Next
End Sub
'----------------------------------------------------------------------------------
'데이터 교환
Sub CData(ByRef D1 As PrtArea, ByRef D2 As PrtArea)
Dim tmp As PrtArea
tmp = D2
D2 = D1
D1 = tmp
End Sub
17행 Doc를 전역 변수로 사용했습니다.
UCS 초기화 함수나 다른 함수에서 접근이 가능하게 하기 위함입니다.
정렬에 대해선 따로 설명할필요는 없는것 같아 넘어가겠습니다.
코드 전체글: [CAD/VBA] - 자동출력 VBA
사용자 변경사항 2. 프린터 설정
사용자 변경사항 3. 출력 블럭 설정
반응형
'프로그래밍 > CAD' 카테고리의 다른 글
| 자동출력 VBA - 출력 블럭 설정 (0) | 2018.02.09 |
|---|---|
| 자동출력 VBA - 프린터 설정 (0) | 2018.02.09 |
| 자동출력 VBA (1) | 2018.02.08 |
| VBA에서 사용하는 기초 LISP (0) | 2018.02.06 |
| CAD VBA 시작 (1) | 2018.02.05 |
댓글
