티스토리 뷰
반응형
도면 정렬에 대하여...
본 코드는 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 |
댓글