Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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])
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
# -*- 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."













Ejemplo n.º 5
0
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):
Ejemplo n.º 6
0
# -*- 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."

Ejemplo n.º 8
0
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.")
Ejemplo n.º 9
0
# -*- 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.")