Skip to content

기글하드웨어기글하드웨어

인터넷 / 소프트웨어 : 윈도우즈, 리눅스, 기타 운영체제, 각종 어플리케이션, 프로그램, 소프트웨어, 인터넷, 인터넷 서비스에 대한 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

Extra Form

AutoCAD를 사용하는 많은 사람들이 AutoCAD 프로그래밍 하면 보통 LISP를 많이 떠올립니다. 하지만 AutoCAD에는 VBA 또한 내장되어 있기 때문에, VBA를 아는 사람이라면 여러 가지 도면 작업들을 자동화할 수 있지요.
 

제가 이 이야기를 왜 하느냐 하면, 오늘, 아니, 이제 자정이 지났으니 어제, 회사에서 보유하고 있는 약 5만 7천여장의 AutoCAD 도면 중 특정한 것 하나를 찾아내라는 특명(?)을 받았기 때문입니다. 비교적 희미한 저화질 그림 외에는 아무런 단서가 없는 상황이라 난감한지라, 정보 검색 범위를 줄이기 위해 먼저 DWG 파일에서 텍스트 데이터만 추출할 방도가 없을까 궁리하게 되었습니다.
 

먼저 이런 목적으로 나온 프로그램이 있나 검색해 보았습니다. 있긴 있었습니다. 근데 죄다 유료거나, 무료인 것은 실행 중 버그로 인해 종료되거나 하는 등의 상황으로 도저히 쓸 수가 없더군요. 그래서 직접 쓸 목적으로 조잡하게나마 직접 만들어 보았습니다.
 

먼저 입력 파일을 만들었습니다. cmd에서 간단하게 DIR *.dwg /s /b > DWGlist.txt 명령을 내려 각 DWG 파일의 경로가 줄 단위로 구분된 파일을 만들었지요. 그 다음에는 시행착오를 거쳐 VBA 코드를 짰습니다. AutoCAD에서 VBA를 쓰는 건 처음이라 좀 힘들었지만, 의외로 생각보다 도움말이 잘 되어 있더군요.
 

제가 짠 코드는 다음과 같습니다.

Option Explicit

Function loadFileToList(filePath)
'지정된 텍스트 파일을 1줄씩 읽어 배열로 반환한다.
    Dim line As String
    Dim fileNum As Integer
    Dim element As Variant
    Dim list() As String '동적 배열 선언
    Dim i As Long: i = 0
    
    fileNum = FreeFile()
    Open filePath For Input Access Read As #fileNum
    
    Do While Not EOF(fileNum)
        Line Input #fileNum, line
        If line <> "" Then
            ReDim Preserve list(i)
            list(i) = line
            i = i + 1
        End If
    Loop
    
    Close #fileNum
    loadFileToList = list
End Function

Function allDwgTextToList()
'DWG 파일 안의 모든 텍스트 데이터를 배열에 저장한다.
    Dim mSpaceObj As AcadObject
    Dim count As Integer: count = ThisDrawing.ModelSpace.count
    Dim i As Long
    Dim j As Long: j = 0
    Dim text As String
    Dim textList() As String '동적 배열 선언
    
    For i = 0 To count - 1
        Set mSpaceObj = ThisDrawing.ModelSpace.Item(i)
        On Error Resume Next '텍스트 속성이 없으면 그냥 무시
        text = mSpaceObj.TextString
        If text <> "" Then
            ReDim Preserve textList(j)
            textList(j) = text
            j = j + 1
        End If
    Next

    allDwgTextToList = textList
End Function

Sub listToFile(textList, filePath)
'배열을 받아, 그 배열의 내용을 지정된 파일에 기록한다.
    Dim fileNum As Integer
    Dim element As Variant
    
    fileNum = FreeFile()
    Open filePath For Append As #fileNum
    
    For Each element In textList
        Print #fileNum, Chr(9); element
    Next
    
    Write #fileNum, '빈 줄 추가
    Close #fileNum
    
End Sub

Sub main()
    '여기서 각 필요 파일 이름을 수동으로 지정
    Dim dwgFileListPath As String: dwgFileListPath = "Z:\WORK\DWGlist.txt"
    Dim resultFilePath As String: resultFilePath = "Z:\WORK\DWGtext.txt"
    
    Dim fileList() As String
    Dim element As Variant
    Dim fileNum As Integer
    Dim ReadOnly As Boolean
    
    '파일 목록 불러오기
    fileList = loadFileToList(dwgFileListPath)
    
    For Each element In fileList
        On Error Resume Next 'DWG 파일 열다가 에러가 나도 그냥 다음 파일로 넘어가기
        AutoCAD.Documents.Open element, ReadOnly = True
        
        '텍스트 내용이 있는 파일 이름 적어주기
        fileNum = FreeFile()
        Open resultFilePath For Append As #fileNum
        Write #fileNum, element
        Close #fileNum
        
        '파일을 실제로 열어, 그 중 텍스트 부분을 추출한다
        listToFile allDwgTextToList, resultFilePath
        
        AutoCAD.Documents.Close
    Next
End Sub

이걸 짜는데 모두 5시간쯤 걸렸군요. 이제 가서 좀 쉬어야겠습니다. 으헤헤헤.
 

p.s.
근데, 이걸 돌려도 과연 5만 7천장의 도면 중에서 과연 원하는 것을 찾을 수 있을지는 잘 모르겠군요.



  • profile
    순딩sheep      회사에서 살아남기 2016.10.01 11:35
    오토캐드에 VBA있는건 이 글 보고 첨 알았네요.
  • profile
    쮸쀼쮸쀼 2016.10.01 15:52
    네. 오토캐드에도 VBA가 있습니다. 근데 자세히 알아보니 2014버전인가 2015버전부터는 빠져 있어서 별도로 설치해야 하는 모양이네요.
  • profile
    쮸쀼쮸쀼 2016.10.02 04:15
    참고 : https://gigglehd.com/gg/soft/382230
  • profile
    곰양 2016.10.04 23:34
    눈팅 모드 가 많은 저로서는 쮸쀼님 글이 많이 도움이 되었네요.
    이 자리를 빌어 감사드립니다.

작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. No Image

    CPU-Z 1.92.2 발표. 마티스 리프레시와 B550 지원

    CPU-Z 1.92.2 버전이 나왔습니다. AMD 마티스 리프레시, 라이젠 3900XT/3800XT/3600XT를 지원합니다. 또 B550 칩셋, 인텔 코멧레이크의 Z490/W480/B460을 지원하고, AMD 르누아르 APU와 라이젠 3100/3300X의 지원 강화도 있습니다.
    Date2020.06.15 소식 By낄낄 Reply2 Views289
    Read More
  2. No Image

    윈도우 10 2004 업데이트, SSD 최적화 기능의 문제

    윈도우 10의 2020년 5월 업데이트, 버전 2004에서 드라이브 최적화 기능에 문제가 있다는 주장이 나왔습니다. SSD의 트림을 수동으로 실행하고, 재시작 후 다시 확인하면 트림이 되지 않은 것으로 나옵니다. 또 드라이브 조각 모음과 함께...
    Date2020.06.15 소식 By낄낄 Reply3 Views1485
    Read More
  3. No Image

    Github가 "master"를 "main"으로 변경합니다.

    MicroSoftⓒ 소유의 Github는 Black Lives Matter 운동으로 인해 기술 회사가 노예 제도에 대한 인식을 떨어 뜨리라는 압력을 받으면서 시스템에서 "마스터"라는 용어를 대체 할 계획입니다.   냇 프리드먼, Github의 최고 경영자 (CEO)가 ...
    Date2020.06.15 소식 Bytitle: 가난한카토메구미 Reply24 Views1185
    Read More
  4. No Image

    전 국민 금융·개인 정보 털렸다

    현금자동입출금기(ATM)와 포스단말기, 멤버십가맹점 해킹을 통해 1.5테라바이트(TB) 분량의 신용·체크카드 각종 정보와 은행계좌번호, 주민등록번호, 휴대전화번호 등 금융·개인 정보가 유출된 것으로 14일 확인됐다. 1.5TB...
    Date2020.06.14 소식 By낄낄 Reply21 Views1497
    Read More
  5. 네이버, '쇼핑검색광고' 1.5배 확대 추진

      네이버가 '쇼핑검색광고'를 현 4~8개에서 6~15개로 약 1.5배 늘리는 방안을 추진합니다. 이는 15일부터 진행되며 22일까지 테스트를 거친 후 정식 채용 여부가 결정된다고 합니다. 한편 쇼핑 광고가 포함된 네이버 비즈니스플랫폼의 19...
    Date2020.06.14 소식 ByBlackBird Reply14 Views841 file
    Read More
  6. 대충 리눅스 오디오 삽질한 이야기

    최근에 주로 쓰는 노트북 OS를 윈도우 10에서 리눅스(쿠분투)로 밀었습니다. 주된 사유는 이게 하스웰인 i7-4710HQ다보니 슬슬 무거워지는 윈도우 환경에서는 뭐만 해도 인텔번 상태가 되더라고요. 윈도우는 점점 가벼워지는데 돌아가야 ...
    Date2020.06.14 일반 Byzlzleking Reply17 Views2140 file
    Read More
  7. No Image

    ARP스푸핑 관련해서 질문드립니다!

    최근 휴대폰을 사용중이었는데 의심스러네트워크 감지라고떠서 ARP 스푸핑에 대해 알게되었습니다. 근데 arp -a 를 명령프롬프트에 쳤을때, 물리적 주소가 겹치면 안되는것으로 아는데, 물리적 주소가 겹치는게 두개 있는데, 두개 다 정적...
    Date2020.06.14 질문 ByHiPSoN Reply8 Views643
    Read More
  8. 맥에서 다중 언어 입력기를 위한 프로그램, KAWA

      TLDR Kawa helps users to switch between keyboard input sources by user-defined shortcuts.   네.           만으로 끝내기는 너무하니까 설명입니다.   맥의 입력기 전환은 정말 무성의의 극치라고 생각하는데요, 쿠퍼티노 밖에 나...
    Date2020.06.13 일반 By검사 Reply2 Views1107 file
    Read More
  9. 무료 조각(스컬핑) 프로그램 ZBrushCoreMini

    ZBrushCore 에 이어서 완전무료인 ZBrushCoreMini 가 나왔습니다. 홈페이지에 사용자등록만 하면 무료 다운로드가 가능합니다.           최소 시스템 사양 64-bit editions of Windows 7 or newer Mac OSX: 10.10 or above. CPU: Core2du...
    Date2020.06.13 소식 Bytitle: AMD아즈텍 Reply1 Views1083 file
    Read More
  10. No Image

    Zoom, 중국 정부의 요청을 받아 천안문 사건 관련 영상 회의 취소

    Zoom은 1989년의 천안문 사건에 대한 대규모 영상 회의 진행이 불법이라는 중국 정부의 통보를 받고, 관련 회의와 호스트 계정을 동결 처리했습니다. 4개의 영상 회의 중 하나는 중국 본토에서 참가한 사람이 없었기에 그대로 진행했으나,...
    Date2020.06.13 소식 By낄낄 Reply9 Views1289
    Read More
  11. No Image

    트위터, 읽지 않은 기사를 리트윗하려면 먼저 읽으라고 표시

    트위터의 안드로이드 앱에 새로운 기능이 추가됩니다. 아직 읽지 않은 뉴스 기사의 링크를 리트윗하려고 하면, 먼저 기사부터 읽으라는 표시가 뜬다네요. 더욱 유익한 토론을 위해서라고 합니다. 가짜뉴스 퍼트리는 알바들은 해야 할 일이...
    Date2020.06.11 소식 By낄낄 Reply2 Views635
    Read More
  12. No Image

    경찰, '토스 부정결제' 게임업체 블리자드 압수수색

    노원경찰서는 이달 4일 '모르는 사이 토스를 통해 계좌에서 돈이 빠져나갔다'는 신고를 받고 수사에 착수했다. 피해자의 계좌에서는 이달 3일 오후 11시 13분부터 6분 동안 블리자드에서 4차례에 걸쳐 총 193만6천원이 결제돼 빠...
    Date2020.06.11 소식 By낄낄 Reply13 Views907
    Read More
  13. No Image

    [네트웍] 딥러닝을 위한 전용 서버를 만들고 싶습니다.

    구조해석및최적화를 연구중인 학생입니다. 연구에 곁다리로 딥러닝을 시작하였는데, 좀 규모를 키우고 싶어 딥러닝 전용 홈서버를 구축하고 외부에서 접속해서 코딩과 학습을 시키고자 합니다.   보통 이럴경우 어떻게 네트웍을 구성해야...
    Date2020.06.11 질문 By술약한남자 Reply15 Views1112
    Read More
  14. No Image

    OpenWRT에 VPN 구축 후 내부망 접속할 수 있을까요?

    지금 WF2881 공유기에 OpenWRT 올리고 그 아래에 라즈베리 파이를 연결해서 사용하고 있습니다.   내부망에선 FTP, 삼바, SSH를 이용하고 외부에선 WebDAV를 이용하는데 포트를 몇개 열어서 외부에서 트랜스미션과 파일관리자(droppy)에 ...
    Date2020.06.11 질문 By실핀 Reply7 Views1125
    Read More
  15. No Image

    윈도우 10 1903, 재부팅 후 USB 프린터를 쓰지 못하는 결함

    윈도우 10 1903 이상 업데이트에서 시스템을 끄고, USB 연결 프린터의 전원을 끄고, 윈도우를 재시작하면 USB 프린터 포트가 목록에서 사라져 인쇄가 안 되는 문제가 발생하는 경우가 있습니다. USB 프린터 드라이버에 언어 모니터가 포함...
    Date2020.06.10 소식 By낄낄 Reply3 Views1176
    Read More
목록
Board Pagination Prev 1 ... 336 337 338 339 340 341 342 343 344 345 ... 572 Next
/ 572

최근 코멘트 30개
아이들링
00:20
스와마망
00:16
Kylver
00:15
포인트 팡팡!
00:14
슬렌네터
00:14
연금술사
00:14
이게뭘까
00:08
급식단
00:07
급식단
00:06
아스트랄로피테쿠스
00:04
가네샤
00:03
가네샤
00:00
가네샤
00:00
가네샤
00:00
가우스군
23:59
가네샤
23:59
가네샤
23:58
그림자
23:53
낄낄
23:50
그림자
23:42
미쿠미쿠
23:38
Colorful
23:24
Sin라면
23:22
낄낄
23:21
TrustNoOne
23:18
메이드아리스
23:16
메이드아리스
23:14
TrustNoOne
23:14
메이드아리스
23:14
메이드아리스
23:12

한미마이크로닉스
더함
MSI 코리아
AMD

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소