Question #681341 on Yade changed: https://answers.launchpad.net/yade/+question/681341
Chareyre posted a new comment: Hi, If your plan is to have deforming facets (over time) scaling will not work since time integration for facets assume a rigid body. If it is your case PFacets should be considered since it reflects nodes motion across the facet area. If scaling is just a way to set an initial geometry then the above is ok. Bruno Le mer. 12 juin 2019 17:43, gaoxuesong <[email protected]> a écrit : > Question #681341 on Yade changed: > https://answers.launchpad.net/yade/+question/681341 > > Status: Answered => Solved > > gaoxuesong confirmed that the question is solved: > Thanks. I have tried to move and scale a facet. For moving a facet, just > changing the position is feasible. But for scaling a facet, just > multiplying a scaling factor is not feasible. The vertice coordinates can > not be changed directly, like the tuple and string in python, i think. > Following is the code i used, > > from yade import qt > c = qt.Controller() > O.bodies.clear() > ### 2 initial facet ### > v1 =(0,0,0) > v2 = (1,0,0) > v3 =(1,1,0) > f1 = facet((v1,v2,v3),wire=False) > O.bodies.append(f1) > v1 =(2,0,0) > v2 = (3,0,0) > v3 =(3,1,0) > f1 = facet((v1,v2,v3),wire=False) > O.bodies.append(f1) > > ## move facet 1 > fcet1 = O.bodies[0] > mv = (1,0,0) > fcet1.state.pos += mv > ## succeed ### > ## scale vertices > for ev in fcet1.shape.vertices: > for i in range(3): > ev[i] *= 0.5 > ## failed, the vertices can not be changed > ## then try to construct a new facet using the scaled and translated > vertices > vg = [] > for ev in fcet1.shape.vertices: > vgi = fcet1.state.pos+fcet1.state.ori*ev ## global coordinates > vg.append(vgi) > print(vg) > for each in vg: > for i in range(3): > each[i] *= 0.5 > if i == 1: ## translate in y direction by 2.0 > each[i] += 2.0 > print(vg) > ## construct the new facet and remove the old one > f1 = facet((vg[0],vg[1],vg[2]),wire=False) > O.bodies.append(f1) > O.bodies.erase(fcet1.id) > > -- > You received this question notification because your team yade-users is > an answer contact for Yade. > > _______________________________________________ > Mailing list: https://launchpad.net/~yade-users > Post to : [email protected] > Unsubscribe : https://launchpad.net/~yade-users > More help : https://help.launchpad.net/ListHelp > > > -- You received this question notification because your team yade-users is an answer contact for Yade. _______________________________________________ Mailing list: https://launchpad.net/~yade-users Post to : [email protected] Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp

