XM MDL Programming - #7(Element Descriptors)
이 부분은 본래 MDL Programming하기 전에 반드시 알아야만 하는 부분입니다.(뒷늦게 올리게 되었네요) 프로그래밍에서 주로 하는 일은 Element들을 다루는 일일 것입니다. 따라서 이 Element들이 어떻게 저장되어 있는지를 꼭 알아야만 합니다.(ARX를 시작하기 전에 AutoCAD Element들이 어떻게 저장되어 있는지 알아야만 하는...
이 부분은 본래 MDL Programming하기 전에 반드시 알아야만 하는 부분입니다.(뒷늦게 올리게 되었네요) 프로그래밍에서 주로 하는 일은 Element들을 다루는 일일 것입니다. 따라서 이 Element들이 어떻게 저장되어 있는지를 꼭 알아야만 합니다.(ARX를 시작하기 전에 AutoCAD Element들이 어떻게 저장되어 있는지 알아야만 하는...
ARX에서도 AutoCAD application을 활성화(?)시키지 않고 작업을 수행할수 있듯이, MDL 프로그램밍에서 그렇게 유사하게 작업을 수행할수 있습니다. application이 Background mode로 실행되고 있는지 여부는 Entry point 함수의 두번째 인자를 검사함으로써 알수 있습니다. 두번째 인자가 “MS_INITAPPS” ...
이번에는 간단히 예제로 Line과 Text를 생성하는 방법에 대해 알아보도록 합시다. 다른 Element들에 대해서는 생성하는 함수만 알면 아래의 루틴대로 하면 아무 어려움 없이 원하는 Element들을 생성할수 있습니다. 루틴이라고 해봤자 생성하는 함수로 원하는 Element를 생성한 후에 Property를 설정하고 add하는 것 밖에 없습니다. ...
이번에는 dgn 파일에 있는 element들을 찾는 방법을 알아보도록 합시다. 먼저 간단한 코드를 먼저 보시죠. int ScanFile(UShort* typeMask , constintmaskSize) { intstatus = 0; intnElemCnt = 0; intnElemType; ULong elemAddr[50]...
이번에는 Command를 사용하는 방법에 대해서 알아보도록 하죠. 일단 먼저 MSTN의 리소스 파일을 이용하여 Command 구조를 선언합니다. 이것을 컴파일하면 .ma 파일이 생성됩니다. CT_BASIC이 최상위 Command Table 이름이고, CT_DELETE라는 하위 Command Table을 필요(REQ)로 합니다. CT_DELETE라...
XM MDL 프로그래밍을 하면 크게 *.ma 파일과 *.dll 파일이 생깁니다. *.ma 파일에는 거의 아무런 정보를 가지고 있지 않고 dll의 링크 정보를 가지고 있습니다. 대부분의 소스 코드는 컴파일 되어 dll 파일로 생기게 됩니다.\ ma 파일은 전통적으로 MSTN 컴파일러로 만듭니다.(make 파일등이 필요합니다.) dll 파일은 MS V...
이번에는 다이얼로그를 생성하는 방법을 알아봅시다. V7에서는 다이얼로그 하나 생성하기가 어려웠었는데, XM 이후부터는 MFC 다이얼로그를 상속해서 사용하니까 MFC에 익숙한 사람은 아무 어려움 없이 사용할수 있습니다. 한 마디로 쉬워요. 아시다시피 모달/모달리스 다이얼로그가 있는데 모달 보다는 모달리스 다이얼로그가 유용하게 사용됩니다. 다이얼...
FrameWork을 자동으로 로딩하는 것에 대해 알아봅시다. 물론 PC에 FrameWork이 설치되어 있어야 하겠지요. 현재 디렉토리를 Microstation이 설치되어 있는 디렉토리로 설정합니다.(SetCurrentDirectory) Shell을 이용해서 mod 폴더에 있는 FrameWork dgn 파일을 오픈합니다. Set msApp...
오늘 아주 흥미로운 현상을 발견했습니다. 소스의 맨 첫째 줄에 주석을 넣으니 V7 컴파일러가 에러를 뱉어 내었습니다. 아래와 같이 첫번째 줄에 주석을 넣으니 말이죠…
아래의 코드를 이용해서 SmartSolid에서 Surface를 추출할수 있습니다. if(mdlKISolid_isSmartElement(pElmDescr , MASTERFILE , filePos)) { MSElementDescrP destP = NULL; mdlKISolid_beginCurrTrans(MASTERFILE); /...