mdlLinear_extract(PolyElmVer,&PolyElmNoVer,&PolyMsElm,MASTERFILE);
if(SUCCESS == mdlMeasure_polygonProperties(NULL,NULL,(DPoint3d*)&plane_normal,&plane_origin,NULL,NULL,NULL,NULL,PolyElmVer,PolyElmNoVer))
{
for(i=0;i<mdlDArray_nMembers(gAohElmFilposEndP);i++)
{
DPoint3d line_point; // ELEMENT's pivot
DVec3d line_vector; // {0, 0, 1} vector
DPoint3d new_pivot;
DVec3d elm_offset;
Transform trnsf;
FilePos = mdlDArray_getMemberP(gAohElmFilposEndP,i);
mdlElmdscr_read(&MsEleDsc,*FilePos,MASTERFILE,0,NULL);
mdlLinear_extract(ElmVer,&ElmNoVer,&MsEleDsc->el,MASTERFILE);
GetMidPointFunction(&gMidPt, &ElmVer[0],&ElmVer[ElmNoVer-1]);
line_point = gMidPt;
line_vector.x = line_vector.y = 0.0;
line_vector.z = 1.0;
if (FALSE == mdlVec_arePerpendicularTight(&plane_normal,&line_vector))
{
mdlVec_linePlaneIntersect(&new_pivot,&line_point,&line_vector,&plane_origin,&plane_normal,FALSE);
mdlVec_subtractDPoint3dDPoint3d(&elm_offset,&new_pivot,&line_point);
mdlTMatrix_getIdentity(&trnsf);
mdlTMatrix_setTranslation(&trnsf,(DPoint3d*)&elm_offset);
mdlElmdscr_transform(MsEleDsc,&trnsf);
mdlElmdscr_rewrite(MsEleDsc,NULL,mdlElmdscr_getFilePos(MsEleDsc));
}
}
}
Fig 1 , the output we got by using this code.
Fig2 , Required Output.
I did any mistake ?