응용프로그램 개발도구및개발사례 -...

19
응용프로그램 개발도구 및 개발사례 ㈜디 에스 이 진천

Transcript of 응용프로그램 개발도구및개발사례 -...

Page 1: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

응용프로그램개발도구및개발사례

㈜디 씨 에스이 진천

Page 2: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

목차

Page 3: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

SketchUp에서 기본적으로 제공하는 API(Application Programming Interface)로프로그래밍 전문가가 아니더라도 쉽게 배워서 사용할 수 있어

SketchUp의 편의성 및 확장성을 도모하는데 유용한 프로그래밍 언어다.

개발자: 마츠모토유키히로(松本行弘), Ruby어소시에이션 이사장“내가 아는 한 Ruby만큼 즐기는 것에 대해 초점을 맞춘 언어는 없다.

Ruby는 순수하게 즐기기 위해 설계되었고, 언어를 만드는 사람, 사용하는 사람, 배우는 사람 모두가 즐기는 것이 목적이다.“

Peal: 6월의 탄생석Ruby: 7월의 탄생석

Page 4: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

• 가독성을 중시한 스크립트 언어• 인터프리터 방식 ↔ 컴파일 방식• 순수 오브젝트 지향 언어: 정수나 문자열을 포함한 데이터형은 모두 오브젝트

Ruby의존재가치는 ‘즐기는것‘

Ruby는 언어 사양에서 가장 중요시하고 있는 것이스트레스 없는 프로그래밍을 즐기는 것(enjoy programming)이Peal, Python과의 결정적 차이점이다.

Page 5: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

‘Ruby 콘솔’ 대화상자 창을 열어 코드를 직접 입력스크립팅 언어의 장점을 십분 발휘하는 실행 방법예: Sketchup.active_model.entities.add_line [0,0,0], [100,100,100]

Sketchup.active_model.entities.add_line [0,0,0], [100,100,100]

Page 6: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

작성한 코드를 자동 로드하여 실행

1. 코드를 작성한 후 저장: 확장자는 *.rb2. 작성된 코드 파일(*.rb)을 Plugins폴더에 삽입

폴더: C:\Users\사용자 이름\AppData\Roaming\SketchUp\SketchUp 2017\SketchUp\Plugins

3. SketchUp 실행과 함께 자동 로드됨

Page 7: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

1. 설치 프로그램을 압축 파일로 만들어 확장자를 *.rbz으로 변환2. 메뉴에서 [창(W)]-[확장 관리자(Extension Manager)]를 클릭3. 확장 관리자 대화상자에서 [확장 설치]를 클릭4. 설치 파일을 선택5. 해당 폴더에 설치됨

확장 설치

설치 파일(*.rbz)

Page 8: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

C Extension: C언어로 작성하여 컴파일한 C 라이브러리(.so 또는 .dll)

루비에서 이 라이브러리를 로드하여 사용로드된 확장 라이브러리에 정의된 함수 및 클래스는 루비에서 호출하여 사용

Ruby 코드에 다음을 추가하여 로드함

require ‘myext’

if Sketchup.is_64bit?Sketchup::require 'co-me/Prg/x64/suex_come.so'

elseSketchup::require 'co-me/Prg/x86/suex_come.so'

End

Page 9: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

C Extension 라이브러리

(suex_come.so)

C Extension 함수

루비: C Extension 라이브러리로드

루비: C Extension 함수호출

Page 10: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

Extension Warehouse를 통해다양한 어플리케이션을 활용 가능

SketchUp에서 부족한 기능은Extension Warehouse를 통해서 보완-. 분야별(건축, 설비, 토목, 인테리어 등) 앱-. 유틸리티-. 랜더링 및 애니메이션-. 3D 프린터-. 에너지분석

Page 11: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

SketchUp 내에서 덕트를 작도하는 프로그램

- 덕트의 각 사이즈를 지정해서 작도하는 수동 작도

덕트 수동 작도

Page 12: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

SketchUp 내에서 덕트를 작도하는 프로그램

- 경로를 작도한 후 사이즈를 계산하고,

계산된 사이즈에 맞춰 더블라인 덕트를 작도하는 자동 작도

덕트 자동 작도

Page 13: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

; 좌표 정의; 시작점 pt1의 좌표(x,y,z) (setq pt1 (list 0.0 0.0 0.0)); 종료점 pt2의 좌표(x,y,z) (setq pt2 (list 100.0 100.0 0.0))

; 도형 작성(command “LINE” pt1 pt2 “”))

Page 14: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

pt1 = [0, 0, 0] # 시작점 pt1의 좌표(x,y,z) pt2 = [1000, 1000, 1000] # 종료점 pt2의 좌표(x,y,z) # Sketchup Ruby API(application programming interface )의# ① 기하학 모델 엑세스model = Sketchup.active_model# ② 직선 엔티티 작성model.entities.add_line(pt1, pt2)

# ①②를 한 행으로도 표현 가능model = Sketchup.active_model.entities.add_line(pt1,pt2)

Page 15: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

구분 SketchUp Ruby AutoCAD LISP

좌표1 pt1 = [0, 0, 0] (setq pt1 (list 0.0 0.0 0.0))

좌표2 pt2 = [100, 100, 0] (setq pt2 (list 100.0 100.0 0.0))

선분 작도 model = Sketchup.active_model.entities.add_line(pt1,pt2)

(command “LINE” pt1 pt2 “”)

Page 16: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

구분 SketchUp AutoCAD

개발언어 Ruby, C C, C++, C#, AutoLISP, Visual LISP, JavaScript

사용자 인터페이스 HtmlDialog, WebDialog MFC, WinForm, DCL

객체 선택 윈도우 선택, 크로싱 선택을 위해 클래스를 상속받아 직접 구현

이미 구현된 API 사용 가능

데이터 저장 속성(Attribute) 사용

엔터티.set_attribute(dict_name, key, value)

확장데이터(XDATA) 사용

소스코드 보호 스크립트 언어의 특성 상 루비 소스코드 보호는한계중요한 소스 코드는 C 확장을 이용

AutoLISP의 경우 소스코드 보호는 한계.net으로 개발할 경우 소스코드 보호를 위해별도의 난독화 프로그램

Page 17: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

소스코드 보호스크립트 언어 특성상 한계가 있음주요 코드는 C Extension로 코딩하여 보호

CAD 자체의 특성 파악이 우선SketchUp이 가진 특성(객체선택, 좌표지정 등)을 잘 파악한 후 개발

관련 라이브러리 부족UI 구성(HTML), 객체 선택 등에서 약간 부족함을 느끼며, 보완될 것으로 예상C# WinForm, C++ MFC를 지원하지 않음

개발 시간일반 어플리케이션 프로그램에 비해서는 조작 시간이 필요타 CAD(AutoCAD)와 비교해 크게 차이는 없음

Page 18: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

SketchUp은 응용 소프트웨어 개발을 위한 API인스크립트 언어 Ruby를 활용하면 다양한 확장 기능을 구현할 수 있다.

C Extension 등 다른 개발도구의 라이브러리를 호출하여보다 광범위한 개발이 가능하다.

3차원 모델링에 특화된 SketchUp 기능에Ruby를 활용한 확장 기능을 추가하면

보다 막강한 3D 모델링 + α가 실현될 것이다.

Page 19: 응용프로그램 개발도구및개발사례 - SHAPERdraft.shaper.kr/edm/20170627_basecamp/html/files/Track3/... · 2017-07-11 · 개발언어 Ruby, C C, C++, C#, AutoLISP, Visual

이 진천