Quantcast
Channel: MicroStation Programming - Forum - Recent Threads
Viewing all articles
Browse latest Browse all 1677

Re: Change Elements Elevation with in the drawn polygon and break lines (Microstation V8i Using MDL Language or C#.Net)

$
0
0

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 ?


Viewing all articles
Browse latest Browse all 1677

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>