2009-04-22 5 views
9

오늘 작성한 CAD 응용 프로그램 (Rhino, Autocad)은 무엇이며 내부적으로 어떻게 구성되어 있습니까?작성된 CAD 응용 프로그램은 무엇이며 어떻게 구성됩니까?

예를 들어 Autocad와 Rhino를 썼지 만, 다른 예제들도 듣고 싶습니다. 나는 백엔드가 다국어로 쓰여졌는지, 그리고 어떻게 구성되어 있는지, 그리고 프론트 엔드 (GUI)를 어떻게 실시간으로 처리하는지에 관심이있다. 그들은 오늘날의 시장에서 오픈 소스 솔루션이 그것을 감당하지 못할 것이라고 생각하기 때문에 원시 윈도우 API 나 자체 라이브러리를 사용하고 있습니까? 나는 틀릴 수도 있습니다 ...

대부분의 사람들이 알고있는 것처럼, 그들은 실시간으로 비교적 복잡한 회전 작업을 처리합니다 (음영이 재미 있지 않습니다). 저는 최근에 여러 패키지를 사용하여 몇 가지 실험을 해왔습니다. 일부 대형 모델의 경우 속도의 상당한 차이가 있음을 발견했습니다 (예 : 프로그램 회전 (대형 풀 모델)). . 그래서 나는 그들의 내부에 대해 궁금해하고 있습니다 ...

누군가가 주제에 관한 어떤 책을 알고 있다면, 나는 그것을 듣고 싶어합니다.

답변

7

우리 회사는 AutoCAD의 등록 된 개발자이므로 확실한 것은 C++로 작성되었습니다. .Net 래퍼는 물론 COM 인터페이스도 제공합니다. 또한 그래픽 디스플레이가 구성 요소 화되어 교체 될 수 있습니다. 역사상 그 길은 크로스 플랫폼이었습니다. 그러나 Windows는 약 10 년 동안 만 사용되었으며 지금까지 본 모든 Windows 기능을 활용합니다. Open Design Alliance에 관심이있을 수 있습니다.

4

오픈 소스 프로젝트 BRL-CAD가 관심을 가질 수 있습니다.

5

AutoLISP는 수년 동안 AutoCAD를 프로그래밍하는 데 사용되어 온 뚜렷한 맛입니다. 매우 강력하고 전혀 친절하지 않습니다. AutoCAD (및 대부분의 업종)에는 약 10 년 동안 VBA가 내장되어 있습니다. 일종의 강력하고 매우 친절합니다. VBA 프로젝트는 호스트 프로그램의 내부 메커니즘에 의해로드되는 별도의 파일에 저장됩니다. 최신 버전 (현재 2010)에는 기본적으로 VBA가 더 이상 포함되지 않습니다. 별도의 VBA 작동 코드를 설치해야합니다. 이것은 VBA (그 문제에 대한 VB6)가 어느 시점에서 과거의 일이 될 것이라는 사실을 우리에게 알려주는 것입니다. 현재 .NET 플랫폼이 선호됩니다. VB.NET, C# .NET, C++가 일반적으로 사용됩니다. 일부는 F # 및 IronPython과 같은 다른 .NET 언어로 실험했습니다.

+0

흥미에 따라 uild. 귀하의 의견으로는, acad 내의 향후 스크립팅 옵션은 무엇이 될까요? 당신이 말했듯이, 그들은 아마도 vba를 떠날 것입니다. 당신은 lisp에 대해서도 같은 일이 일어날 것이라고 생각합니까? 현재로서는 "자동"과 "시각적"의 두 가지 버전이 있습니다. – Rook

+0

Autodesk에서 고객에게 의존하는 레거시 리스프 코드가 많이 있습니다. 나는 추측하고있다. 그러나 나는 그들이 수년 동안 혀짤배기를 버릴 것이라고 생각하지 않는다. VBA가 사라지는 한, 같은 이유로 여러 해 동안 그렇게 될 것입니다. VSTA는 향후 옵션 일 수 있습니다. (VBA의 .NET 버전) 지금은 C#쪽으로 기울어 진 .NET으로 보인다. – mohnston

+1

VBA가없는 AutoCAD 2010 shippied * (별도로 다운로드 할 수 있음). VSTA는 CAD 추가 기능의 미래입니다. 3 년마다 이진 형식을 변경하므로 대상 버전과 다시 컴파일해야합니다. –

7

CATIAv5, Pro/Engineer 및 Solidworks와 같은 3D Mechanical CAD 소프트웨어는 대부분 C++로 작성되며 가끔 기본 API를 고객에게 게시하기위한 얇은 COM 인터페이스로 작성됩니다.

이러한 응용 프로그램은 매우 크기가 크고 여러 팀에 의해 개발되고 있기 때문에 모듈은 모듈을 변경으로부터 보호하기위한 인터페이스/구현 패턴과 같은 대규모 C++ 디자인 원칙에 의존합니다.

그들은 같은 몇몇 서브 시스템으로 구성된다 : 기저의 OS

  • GUI, 대화 및 사용자 상호 작용
  • 차원 렌더링을위한 프레임 워크에서의 추상화를 제공하기

    • 기본 틀 (주로 사용 일부 사용자 정의 장면 그래프 레이어가있는 OpenGL)
    • 테셀레이션 모듈이있는 기하학적 커널 (렌더러에 지오메트리가 표시 될 수 있도록)
    • 파라 메트릭 모델러 b 기하학적 커널
    • 및 다른 도메인을 대상으로 많은 특정 모델러 (기계, 제도, 시뮬레이션, ...)