def rot_Z(toSet, angle): '''Apply a rotation around global Z axis to all the entities in the set :param toSet: set of entities :param angle: rotation angle (degrees) ''' zAxis = geom.Line3d(geom.Pos3d(0.0, 0.0, 0.0), geom.Pos3d(0.0, 0.0, 100.0)) rot = xc.Rotation(geom.Rotation3d(zAxis, math.radians(angle))) toSet.transforms(rot)
def getSuitableXZVector(iNode, jNode): ''' Return a vector that can be used to define a coordinate transformation for an element between the node arguments. :param iNode: first node. :param jNode: second node. ''' p1 = iNode.getInitialPos3d p2 = jNode.getInitialPos3d sg = geom.Line3d(p1, p2) v3d = sg.getKVector return xc.Vector([v3d.x, v3d.y, v3d.z])
def get_nodes_wire(setBusq, lstPtsWire, tol=0.01): '''return the list of nodes from the set `setBusq` that belong to the line defined by the successive points in list `lstPtsWire` (expressed as geom.Pos3d(x,y,z)) ''' nodAux = setBusq.getNodes retval = list() for i in range(0, len(lstPtsWire) - 1): segmAux = geom.Line3d(lstPtsWire[i], lstPtsWire[i + 1]) for n in nodAux: p = n.getInitialPos3d d = p.distLine3d(segmAux) if (d < tol): retval.append(n) retval = list(set(retval)) #clear duplicated nodes return retval
# -*- coding: utf-8 -*- import xc_base import geom import math r1=geom.Line3d(geom.Pos3d(0.,0.,0.),geom.Pos3d(10.,10.,10.)) vdir= r1.getVDir() tp=r1.tipo() import os fname= os.path.basename(__file__) if vdir.x==10. and vdir.y==10. and vdir.z==10.: print "test ",fname,": ok." else: print "test ",fname,": ERROR."
from model import model_inquiry as mi __author__ = "Luis C. Pérez Tato (LCPT)" __copyright__ = "Copyright 2014, LCPT" __license__ = "GPL" __version__ = "3.0" __email__ = "*****@*****.**" feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor # Defining nodes points = preprocessor.getMultiBlockTopology.getPoints pt1 = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0.0)) pt2 = points.newPntIDPos3d(2, geom.Pos3d(0.0, 1.0, 0.0)) axis = geom.Line3d(pt1.getPos, pt2.getPos) ang = math.pi / 2.0 trfs = preprocessor.getMultiBlockTopology.getGeometricTransformations rot1 = trfs.newTransformation("rotation") rot1.setAxisAng(axis, ang) pt3 = points.newPntIDPos3d(3, rot1.getTrfPos(geom.Pos3d(0.0, 0.0, 1.0))) pt4 = points.newPntIDPos3d(4, geom.Pos3d(1.0, 0.0, 0.0)) dist34 = mi.distance_2points(preprocessor, 3, 4) # print "dist(3,4)= ",dist34 import os from miscUtils import LogMessages as lmsg fname = os.path.basename(__file__) if (dist34 < 1e-12):
# -*- coding: utf-8 -*- from __future__ import print_function import xc_base import geom import xc import math __author__ = "Luis C. Pérez Tato (LCPT)" __copyright__ = "Copyright 2020, LCPT" __license__ = "GPL" __version__ = "3.0" __email__ = "*****@*****.**" pOld = geom.Pos3d(4.0, 4.0, 4.0) zAxis = geom.Line3d(geom.Pos3d(0.0, 0.0, 0.0), geom.Pos3d(0.0, 0.0, 100.0)) rot = xc.Rotation(geom.Rotation3d(zAxis, math.pi)) pNew = rot.getTrfPos(pOld) ratio1 = math.sqrt((pNew.x + pOld.x)**2 + (pNew.y + pOld.y)**2 + (pNew.z - pOld.z)**2) #print(pOld, pNew, ratio1) import os fname = os.path.basename(__file__) if (ratio1 < 1e-15): print("test ", fname, ": ok.") else:
# -*- coding: utf-8 -*- import xc_base import geom import math ptoOrigen=geom.Pos3d(0.5,0,0) ptoDest=geom.Pos3d(0.5,0,100) r1=geom.Line3d(ptoOrigen,ptoDest) vdir=r1.getVDir() tp=r1.tipo() pto_aplic=geom.Pos3d(5,0,0) vectorDir=geom.Vector3d(0,2,0) vec1=geom.SlidingVector3d(pto_aplic,vectorDir) pto=vec1.getOrg() brazo=pto.distLine3d(r1) fuerza=vec1.y m=vec1.getMomentLine3d(r1) mTeor=fuerza*brazo ratio1=(m-mTeor)/mTeor import os fname= os.path.basename(__file__) if m==mTeor: print "test ",fname,": ok." else: print "test ",fname,": ERROR."
from __future__ import print_function import xc_base import geom import math A=2. B=3. C=1. D=4. ITeor=geom.Pos3d(3,-1,1) P=geom.Plane3d(geom.GeneralEquationOfPlane(2,3,1,-4)) pto=geom.Pos3d(1,1,-2) vDir=geom.Dir3d(2,-2,3) r=geom.Line3d(pto,vDir) dr=ITeor.distLine3d(r) I=P.getIntersLine3d(r) d=I.distPlane(P) ratio1=ITeor.distPos3d(I) ratio2=math.fabs(dr) ratio3=math.fabs(d) import os fname= os.path.basename(__file__) if math.fabs(ratio1)<1e-4 and math.fabs(ratio2)<1e-4 and math.fabs(ratio3)<1e-4: print("test ",fname,": ok.") else: print("test ",fname,": ERROR.")
# -*- coding: utf-8 -*- from __future__ import print_function import xc_base import geom import math fromPoint=geom.Pos3d(0.5,0,0) ptoDest=geom.Pos3d(0.5,0,100) r1=geom.Line3d(fromPoint,ptoDest) vdir=r1.getVDir() tp=r1.tipo() pto_aplic=geom.Pos3d(5,0,0) vectorDir=geom.Vector3d(0,2,0) vec1=geom.SlidingVector3d(pto_aplic,vectorDir) pto=vec1.getOrg() brazo=pto.distLine3d(r1) fuerza=vec1.y m=vec1.getMomentLine3d(r1) mTeor=fuerza*brazo ratio1=(m-mTeor)/mTeor import os fname= os.path.basename(__file__) if m==mTeor: print("test ",fname,": ok.") else: print("test ",fname,": ERROR.")