• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Python cmds.scriptJob函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中maya.cmds.scriptJob函数的典型用法代码示例。如果您正苦于以下问题:Python scriptJob函数的具体用法?Python scriptJob怎么用?Python scriptJob使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了scriptJob函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: flatten

def flatten(averaged=True):
    """
    Flattens selection by averaged normal.
    """
    def flatten(component, script_job=False):

        if script_job:
            cmds.select(selected.cmdslist())
        else:
            cmds.select(component.cmdslist())

        center = list(component.bbox.center)[:3]
        origin = get_average_vert_normal(component.normals, component.indices)

        # Perform scale
        cmds.manipScaleContext('Scale', e=True, mode=6, alignAlong=origin)
        radians = cmds.manipScaleContext('Scale', q=True, orientAxes=True)
        t = [math.degrees(r) for r in radians]
        cmds.scale(0, 1, 1, r=True, oa=t, p=center)

    def script_job():
        """
        Get normal from script job selection and pass it to flatten.
        """
        flatten(next(iter(mampy.complist())).to_vert(), True)

    selected = mampy.complist()
    if averaged:
        for comp in selected:
            flatten(comp.to_vert())
        cmds.select(selected.cmdslist(), r=True)
    else:
        # Scale selection to given selection.
        cmds.scriptJob(event=['SelectionChanged', script_job], runOnce=True)
开发者ID:arubertoson,项目名称:maya-mamtools,代码行数:34,代码来源:mesh.py


示例2: main

def main():
    def create_filter(fn):
        regex = re.compile(fn, re.I)
        test = lambda p: regex.search(p)
        items.update_filter(test)

    with gui.Window() as w:
        with forms.NavForm() as nav:
            with forms.VerticalForm() as navbar:
                one = gui.Button()
                two = gui.Button()
                three = gui.Button()
            with forms.HeaderForm() as main:
                filter_field = QTextField()
                main_list = lists.VerticalList()

        items > bind() > main_list.collection
        items.bind.viewCount > bind() > three.bind.label
        items.bind.count > bind() > two.bind.label
        w.update_bindings()

    w.buffer = InputBuffer(w, create_filter)
    filter_field.textChanged += w.buffer.handle
    cmds.scriptJob(lj=True)
    return w
开发者ID:bob-white,项目名称:mGui,代码行数:25,代码来源:filtered_collection.py


示例3: __cancelCallback

    def __cancelCallback(*pArgs):
        if cmds.window(axisParallelPlane.windowID, exists = True):
            cmds.deleteUI(axisParallelPlane.windowID)

        if (cmds.scriptJob(ex = axisParallelPlane.job)):
            cmds.scriptJob(kill = axisParallelPlane.job, force = 1)
        axisParallelPlane.job = -1
开发者ID:EnReich,项目名称:ProKlaue,代码行数:7,代码来源:axisParallelPlane.py


示例4: buildGUI

	def buildGUI(self):
	
		if cmds.window(self.name, q=True, exists=True):
			cmds.deleteUI(self.name)
		cmds.window(self.name, title=self.title, sizeable=False, mxb=False, mnb=False, toolbox=False, w=100, h=30)
		cmds.columnLayout("mainLayout", adj=True, parent=self.name, co=("left", 5))

		# Add onClose Event
		cmds.scriptJob(uiDeleted=(self.name, self.onClose))
		
		# Help Menu
		cmds.menuBarLayout("menuBar")
		cmds.menu(label="Show Help", helpMenu =True, pmc=self.showHelp)

		# Import paths
		cmds.textFieldButtonGrp("tfbDBPath", label="Links: ", bl="Set Link Path", cw=(1,50), parent="mainLayout", bc=self.setDBPath)
		cmds.textFieldButtonGrp("tfbShaderPath", label="Shaders: ", bl="Set Shader Path", cw=(1,50), parent="mainLayout", bc=self.setShaderPath)
		
		cmds.checkBox("cbSelection", label="Use Selection", parent="mainLayout")
		cmds.checkBox("cbSubstring", label="Substring prefix", parent="mainLayout", value=True)
		cmds.textField("tfSubstring", parent="mainLayout", text="s100_char")

		cmds.separator(h=10, style="none", parent="mainLayout")

		# Buttons
		cmds.rowColumnLayout("buttonsLayout", numberOfColumns=2, parent="mainLayout")
		cmds.button("bExportLinks", label = "Export Links", w=200, h=30, parent="buttonsLayout", c=self.exportLinks)
		cmds.button("bImportShader", label="Link Shaders", w=200, h=30, parent="buttonsLayout", c=self.linkShaders)

		cmds.showWindow(self.name)
开发者ID:Quazo,项目名称:breakingpoint,代码行数:30,代码来源:jf_shaderLinker.py


示例5: enableRitalin

def enableRitalin(enable = True): 
	global RitalinEnabled
	global resetTumbleToolToCOI
	
	if enable == True:
		if RitalinEnabled == False:
			if (cmds.tumbleCtx ("tumbleContext", query = True, localTumble = true)) == 1:
				cmds.tumbleCtx ("tumbleContext", edit = True, localTumble = 0)
				resetTumbleToolToCOI = True
			else: resetTumbleToolToCOI = False

		cleanRitalinScriptJobs()

		#The dragRelease event is king, it always gets fired when the user presses the mouse button or moves the mouse with the button pressed - exactly what we need
		Job1 = cmds.scriptJob(runOnce = False, killWithScene = False, event =('DragRelease',  "cmds.undoInfo (swf = False); setCamRotatePivots(); cmds.undoInfo (swf = True)"))
		RitalinScriptJobs.append(Job1)		

		#Due to a bug in Maya we need to run the following event at least once to ensure that the DragRelease event gets triggered above. Otherwise it never kicks in  :-(
		#Also, to prevent the undo/redo queue from getting overwritten we only do store selected components when there are no commands to redo, 
		#which is only the case if the selction change was due to user-action rather than undo/redo...
		Job2 = cmds.scriptJob(runOnce = False, killWithScene = False,  event =('SelectionChanged',  "cmds.undoInfo (swf = False); setCamRotatePivots(); cmds.undoInfo (swf = True)")) #if cmds.undoInfo(q = true, redoName = True) == '':
		RitalinScriptJobs.append(Job2)
		Job3 = cmds.scriptJob(runOnce = False, killWithScene = False,  event =('Undo',  "cmds.undoInfo (swf = False); setCamRotatePivots(); cmds.undoInfo (swf = True)")) #if cmds.undoInfo(q = true, redoName = True) == '':
		RitalinScriptJobs.append(Job3)
		Job4 = cmds.scriptJob(runOnce = False, killWithScene = False,  event =('Redo',  "cmds.undoInfo (swf = False); setCamRotatePivots(); cmds.undoInfo (swf = True)")) #if cmds.undoInfo(q = true, redoName = True) == '':
		RitalinScriptJobs.append(Job4)
	
		setCamRotatePivots()
			
	if enable == False:
		#print ("Attempting to disable Ritalin - Deleting script Jobs")
		if resetTumbleToolToCOI == True:
			cmds.tumbleCtx ("tumbleContext", edit = True, localTumble = 1)
		
		cleanRitalinScriptJobs()
开发者ID:blondimage,项目名称:keyvis-dev,代码行数:35,代码来源:Ritalin_Public.py


示例6: rigUpdate

 def rigUpdate(self):
     #disable refresh until the rig update is complete
     cmds.refresh(su=True)
     rigNodeFound = False
     try:
         rigGuiNode = self.scene.sceneNodes["Rig"]
         rigNodeFound = True
     except KeyError:
         rigNodeFound = False
     if rigNodeFound:
         #kill all script jobs created by controllers to avoid
         #an update loop which the rig is updated
         for jobNum in self.scriptJobNumbers:
             if jobNum != globals.currentScriptJobNum:
                 cmds.scriptJob(k=jobNum)
         self.scriptJobNumbers = []
         rigGuiNode.updateVersion += 0.1
         rootElem = self.recursiveGetXML(rigGuiNode)
         self.indent(rootElem)
         tree = xml.ElementTree(rootElem)
         file = open(self.updateXmlPath, 'w')
         tree.write(file)
         file.close()
         self.recursiveZeroOutControllers(rigGuiNode)
         if rigGuiNode.metaNodeName is not None and rigGuiNode.metaNodeName != "":
             self.rootNodeName = mel.eval("updateMetaDataManager -n \""+rigGuiNode.metaNodeName+"\";")
         else:
             self.rootNodeName = mel.eval("loadRig -p \""+self.updateXmlPath+"\";")
         cmds.select(cl=True)
         self.recursiveUpdateMetaNodes(rigGuiNode,self.rootNodeName)
         self.recursiveSetupScriptJobs(rigGuiNode)
     cmds.refresh(su=False)
开发者ID:LoganKelly,项目名称:Modular_Rigging_Thesis,代码行数:32,代码来源:RigNodeEditor.py


示例7: register_event

    def register_event(self, event):
        """
        Create the scriptJob for AttributeNotifier <event>
        """
        attrib = "{0}.{1}".format(self, event.attribute)

        event_data = dict((k, v) for k, v in event.items() if not k.startswith("_"))

        handler = partial(AttributeChangeHandler.handle,
                          uuid=self.uuid,
                          attribute=event.attribute,
                          handler=event.handler,
                          data=event_data)

        ac_job = cmds.scriptJob(kws=1, ac=(attrib, handler))

        delete_handler = partial(AttributeChangeHandler.reassign,
                                 attrib=event.attribute,
                                 uuid=self.uuid,
                                 job=ac_job)

        rn_job = cmds.scriptJob(kws=1, runOnce=True, nnc=(self, delete_handler))

        _logger.info('listening on %s' % attrib)
        return ac_job, rn_job
开发者ID:theodox,项目名称:attributeEvents,代码行数:25,代码来源:__init__.py


示例8: deregisterScriptJobs

 def deregisterScriptJobs(self):
     for i in self.scriptJobs:
         try:
             cmds.scriptJob(kill=i)
         except:
             pass
     self.scriptJobs = []
开发者ID:leandropim,项目名称:Tapp,代码行数:7,代码来源:events.py


示例9: setMode

    def setMode(self, onOff):
        
        utilMod.killScriptJobs("G.microTransformScriptJobs")
                
        if onOff:
            
            self.rotationOrientMode         = cmds.manipRotateContext('Rotate', query=True, mode=True)
            cmds.manipRotateContext('Rotate', edit=True, mode=2)#gimbal
            #update values on turning on
            self.addMicroTransform()
            
            G.microTransformScriptJobs = []
            # get the current selected object values
            G.microTransformScriptJobs.append(cmds.scriptJob(runOnce = False, killWithScene = False, event =('SelectionChanged', self.addMicroTransform ))) 
            G.microTransformScriptJobs.append(cmds.scriptJob(runOnce = False, killWithScene = False, event =('timeChanged', self.updateValues )))
            G.microTransformScriptJobs.append(cmds.scriptJob(runOnce = False, killWithScene = False, event =('Undo', self.updateValues ))) 
            G.microTransformScriptJobs.append(cmds.scriptJob(runOnce = False, killWithScene = False, event =('Redo', self.updateValues ))) 
            G.microTransformScriptJobs.append(cmds.scriptJob(runOnce = False, killWithScene = False, event =('DragRelease', self.release ))) 
            

            
            #print "microTransform is ON."
            
        else:
            cmds.manipRotateContext('Rotate', edit=True, mode=self.rotationOrientMode)
            self.removeMicroTransform()
开发者ID:Italic-,项目名称:maya-prefs,代码行数:26,代码来源:microTransform.py


示例10: createWindow

    def createWindow(self):
        self.log.debug("creating window "+self.windowName)
        
        if self.windowExists(self.windowName):
            raise Exception("window %s already opened" % self.windowName)
        if not self.useUserPrefSize:
            try:
                cmds.windowPref(self.windowName,remove=True)
                cmds.windowPref(self.windowName,width=self.defaultWidth,height=self.defaultHeight)
            except:
                pass

        cmds.window(self.windowName,
                                   title=self.windowTitle,
                                   maximizeButton=False,
                                   minimizeButton=False,
                                   width=self.defaultWidth,
                                   height=self.defaultHeight,
                                   sizeable=self.sizeable,
                                   menuBar=self.menuBar)
        
        
        cmds.scriptJob(uiDeleted=[self.windowName,self.onWindowDeleted])
        
        HeadlessDataHost.HANDLE.addReference(self)
开发者ID:BigMacchia,项目名称:ngSkinTools,代码行数:25,代码来源:basetoolwindow.py


示例11: _FILE_Save

    def _FILE_Save(s, todo, archive):
        path = s._FILE_Running()
        if path:
            if todo:
                def fileArchive(): # Begin the archive process
                    realpath = os.path.realpath(path)
                    if archive:
                        archive(realpath)

                process = cmds.scriptJob(e=['SceneSaved', fileArchive], ro=True)
                try:
                    message = """
<div>- This Scene was last saved on <em>%(time)s</em>.</div>
<div>- Completing the task: <code>%(todo)s</code></div>
<div>- The file <strong>has not been modified since.</strong></div><br>
""" % {"time": time.ctime(), "todo": todo.label}
                    with Popup(message):
                        cmds.file(save=True)  # Save the scene
                    return True
                except RuntimeError as e:  # If scene save was canceled or failed. Reset everything
                    print "Warning: %s" % e
                    if cmds.scriptJob(ex=process):
                        cmds.scriptJob(kill=process)
            else:
                try:
                    cmds.file(save=True)
                    return True
                except RuntimeError as e:
                    print "Warning: %s" % e
        else: # Nothing in the scene to save
            return True
开发者ID:internetimagery,项目名称:todo,代码行数:31,代码来源:file.py


示例12: newItemJob

	def newItemJob(self):
		# Reset the object creation handling job 
		if(cmds.scriptJob(exists=self.newObjectJob)):
			cmds.scriptJob(kill=self.newObjectJob)
		self.newObjectJob = cmds.scriptJob(event=('DagObjectCreated', self.onNewObject))
		# Store the current tool so we can change back to it when the user has finished painting
		self.currentContext = cmds.currentCtx()
开发者ID:TomMinor,项目名称:mesh-surface-spawner,代码行数:7,代码来源:PaintGUI.py


示例13: __init__

    def __init__(s):
        s.registerHooks()  # Load our hooks
        if cmds.dockControl("TODO_WINDOW", ex=True):
            cmds.deleteUI("TODO_WINDOW")
            s.fireHook("app.end")
            print "Window exists. Closing and opening a new window."
        s.page = ""  # Page we are on.
        s._refresh()  # Initialize saved data
        s.fireHook("app.start")
        s.regex = {}  # Compiled regexes
        title = "Todo"
        try:
            with open(os.path.join(os.path.dirname(__file__), "quotes.json"), "r") as f:  # Motivation!
                title = random.choice(json.load(f))
        except (IOError, ValueError):
            print "No inspirational quotes loaded."

        window = cmds.window(title=title, rtf=True)
        s.container = cmds.columnLayout(adj=True)
        s.wrapper = ""

        allowed_areas = ['right', 'left']
        s.dock = cmds.dockControl("TODO_WINDOW", a='left', content=window, aa=allowed_areas, fl=True, l=title, fcc=s.moveDock, vcc=s.closeDock)

        s._buildTodo()

        if s.location == 'float':
            cmds.dockControl(s.dock, e=True, fl=True)
        elif s.location in allowed_areas:
            cmds.dockControl(s.dock, e=True, a=s.location, fl=False)

        cmds.scriptJob(e=["PostSceneRead", s._refresh], p=s.dock)
        cmds.scriptJob(e=["NewSceneOpened", s._refresh], p=s.dock)
开发者ID:internetimagery,项目名称:todo,代码行数:33,代码来源:Original.__init__.py


示例14: __init__

	def __init__(self, parent  = uiH.getMayaWindow(), *args ):
		if uiH.USEPYQT:
			super(base, self).__init__(parent)
		else:
			super(LighterHelperUI, self).__init__(parent)
		self.setupUi(self)
		#load arnold if it is not loaded
		self.loadArnold()
		self.setObjectName( 'ligther_Helper_WIN' )
		self._makeConnections()
		#self._addAllAovs()
		#create an scriptjob thats update the UI on renderlayer change
		mc.scriptJob( e = ["renderLayerManagerChange", partial( self.updateLighterUI )], p = 'ligther_Helper_WIN' )
		self.updateLighterUI()
		#set icons for toolbar
		self.actionSpot.setIcon(QtGui.QIcon(":/spotlight.png"))
		self.actionDirectional.setIcon(QtGui.QIcon(":/directionallight.png"))
		self.actionPoint.setIcon(QtGui.QIcon(":/pointlight.png"))
		self.actionAmbient.setIcon(QtGui.QIcon(":/ambientlight.png"))
		self.actionArea.setIcon(QtGui.QIcon(":/arealight.png"))
		self.actionVolume.setIcon(QtGui.QIcon(":/volumelight.png"))
		self.actionRenderGlobals.setIcon(QtGui.QIcon(":/renderGlobals.png"))
		self.actionRenderView.setIcon(QtGui.QIcon(":/render.png"))
		self.actionLookThrough.setIcon(QtGui.QIcon(":/fileTextureView.png"))
		#internal variables
		self.isolatedLights = [] #lights that are beign turn off when we want to isolate others!
		self.isolatedObjects = [] #objects that are beign turn off when we one to isolate others!
		uiH.loadSkin( self, 'QTDarkGreen' )
开发者ID:skarone,项目名称:PipeL,代码行数:28,代码来源:lighterHelperUI.py


示例15: win

def win(*args):
    '''Window used to update the mesh
    '''
    #if any windows are open that deal with updating the mesh, close them
    winList=['atom_meshUpdateWin', 'keyMeshdirDialogWin']
    for win in winList:
        if cmds.window(win, ex=True):
            cmds.deleteUI(win)
    #create the window
    cmds.window('atom_meshUpdateWin', title = 'Atom Mesh Update')
    cmds.columnLayout(co=['both',5],adj=True, rs=5)
    path = os.path.join(cmds.workspace(query=True, o=True), 'scenes/anim/template_rig/CharactersWork/SantaPup/RIG/mesh_update_info')
    button_state = True
    #Test if the mesh_update_folder is the current path, this will usually be false
    if os.path.exists(path) != True:
        print path
        path = cmds.workspace(query=True, o=True)
        button_state=False
        print 'mesh_update_info folder not found. Browse to folder to continue.'
        
    cmds.textFieldButtonGrp('atom_meshUpdatePath_tfbg', label='Path:', tx=path, buttonLabel='Set Path', ct3=['left','both','left'],
                            co3=[0,0,5],cl3=['left', 'center', 'center'], ad3=2, cw3=[35,100,80], bc='from atom import atom_updateMesh_lib\natom_updateMesh_lib.dirDialog()')
    cmds.button('atom_meshUpdate_button',l='Update Mesh', c ='from atom import atom_updateMesh_lib\natom_updateMesh_lib.updateMeshCMD()', en=button_state )
    cmds.scriptJob(runOnce=True,uid=['atom_meshUpdateWin', 'from atom import atom_updateMesh_lib\natom_updateMesh_lib.deleteDirDialog()'])
    cmds.showWindow('atom_meshUpdateWin')
开发者ID:boochos,项目名称:work,代码行数:25,代码来源:atom_updateMesh_lib.py


示例16: __init__

	def __init__( self ):
		self.ButtonIsStart 				= False
		self.ObjectPicked				= None
		self.RotatePosition		    	= MTVector( 0.0, 0.0, 0.0 ) 
		self.RotateAroundSelected 		= -1
		self.SelectedObjects        	= None
		self.ObjectsToRotate        	= None
		self.IgnoreSelectionChangeEvent	= False
		self.CloseButtonPressed 		= False	
		self.DummyNode					= None
		self.CurrentContext				= None
		
		self.BuildUI()
		self.OnRotateAroundCenterBBoxSelected( None )
		self.OnSelectionChange()
		
		self.SelectionJob = cmds.scriptJob( event = ( "SelectionChanged", self.OnSelectionChange ), parent = self.Window )
		self.DeleteJob    = cmds.scriptJob( uiDeleted = ( self.Window, self.OnWindowClosed ) )
		
		# se crea un nodo invisible que servira para obtener las rotaciones de mundo
		self.DummyNode = cmds.createNode( "transform", skipSelect = True )		
		
		# nuevo rotator para saber cuando se termina de girar
		self.CurrentContext = cmds.currentCtx()
		self.ManipRotate = cmds.manipRotateContext( mode = 1, postDragCommand = ( self.OnObjectRotated, "transform" ) )	
开发者ID:malandrin,项目名称:maya-scripts,代码行数:25,代码来源:MTRotator.py


示例17: renderLayersSetup

	def renderLayersSetup(self, layers) :
		"""renderLayersSetup

		:param layers:
		:return:
		"""
		# add script job for renaming render layer

		#print '* renderLayersSetup'
		selector = self.winMain + '|f0|c0|r0|layer_selector'
		firstRun = True
		for layer in layers:
			if layer != 'defaultRenderLayer':
				# cmds.scriptJob(
				#     nodeNameChanged=[layer, partial(self.renderLayerRenamed)],
				#     parent=top,
				#     replacePrevious=firstRun
				# )
				cmds.scriptJob(
					nodeNameChanged=[
						layer,
						'import maya.OpenMaya; '
						'maya.cmds.evalDeferred('
						'    "meArnoldRender.renderLayerRenamed()",'
						'    lowestPriority=True'
						')'
					],
					parent=selector,
					replacePrevious=firstRun
				)
				firstRun = False
开发者ID:morevnaproject,项目名称:cgru,代码行数:31,代码来源:meArnoldRender.py


示例18: __init__

    def __init__(s):
        with report.Report():
            tracker = JointTracker()
            winName = "Orient_Joints"
            if cmds.window(winName, ex=True):
                cmds.deleteUI(winName)
            s.win = cmds.window(rtf=True, w=300, t="Orient Joints")
            cmds.columnLayout(adj=True)
            cmds.button(
                l="Attach Marker",
                h=50,
                c=Callback(tracker.addMarker),
                ann="""
Attach a Marker to the selected Joint.
Rotate the marker into the desired joint rotation.
"""
            )
            cmds.button(
                l="Update Joints",
                h=50,
                c=Callback(tracker.orientJoints),
                ann="""
Rotate all joints that have markers to their respective rotations.
"""
            )
            cmds.showWindow(s.win)
            cmds.scriptJob(uid=[s.win, tracker.removeMarkers])
开发者ID:internetimagery,项目名称:twinSkeleton,代码行数:27,代码来源:fixorient.py


示例19: event

    def event(self):

        def allFunctionsDoIt( *args ):
            for function in uiData.updateFunctionList:
                function()
        
        cmds.scriptJob( e=['Undo', allFunctionsDoIt], p= self._winName )
        cmds.scriptJob( e=['Redo', allFunctionsDoIt], p= self._winName )
开发者ID:jonntd,项目名称:mayadev-1,代码行数:8,代码来源:__init__.py


示例20: dpaf_postSceneReadJob

	def dpaf_postSceneReadJob(self):
		
		self.dpaf_separateLayerAdj()
		self.dpaf_setRendererName('current')
		self.dpaf_init_Resolution()

		# scenes switching engine
		cmds.scriptJob(e= ['PostSceneRead', self.dpaf_postSceneReadJob], ro= 1, p= 'cgru_afanasy_wnd')
开发者ID:davidpower,项目名称:cgru_pxfly,代码行数:8,代码来源:__init__.py



注:本文中的maya.cmds.scriptJob函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python cmds.scrollField函数代码示例发布时间:2022-05-27
下一篇:
Python cmds.scaleConstraint函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap