プロダクト: | MicroStation | ||
バージョン: | CE update16 | ||
環境: | N/A | ||
エリア: | Programming | ||
サブエリア: | MDL |
外部参照ファイルに対しmdlModelRefIterator_createを使用して処理するサンプルです。
/*----------------------------------------------------------------------+
| name scan_nested_cells_callback
| author BSI 7/2002
+----------------------------------------------------------------------*/
int scan_nested_cells_callback
(
MSElementDescr *pEd,
void *params, /* => parm from the call to operation */
ScanCriteriaP scP
)
{
_swprintf(wrkMsg,L"51_Scan_cells_callback"); mdlDialog_dmsgsPrint(wrkMsg);
_swprintf(wrkMsg,L"52_Scan_Type=%d",mdlElement_getType(&pEd->el)); mdlDialog_dmsgsPrint(wrkMsg);
return SUCCESS;
}
/*----------------------------------------------------------------------+
| name kscanProcessFile
| author BSI 7/2002
+----------------------------------------------------------------------*/
int kscanProcessFile
(
DgnModelRefP modelRefP,
double dParam[3]
)
{
_swprintf(wrkMsg,L"65_kscanProcessFile dP0=%.1f dP1=%.1f dP2=%.1f",
dParam[0], dParam[1], dParam[2]); mdlDialog_dmsgsPrint(wrkMsg);
ScanCriteriaP pScanCriteria = mdlScanCriteria_create( ); /* create the scancriteria */
if (pScanCriteria)
{
mdlScanCriteria_setReturnType( pScanCriteria, MSSCANCRIT_ITERATE_ELMREF, FALSE, TRUE);
mdlScanCriteria_setDrawnElements( pScanCriteria );
mdlScanCriteria_setModel( pScanCriteria, modelRefP );
mdlScanCriteria_setElmDscrCallback( pScanCriteria, scan_nested_cells_callback, dParam );
mdlScanCriteria_scan( pScanCriteria, NULL, NULL, NULL );
mdlScanCriteria_free( pScanCriteria );
}
return SUCCESS;
}
/*----------------------------------------------------------------------+
| name Reference
+-----------------------------------------------------------------------*/
int Reference
(
int idat
)
{
ModelRefIteratorP iterator=NULL;
DgnModelRefP modelRef = NULL;
WChar mNameP[128], fName[256];
int status=0;
double dscale=0;
double dParam[3];
// mdlModelRefIterator_create( &iterator, MASTERFILE, MRITERATE_Root | MRITERATE_PrimaryChildRefs, 0 ) ;
mdlModelRefIterator_create( &iterator, MASTERFILE, MRITERATE_PrimaryChildRefs, 0 ) ;
while ( NULL != ( modelRef = mdlModelRefIterator_getNext( iterator ) ) )
{
status = mdlModelRef_getFileName( modelRef, fName, 256 );
_swprintf(wrkMsg,L"56_FileName=%s", fName); mdlDialog_dmsgsPrint(wrkMsg);
status = mdlModelRef_getModelName( modelRef, mNameP );
_swprintf(wrkMsg,L"58_ModelName=%s", mNameP); mdlDialog_dmsgsPrint(wrkMsg);
status = mdlRefFile_getDoubleParameters( &dscale, REFERENCE_SCALE, modelRef );
_swprintf(wrkMsg,L"60_scan_nested dscale=%f", dscale); mdlDialog_dmsgsPrint(wrkMsg);
dParam[0] = dscale;
dParam[1] = dscale;
kscanProcessFile(modelRef, dParam);
}
return SUCCESS;
}
Original Author: | Mikihiko Tabata |