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)
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
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
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
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)
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
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)
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
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
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
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)
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