기본 콘텐츠로 건너뛰기

라벨이 Search인 게시물 표시

MSTN XM VBA - Lession4(요소 탐색하기)

아래 예제는 현재 열려 있는 모델의 요소에 접근하여 Range를 구하는 매크로 입니다. Sub EnumElements() Dim oScanEnumerator As ElementEnumerator Dim oElement As Element Set oScanEnumerator = ActiveModelReference.Scan Do While oScanEnumerator.MoveNext Set oElement = oScanEnumerator.Current If oElement.IsGraphical Then ShowStatus "Low = " & oElement.Range.Low.X & "," & oElement.Range.Low.Y ShowStatus "High= " & oElement.Range.High.X & "," & oElement.Range.High.Y End If Loop End Sub

Element 탐색하기

이번에는 dgn 파일에 있는 element들을 찾는 방법을 알아보도록 합시다. 먼저 간단한 코드를 먼저 보시죠. int ScanFile(UShort* typeMask , constintmaskSize) { intstatus = 0; intnElemCnt = 0; intnElemType; ULong elemAddr[50]; ScanCriteria* pScanCrit = NULL; UShort usTypeMask[8]; MSElement element; // Initialize the scan criteria pScanCrit = mdlScanCriteria_create(); mdlScanCriteria_setReturnType(pScanCrit, MSSCANCRIT_RETURN_FILEPOS, FALSE, FALSE); memset(usTypeMask, 0, sizeof(usTypeMask)); mdlScanCriteria_setElementTypeTest(pScanCrit , typeMask , maskSize); mdlScanCriteria_setModel (pScanCrit,mdlModelRef_getActive()); mdlScanCriteria_setElementCategory (pScanCrit,ELEMENT_CATEGORY_GRAPHICS); do { intscanWords = sizeof(elemAddr) / sizeof(short); status = mdlScanCriteria_scan(pScanCrit, elemAddr, &scanWords, NULL); if( status == BAD_FILE || status == BAD_ELEMENT ) break; intnumAddr = scanWords / sizeof(short); for(int i=...