Exemplo n.º 1
0
def parsePhysVol(parent,physVol,displayMode):
    GDMLShared.trace("ParsePhyVol")
    posref = GDMLShared.getRef(physVol,"positionref")
    if posref is not None :
       GDMLShared.trace("positionref : "+posref)
       pos = GDMLShared.define.find("position[@name='%s']" % posref )
       if pos is not None : GDMLShared.trace(pos.attrib)
    else :
       pos = physVol.find("position")
    if pos is not None :
       px = GDMLShared.getVal(pos,'x')
       py = GDMLShared.getVal(pos,'y')
       pz = GDMLShared.getVal(pos,'z')
    else :
       px = py = pz = 0 
    rotref = GDMLShared.getRef(physVol,"rotationref")
    if rotref is not None :
       rot = GDMLShared.define.find("rotation[@name='%s']" % rotref )
    else :
       rot = physVol.find("rotation")

    volref = GDMLShared.getRef(physVol,"volumeref")
    GDMLShared.trace("Volume ref : "+volref)
    part = parent.newObject("App::Part",volref)
    parseVolume(part,volref,px,py,pz,rot,displayMode)
Exemplo n.º 2
0
def createTrap(part,solid,material,px,py,pz,rot,displayMode) :
    from GDMLObjects import GDMLTrap, ViewProvider
    GDMLShared.trace("CreateTrap : ")
    GDMLShared.trace(solid.attrib)
    z  = GDMLShared.getVal(solid,'z')
    x1 = GDMLShared.getVal(solid,'x1')
    x2 = GDMLShared.getVal(solid,'x2')
    x3 = GDMLShared.getVal(solid,'x3')
    x4 = GDMLShared.getVal(solid,'x4')
    y1 = GDMLShared.getVal(solid,'y1')
    y2 = GDMLShared.getVal(solid,'y2')
    theta = GDMLShared.getVal(solid,'theta')
    phi = GDMLShared.getVal(solid,'phi')
    alpha = GDMLShared.getVal(solid,'alpah1')
    aunit = getText(solid,'aunit','rad')
    lunit = getText(solid,'lunit',"mm")
    #print z
    #mytrap=volObj.newObject("Part::FeaturePython","GDMLTrap:"+getName(solid))
    mytrap=part.newObject("Part::FeaturePython","GDMLTrap:"+getName(solid))
    GDMLTrap(mytrap,z,theta,phi,x1,x2,x3,x4,y1,y2,alpha,aunit,lunit,material)
    GDMLShared.trace("Position : "+str(px)+','+str(py)+','+str(pz))
    base = FreeCAD.Vector(0,0,0)
    mytrap.Placement = GDMLShared.processPlacement(base,rot)
    GDMLShared.trace(mytrap.Placement.Rotation)
    # set ViewProvider before setDisplay
    ViewProvider(mytrap.ViewObject)
    setDisplayMode(mytrap,displayMode)
    return mytrap
Exemplo n.º 3
0
def createTube(part,solid,material,px,py,pz,rot,displayMode) :
    from GDMLObjects import GDMLTube, ViewProvider
    GDMLShared.trace("CreateTube : ")
    GDMLShared.trace(solid.attrib)
    rmin = GDMLShared.getVal(solid,'rmin')
    rmax = GDMLShared.getVal(solid,'rmax')
    z = GDMLShared.getVal(solid,'z')
    startphi = GDMLShared.getVal(solid,'startphi')
    deltaphi = GDMLShared.getVal(solid,'deltaphi')
    aunit = getText(solid,'aunit','rad')
    lunit = getText(solid,'lunit',"mm")
    GDMLShared.trace(rmin)
    GDMLShared.trace(rmax)
    GDMLShared.trace(z)
    #mytube=volObj.newObject("Part::FeaturePython","GDMLTube:"+getName(solid))
    mytube=part.newObject("Part::FeaturePython","GDMLTube:"+getName(solid))
    GDMLTube(mytube,rmin,rmax,z,startphi,deltaphi,aunit,lunit,material)
    GDMLShared.trace("Position : "+str(px)+','+str(py)+','+str(pz))
    base = FreeCAD.Vector(0,0,0)
    #base = FreeCAD.Vector(px,py,pz)
    mytube.Placement = GDMLShared.processPlacement(base,rot)
    GDMLShared.trace(mytube.Placement.Rotation)
    # set ViewProvider before setDisplay
    ViewProvider(mytube.ViewObject)
    setDisplayMode(mytube,displayMode)
    return mytube
Exemplo n.º 4
0
def createPolycone(part,solid,material,px,py,pz,rot,displayMode) :
    from GDMLObjects import GDMLPolycone, GDMLzplane, \
            ViewProvider, ViewProviderExtension
    GDMLShared.trace("Create Polycone : ")
    GDMLShared.trace(solid.attrib)
    startphi = GDMLShared.getVal(solid,'startphi')
    deltaphi = GDMLShared.getVal(solid,'deltaphi')
    aunit = getText(solid,'aunit','rad')
    lunit = getText(solid,'lunit',"mm")
    #mypolycone=volObj.newObject("Part::FeaturePython","GDMLPolycone:"+getName(solid))
    mypolycone=part.newObject("Part::FeaturePython","GDMLPolycone:"+getName(solid))
    mypolycone.addExtension("App::OriginGroupExtensionPython", None)
    GDMLPolycone(mypolycone,startphi,deltaphi,aunit,lunit,material)
    ViewProviderExtension(mypolycone.ViewObject)

    #mypolycone.ViewObject.DisplayMode = "Shaded"
    GDMLShared.trace(solid.findall('zplane'))
    for zplane in solid.findall('zplane') : 
        GDMLShared.trace(zplane)
        rmin = GDMLShared.getVal(zplane,'rmin')
        rmax = GDMLShared.getVal(zplane,'rmax')
        z = GDMLShared.getVal(zplane,'z')
        myzplane=FreeCAD.ActiveDocument.addObject('App::FeaturePython','zplane') 
        mypolycone.addObject(myzplane)
        #myzplane=mypolycone.newObject('App::FeaturePython','zplane') 
        GDMLzplane(myzplane,rmin,rmax,z)
        ViewProvider(myzplane)

    GDMLShared.trace("Position : "+str(px)+','+str(py)+','+str(pz))
    base = FreeCAD.Vector(0,0,0)
    mypolycone.Placement = GDMLShared.processPlacement(base,rot)
    GDMLShared.trace(mypolycone.Placement.Rotation)
    # set ViewProvider before setDisplay
    setDisplayMode(mypolycone,displayMode)
    return mypolycone
Exemplo n.º 5
0
def createCone(part, solid, material, px, py, pz, rot, displayMode):
    from GDMLObjects import GDMLCone, ViewProvider
    GDMLShared.trace("CreateCone : ")
    GDMLShared.trace(solid.attrib)
    rmin1 = GDMLShared.getVal(solid, 'rmin1')
    rmax1 = GDMLShared.getVal(solid, 'rmax1')
    rmin2 = GDMLShared.getVal(solid, 'rmin2')
    rmax2 = GDMLShared.getVal(solid, 'rmax2')
    z = GDMLShared.getVal(solid, 'z')
    startphi = GDMLShared.getVal(solid, 'startphi')
    deltaphi = GDMLShared.getVal(solid, 'deltaphi')
    aunit = getText(solid, 'aunit', 'rad')
    lunit = getText(solid, 'lunit', "mm")
    mycone = part.newObject("Part::FeaturePython",
                            "GDMLCone:" + getName(solid))
    GDMLCone(mycone,rmin1,rmax1,rmin2,rmax2,z, \
             startphi,deltaphi,aunit,lunit,material)
    GDMLShared.trace("CreateCone : ")
    GDMLShared.trace("Position : " + str(px) + ',' + str(py) + ',' + str(pz))
    base = FreeCAD.Vector(px, py, pz)
    mycone.Placement = GDMLShared.processPlacement(base, rot)
    GDMLShared.trace(mycone.Placement.Rotation)
    # set ViewProvider before setDisplay
    ViewProvider(mycone.ViewObject)
    setDisplayMode(mycone, displayMode)
    return (mycone)
Exemplo n.º 6
0
def createEltube(part,solid,material,px,py,pz,rot,displayMode) :
    from GDMLObjects import GDMLElTube, ViewProvider
    GDMLShared.trace("CreateElTube : ")
    GDMLShared.trace(solid.attrib)
    dx = GDMLShared.getVal(solid,'dx')
    dy = GDMLShared.getVal(solid,'dy')
    dz = GDMLShared.getVal(solid,'dz')
    lunit = getText(solid,'lunit',"mm")
    #myeltube=volObj.newObject("Part::FeaturePython","GDMLElTube:"+getName(solid))
    myeltube=part.newObject("Part::FeaturePython","GDMLElTube:"+getName(solid))
    GDMLElTube(myeltube,dx, dy, dz,lunit,material)
    GDMLShared.trace("CreateElTube : ")
    GDMLShared.trace("Position : "+str(px)+','+str(py)+','+str(pz))
    base = FreeCAD.Vector(0,0,0)
    myeltube.Placement = GDMLShared.processPlacement(base,rot)
    GDMLShared.trace(myeltube.Placement.Rotation)
    # set ViewProvider before setDisplay
    ViewProvider(myeltube.ViewObject)
    setDisplayMode(myeltube,displayMode)
    return myeltube
Exemplo n.º 7
0
def createElcone(part, solid, material, px, py, pz, rot, displayMode):
    from GDMLObjects import GDMLElCone, ViewProvider
    GDMLShared.trace("CreateElCone : ")
    dx = GDMLShared.getVal(solid, 'dx')
    dy = GDMLShared.getVal(solid, 'dy')
    zmax = GDMLShared.getVal(solid, 'zmax')
    zcut = GDMLShared.getVal(solid, 'zcut')
    lunit = getText(solid, 'lunit', "mm")
    myelcone = part.newObject("Part::FeaturePython",
                              "GDMLElCone:" + getName(solid))
    GDMLElCone(myelcone, dx, dy, zmax, zcut, lunit, material)
    GDMLShared.trace("CreateElCone : ")
    GDMLShared.trace("Position : " + str(px) + ',' + str(py) + ',' + str(pz))
    base = FreeCAD.Vector(px, py, pz - zmax / 2)
    myelcone.Placement = GDMLShared.processPlacement(base, rot)
    GDMLShared.trace(myelcone.Placement.Rotation)
    # set ViewProvider before setDisplay
    ViewProvider(myelcone.ViewObject)
    setDisplayMode(myelcone, displayMode)
    return (myelcone)
Exemplo n.º 8
0
def createBox(part, solid, material, px, py, pz, rot, displayMode):
    from GDMLObjects import GDMLBox, ViewProvider
    GDMLShared.trace("CreateBox : ")
    GDMLShared.trace(solid.attrib)
    mycube = part.newObject("Part::FeaturePython", "GDMLBox:" + getName(solid))
    x = GDMLShared.getVal(solid, 'x')
    y = GDMLShared.getVal(solid, 'y')
    z = GDMLShared.getVal(solid, 'z')
    lunit = getText(solid, 'lunit', "mm")
    GDMLBox(mycube, x, y, z, lunit, material)
    GDMLShared.trace("Logical Position : " + str(px) + ',' + str(py) + ',' +
                     str(pz))
    base = FreeCAD.Vector(0, 0, 0)
    mycube.Placement = GDMLShared.processPlacement(base, rot)
    GDMLShared.trace(mycube.Placement.Rotation)
    # set ViewProvider before setDisplay
    ViewProvider(mycube.ViewObject)
    setDisplayMode(mycube, displayMode)
    #myCube.Shape = translate(mycube.Shape,base)
    return mycube
Exemplo n.º 9
0
def createTrd(part, solid, material, px, py, pz, rot, displayMode):
    from GDMLObjects import GDMLTrd, ViewProvider
    GDMLShared.trace("CreateTrd : ")
    GDMLShared.trace(solid.attrib)
    z = GDMLShared.getVal(solid, 'z')
    x1 = GDMLShared.getVal(solid, 'x1')
    x2 = GDMLShared.getVal(solid, 'x2')
    y1 = GDMLShared.getVal(solid, 'y1')
    y2 = GDMLShared.getVal(solid, 'y2')
    lunit = getText(solid, 'lunit', "mm")
    #print z
    mytrd = part.newObject("Part::FeaturePython", "GDMLTrd:" + getName(solid))
    GDMLTrd(mytrd, z, x1, x2, y1, y2, lunit, material)
    GDMLShared.trace("Position : " + str(px) + ',' + str(py) + ',' + str(pz))
    base = FreeCAD.Vector(px, py, pz)
    mytrd.Placement = GDMLShared.processPlacement(base, rot)
    GDMLShared.trace(mytrd.Placement.Rotation)
    # set ViewProvider before setDisplay
    ViewProvider(mytrd.ViewObject)
    setDisplayMode(mytrd, displayMode)
    return mytrd
Exemplo n.º 10
0
def createEllipsoid(part,solid,material,px,py,pz,rot,displayMode) :
    from GDMLObjects import GDMLEllipsoid, ViewProvider
    GDMLShared.trace("CreateElTube : ")
    GDMLShared.trace(solid.attrib)
    ax = GDMLShared.getVal(solid,'ax')
    by = GDMLShared.getVal(solid,'by')
    cz = GDMLShared.getVal(solid,'cz')
    zcut1 = GDMLShared.getVal(solid,'zcut1')
    zcut2 = GDMLShared.getVal(solid,'zcut2')
    lunit = getText(solid,'lunit',"mm")
    #myelli=volObj.newObject("Part::FeaturePython","GDMLEllipsoid:"+getName(solid))
    myelli=part.newObject("Part::FeaturePython","GDMLEllipsoid:"+getName(solid))
    # cuts 0 for now
    GDMLEllipsoid(myelli,ax, by, cz,zcut1,zcut2,lunit,material)
    GDMLShared.trace("CreateEllipsoid : ")
    GDMLShared.trace("Position : "+str(px)+','+str(py)+','+str(pz))
    base = FreeCAD.Vector(px,py,pz)
    myelli.Placement = GDMLShared.processPlacement(base,rot)
    GDMLShared.trace(myelli.Placement.Rotation)
    # set ViewProvider before setDisplay
    ViewProvider(myelli.ViewObject)
    setDisplayMode(myelli,displayMode)
    return myelli
Exemplo n.º 11
0
def createXtru(part, solid, material, px, py, pz, rot, displayMode):
    from GDMLObjects import GDMLXtru, GDML2dVertex, GDMLSection, \
             ViewProvider, ViewProviderExtension
    GDMLShared.trace("CreateXtru : ")
    #print(solid)
    #print(getName(solid))
    myXtru = part.newObject("Part::FeaturePython",
                            "GDMLXtru-" + getName(solid))
    #myXtru.addExtension("App::OriginGroupExtensionPython", None)
    lunit = getText(solid, 'lunit', "mm")
    GDMLXtru(myXtru, lunit, material)
    ViewProviderExtension(myXtru.ViewObject)
    for vert2d in solid.findall('twoDimVertex'):
        x = GDMLShared.getVal(vert2d, 'x')
        y = GDMLShared.getVal(vert2d, 'y')
        my2dVert = FreeCAD.ActiveDocument.addObject('App::FeaturePython',
                                                    'GDML2DVertex')
        #myzplane=mypolycone.newObject('App::FeaturePython','zplane')
        GDML2dVertex(my2dVert, x, y)
        myXtru.addObject(my2dVert)
        ViewProvider(my2dVert)
    for section in solid.findall('section'):
        zOrder = GDMLShared.getVal(section, 'zOrder', 2)  # Get Int
        zPosition = GDMLShared.getVal(section, 'zPosition', 2)  # Get Int
        xOffset = GDMLShared.getVal(section, 'xOffset')
        yOffset = GDMLShared.getVal(section, 'yOffset')
        scalingFactor = GDMLShared.getVal(section, 'scalingFactor')
        mysection = FreeCAD.ActiveDocument.addObject('App::FeaturePython',
                                                     'GDMLSection')
        GDMLSection(mysection, zOrder, zPosition, xOffset, yOffset,
                    scalingFactor)
        myXtru.addObject(mysection)
        ViewProvider(mysection)

    GDMLShared.trace("Position : " + str(px) + ',' + str(py) + ',' + str(pz))
    base = FreeCAD.Vector(0, 0, 0)
    #base = FreeCAD.Vector(px,py,pz)
    myXtru.Placement = GDMLShared.processPlacement(base, rot)
    GDMLShared.trace(myXtru.Placement.Rotation)
    # Shape is still Null at this point
    #print("Xtru Shape : ")
    #print("Is Null : "+str(myXtru.Shape.isNull()))
    return (myXtru)
Exemplo n.º 12
0
def createCutTube(part, solid, material, px, py, pz, rot, displayMode):
    from GDMLObjects import GDMLcutTube, ViewProvider
    GDMLShared.trace("CreateCutTube : ")
    GDMLShared.trace(solid.attrib)
    rmin = GDMLShared.getVal(solid, 'rmin')
    rmax = GDMLShared.getVal(solid, 'rmax')
    z = GDMLShared.getVal(solid, 'z')
    startphi = GDMLShared.getVal(solid, 'startphi')
    deltaphi = GDMLShared.getVal(solid, 'deltaphi')
    aunit = getText(solid, 'aunit', 'rad')
    print("aunit : " + aunit)
    lowX = GDMLShared.getVal(solid, 'lowX')
    lowY = GDMLShared.getVal(solid, 'lowY')
    lowZ = GDMLShared.getVal(solid, 'lowZ')
    highX = GDMLShared.getVal(solid, 'highX')
    highY = GDMLShared.getVal(solid, 'highY')
    highZ = GDMLShared.getVal(solid, 'highZ')
    lunit = getText(solid, 'lunit', "mm")
    GDMLShared.trace(rmin)
    GDMLShared.trace(rmax)
    GDMLShared.trace(z)
    GDMLShared.trace(lowX)
    GDMLShared.trace(lowY)
    GDMLShared.trace(lowZ)
    GDMLShared.trace(highX)
    GDMLShared.trace(highY)
    GDMLShared.trace(highZ)
    mycuttube = part.newObject("Part::FeaturePython",
                               "GDMLcutTube:" + getName(solid))
    GDMLcutTube(mycuttube,rmin,rmax,z,startphi,deltaphi,aunit, \
                lowX, lowY, lowZ, highX, highY, highZ, lunit, material)
    GDMLShared.trace("Position : " + str(px) + ',' + str(py) + ',' + str(pz))
    base = FreeCAD.Vector(px, py, pz)
    mycuttube.Placement = GDMLShared.processPlacement(base, rot)
    GDMLShared.trace(mycuttube.Placement.Rotation)
    # set ViewProvider before setDisplay
    ViewProvider(mycuttube.ViewObject)
    setDisplayMode(mycuttube, displayMode)
    return mycuttube