2014-05-16 3 views
0

저는 주로 AutoCAD에서 루핑 트러스와 같은 조립식 건물 구성 요소를 설계하고 제조하는 프로젝트에 종사하고 있습니다. 우리의 목표 중 하나는 루핑 트러스를 디자인 할 때 LISP로 작성된 프로그램을 재 설계하는 것입니다. 우리는 C#에서 LISP 코드를 다시 작성하고 설정 한 현재 라이브러리에 단계적으로 구현해야합니다.AutoLISP 레거시 코드를 C#으로 변환 할 때 가장 효율적인 방법은 무엇입니까?

내 문제는 내가 C# 변환기에 기초적인 LISP를 작성해야한다는 것이다. 몇 가지 조사가 끝나면 (Google 검색 결과에 바로 그러한 것이 존재하지 않는다는 사실이 빠르게 나타남)이 레거시 코드를 어떤 방식으로 변환하는 것이 더 효율적인지 질문하게되었습니다. CIS에서 LISP 코드 조각을 분석하고 다시 작성하는 것이 더 낫지 않습니까? 아니면 AutoLISP 코드의 기본 변환기를 계속 개발해야합니까?

+0

왜? 성능이 문제가 아니거나 코드가 형편없는 경우가 아니라면 왜 Lisp 코드를 유지하지 않는 것이 좋을까요? Autolisp을 알고있는 사람들과 주위에 많은 자원과 개발자가 있으며, 곧 사라지지 않을 것입니다. 보너스 인 API는 .NET 또는 ObjectArx API보다 훨씬 안정적입니다. –

답변

2

LISP 코드의 청크를 가져 와서 C#으로 다시 작성해야합니다.

C#에서 LISP를 재 작성하는 것보다는 C#에서 범용 LISP 인터프리터를 작성하는 것이 더 적은 경우라도 LISP는 아마도 AutoCAD 명령 행을 입력하는 것처럼 AutoCAD 명령을 실행 중일 것입니다 ObjectARX 방식으로 작업합니다. 따라서 ObjectARX API를 사용하도록 명령을 변환해야합니다.

0

C#은 컴파일 된 객체 지향 프로그래밍 언어이지만 AutoLISP는 해석 식 중심 언어입니다. 그러므로 기념비적 인 노력없이 결코 하나를 다른 것으로 바꾸는 아주 직접적인 방법이 될 수는 없습니다.

AutoLISP는 재 컴파일 할 필요없이 신속하게 수정할 수있는 유연성을 가지고 있습니다. 네이티브 in-process C#을 사용하면 얻을 수있는 이점은 비슷한 LISP 접근 방식에 비해 대단히 빠르다는 것입니다. C#의 속도와 힘으로 Lisp의 유연성을 유지할 수있는 좋은 근거가 있음을 알았습니다. C#은 .NET 기본 API에서 LispFunction 명령 플래그와 ResultBuffer 유형을 활용합니다.