MicroStation:MDL常用API(持续更新)

mdlTMatrix:

mdlTMatrix_getTranslation(DPoint3dP translationP , TransformCP transformP):获取参数二的transform的点赋给参数一

mdlTMatrix_setTranslation(TransformP transformP, DPoint3dCP translationP):设置参数二的transform赋给参数一

mdlRMatrix_getColumnVector  ( DPoint3dP  vec, RotMatrixCP  rotMatrixP, int  col) :从参数矩阵rotMatrixP中提取第col列到vec中

mdlRMatrix_fromColumnVectors( RotMatrixP  rotMatrixP, DPoint3dCP  xVectorP, DPoint3dCP  yVectorP, DPoint3dCP  zVectorP ) :将参数二三四构造为矩阵,通过参数一传出

mdlRMatrix_formView:返回视图或当前辅助坐标系的旋转矩阵(副本)

  • 列0、1和2包含在视图中看到的x、y、z全局轴的坐标
  • 行0、1和2包含在全局系统中看到的视图x、y、z轴的坐标

mdlRMatrix_fromTMatrix( RotMatrixP  rotMatrixP, TransformCP  transformP) :将参数二的transform赋给参数一


mdlRMatrix_invert:函数已经被mdlRMatrix_transpose代替,矩阵反转

mdlTMatrix_transformPoint:将参数二的transform应用于参数一的点

mdlTMatrix_getIdentity(TransformP  transformP):初始化transformP

mdlRMatrix_multiplyPoint(DPoint3dP  pointP,  RotMatrixCP  matrixP)  :将矩阵乘以一个点,并返回乘以后的点
 

mdlVec:

mdlVec_subtract:向量相减

mdlVec_distance:两点间距离

mdlVec_distanceXY:仅计算XY方向的距离

mdIVec_computeNormal(DPoint3dP unitvectorP,DPoint3dCP targetP,DPoint3dCP baseP):计算从第三个参数点到第二个参数点的单位向量(输出参数一)

double mdlVec_normalizedCrossProduct( DPoint3dP  pCrossProduct,  DPoint3dCP  pVector1,  DPoint3dCP  pVector2) :计算参数二与三向量的标准化叉积,结果为参数一,返回值为非标准化叉积的长度。

double mdlVec_normalize  ( DPoint3dP  c )  :将参数规格为单位长度向量,返回值是规格前的长度

mdlVec_pointEqual:比较两个点是否相等

mdlVec_pointEqualTol:一定精度范围内比较两个点是否相等

mdlVec_projectPoint( DPoint3dP  sumP,  DPoint3dCP  originP, DPoint3dCP  inVectorP, double  scale):sumP输出为如下公式计算出的点(sumP->x = originP->x + inVectorP->x * scale)

ToElement:将某些东西转换成元素,例如:将ICurvePrimitive,CurveVector等转换成元素

Dpoint3d::Subtract:从一个点减去一个向量

ClashDetectorPtr::ComputeClosestApproach(double &  outClearance,  IClashDataCP  object1, IClashDataCP  object2, double  maxClearance  ):计算两个对象之间的距离,参数一为距离,二三为对象,四为误差半径,

返回值:

MicroStation:MDL常用API(持续更新)_第1张图片

mdIElmdscr_duplicate(MSElementDescrP* newDscr, MSElementDescrcP oldDscr):copy旧的元素描述符到新的元素描述符,即创建旧的元素描述符的副本,并返回新的描述符的地址

mdlElmdscr_readToMaster(MSElementDescrH  elemDescrPP, UInt32  filePos, DgnModelRefP  modelRef, int  expandSharedCells, UInt32 *  startFilePos):从模型的元素缓存中读取位于filePos位置的元素

mdlElmdscr_computeRange( Dpoint3d *  minP, Dpoint3d *  maxP,  MSElementDescrCP  edP,  RotMatrixCP  rotMatrixP  ):计算参数三元素描述符的范围,传出参数一和参数二,如果不计算旋转矩阵,则参数四为空

mdlElmdscr_setProperties(MSElementDescrH  edPP,  ........):设置edPP(级别,图层组,元素类等属性)

mdlElmdscr_setSymbology(MSElementDescrH  edPP, .......):设置edPP的颜色,样式,权重等

mdlElmdscr_extractEndPoints(...):返回元素的起始点和终止点

mdlModelRef_getUorPersub:获取模型的每个子单元的UOR数

mdlModelRef_getUorPermrter:给定型号参考的每米计量单位数。

mdlMeasure_closestPointOnElement:在给定空间点时找到元素上距离最近的点。

mdlAssoc_getElementDescr(.....):根据ElementId找到此ID唯一的元素

mdlCnv_subUnitsToUors(double  subUnits ):将活动模型的子单位之间的距离转换为分辨率单位并作为返回值返回

交集(交点):

mdlIntersect_allBetweenElms(.....):获取两个元素之间的所有交点(只用于二维,如果三维只能返回从某个视图看过去的一个“表观交点”而不是真正的三维中的交点)

mdlIntersect_allBetweenElms2(......):同上,但是增加了cells

扫描:

MicroStation:MDL常用API(持续更新)_第2张图片

mdlScanCriteria_create():为(扫描结构)分配内存空间,返回值为ScanCriteria对象

mdlScanCriteria_setElementTypeTest( ScanCriteriaP  scP, UShort *  typeMask, int  maskSize):对扫描类型进行限制或启用,参数二为掩码,掩码为空则扫描所有元素类型,参数三是位掩码大小

mdlScanCriteria_addSingleElementTypeTest(ScanCriteriaP  scP, int  type):为扫描结构添加要扫描元素的类型

mdlScanCriteria_setRangeTest(ScanCriteriaP  scP, DgnPlatform::ScanRange *  srP):设置扫描范围

mdlScanCriteria_setReturnType(ScanCriteriaP  scP,  int  returnType,  int  oneElementOnly, int  nestCells):设置扫描该返回的信息,参数二的返回参数如图,参数三表示匹配到之后是否还继续查找(false为不继续)参数四表示是否禁用完整复杂元素的返回(false为禁用),例如:嵌套单元格

MicroStation:MDL常用API(持续更新)_第3张图片

mdlScanCriteria_setModel(ScanCriteriaP  scP, DgnModelRefP  modelRef):设置ScanCriteria模型

mdlScanCriteria_scan(ScanCriteriaP  scP,  void *  scanBuf, int *  scanSize,UInt32 *  endOfScanPos ):开始执行扫描

图层:

mdlLevel_getIdFromCodeIncludingLibraries(DgnPlatform::LevelId *  levelIdOut, DgnModelRefP  modelRefIn, DgnPlatform::LevelCode  levelCodeIn):从图层名称获取图层ID

mdlLevel_getSymbology(....):根据ID获取图层信息,样式,覆盖等

 

 

你可能感兴趣的:(MDL,MDL,MSCE,二次开发,C++,MicroStation)