티스토리 뷰
블럭 선택과 필터에 대하여...
본 코드는 BricsCAD에서 사용중인 코드입니다. AutoCAD와 다를수 있으니 참고바랍니다.
코드 전체글: [CAD/VBA] - 자동출력 VBA
이 글은 코드 전체 중 블록 설정에 대한 부분만 있습니다.
코드 중 수정이 필요하다고 판단되는 부분은 블록이름입니다.
블럭 이름
'출력 폼 블럭의 이름 Dim BName(2) As String BName(0) = "A$C7E9A3D3E" BName(1) = "A$C220D1AB8" BName(2) = "Form A4" Dim BNC As Integer BNC = UBound(BName) + 2 ReDim FilterType(BNC) As Integer ReDim FilterData(BNC) As Variant FilterType(0) = -4 FilterData(0) = "<OR" For i = 1 To BNC - 1 FilterType(i) = 2 FilterData(i) = BName(i - 1) Next FilterType(BNC) = -4 FilterData(BNC) = "OR>" SelObj.SelectOnScreen FilterType, FilterData
- 189~191행에 들어있는 이름은 제가 사용하는 출력 폼 블럭 이름입니다. 현재 3개가 정의되어 있는데 이 부분을 수정하시면 됩니다. 3개 보다 더 많이 사용해야 한다면 188행의 배열수를 늘려 추가하시면 됩니다.
- 198~205행 내용은 필터에 관한 내용인데 이 부분은 FilterType과 FilterData의 조합으로 이루어집니다.
1. FilterType : DXF 코드를 사용하며 아래 나와있는 정도만 아셔도 됩니다.
0 : Object Type (String)
오브젝트 타입 종류.
예 : "Line", "Circle", "Arc"
2 : Object Name (Sting)
객체의 이름.
예 : 본 소스에 사용된것 처럼 블럭이름.
8 : Layer Name (String)
레이어 이름.
예 : "Layer 0"
62 : Color Number (Integer)
컬러 색상.
예 : 7 (캐드의 색상번호 0~255)
-4 : 연산작업시 사용
OR, AND 연산에 사용
예 : 본 소스에 OR 연산 사용
2. FilterData : 타입에서 선택한 데이터의 값을 넣는 부분.
- 본 소스 필터를 이용하면 도면 영역에서 189~191행 BName에 입력한 블럭만 선택됩니다.
코드 전체글: [CAD/VBA] - 자동출력 VBA
사용자 변경사항 1. 출력순서 변경
사용자 변경사항 2. 프린터 설정
'프로그래밍 > CAD' 카테고리의 다른 글
블럭 삭제 VBA (0) | 2018.02.09 |
---|---|
자동출력 VBA - 프린터 설정 (0) | 2018.02.09 |
자동출력 VBA - 출력순서 (0) | 2018.02.09 |
자동출력 VBA (1) | 2018.02.08 |
VBA에서 사용하는 기초 LISP (0) | 2018.02.06 |