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  ):计算两个对象之间的距离,参数一为距离,二三为对象,四为误差半径,

返回值:

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

扫描:

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为禁用),例如:嵌套单元格

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获取图层信息,样式,覆盖等

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿尔兹

如果觉得有用就推荐给你的朋友吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值