maxscript吧 关注:113贴子:448
  • 71回复贴,共1

请求大神帮助,导入或合并或替换指定路径文件名模型应该怎么表达

只看楼主收藏回复

请求大神帮助,
导入或合并或替换指定路径文件名模型应该怎么表达?


IP属地:广东来自Android客户端1楼2020-05-01 16:38回复
    @sinxye


    IP属地:广东来自Android客户端2楼2020-05-01 16:38
    收起回复
      我本来以为要使用宏录制。结果发现录不到。
      actionMan.executeAction 0 "40195" -- File: 合并文件,仅仅录制到打开菜单的指令。
      我的目的是,
      我所打开的3D文件,其中的模型不是我要的最新版模型。
      需要按照原有坐标替换成新模型。
      新旧模型的名称是一致的,比如,其中一个模型,文件夹中这个模型名称同样为砖块06.max。我想将文件夹中的砖块06.max替换掉场景中现有的砖块06.我感觉我有点语无伦次。表达能力越来越差劲了。
      不管了,先感谢大神的到来!好想你啊


      IP属地:广东3楼2020-05-03 09:23
      收起回复
        导入模型用 mergeMAXFile
        mergeMAXFile <filename_string> [<name_array>] [#prompt] \
        [ [ #select ] #noRedraw ] \
        [ #deleteOldDups | #mergeDups | #skipDups | #promptDups | #autoRenameDups ] \
        [ #promptMtlDups | #useMergedMtlDups | #useSceneMtlDups | #renameMtlDups ]\
        [ #promptReparent | #alwaysReparent | #neverReparent ] \
        [ quiet:<bool> ] \
        [ missingExtFilesAction: <actions> ] [ missingExtFilesList: <&variable> ] \
        [ missingXRefsAction: <actions> ] [ missingXRefsList: <&variable> ]
        参数比较多啊,我也懒得一个个说了,就直接机翻给你吧
        除了初始文件名之外,所有参数都是可选的。可以按任何顺序指定标志参数。
        参数详细信息如下:
        <name_array>
        标识要合并的源场景文件中对象的名称或字符串的可选数组;如果未指定,则合并所有对象。
        #prompt
        如果指定,则会打开标准合并对话框。
        #select
        如果指定,则在合并时将选择新合并的对象。
        #noRedraw
        如果指定,则会导致屏幕重绘延迟,以防您要多次调用mergeMAXFile(),并将重绘延迟到最后一次文件合并之后。
        #deleteOldDups
        删除与传入对象同名的现有场景对象,相当于替换。
        #mergeDups
        忽略名称冲突,无论如何合并都可能导致名称重复。
        #skipDups
        不要合并具有重复名称的对象。
        #promptDups
        弹出“重复分辨率”对话框供用户选择。
        #autoRenameDups
        自动重命名当前场景中已存在名称的传入对象。不会弹出对话框。在3ds Max 2011及更高版本中提供。
        #promptMtlDups
        默认情况下,找到重复的材料时提示用户。
        #useMergedMtlDups
        使用传入的材质合并。
        #useSceneMtlDups
        使用场景材质合并。
        #renameMtlDups
        合并并重命名重复的传入材料。
        #promptReparent
        默认情况下,提示用户。
        #alwaysReparent
        不要问用户,一定要重新包装。
        #neverReparent
        不要问用户,永远不要重修。
        有关静音:选项的详细信息,请参见静音模式
        如果找到并成功加载文件,mergeMAXFile将返回true。如果参数是扩展名为.DRF的文件,则返回false。
        如果未指定完整路径名,则会在3ds Max场景目录中查找该文件,然后在3ds Max可执行目录中查找,然后在路径环境目录中查找。
        例子:mergeMAXFile "D:\\Sinxye\\Desktop\\Test.max" #("Teapot001","Sphere001") #deleteOldDups #useMergedMtlDups


        IP属地:广东5楼2020-05-03 11:44
        收起回复

          还有就是每次都弹出这个提示。这个是我正常使用过程也会遇到的,却从来没有想过应该去解决
          现在想起来,会成为批量导入过程的障碍


          IP属地:广东6楼2020-05-03 14:12
          收起回复
            fn ay q =
            (
            text88=""
            for wew in 1 to q.count do
            (
            if q[wew]=="Z" do
            (
            text88=substring q 1 (wew-1)
            exit
            )
            if wew==q.count and q[wew]!="Z" do text88=q
            )
            text88
            )
            a=geometry as array
            for i in 1 to a.count do
            (
            ame=ay a[i].name
            oooo=a[i].pos
            dddd=a[i].rotation
            czzz=a[i].Material
            c=geometry as array
            thejj=(mergeMAXFile ("D:\\Max\\"+ame+"Z.max") #(ame+"Z") #useMergedMtlDups #autoRenameDups)
            b=geometry as array
            if thejj==false do print ame
            for s in 1 to c.count do
            (
            if thejj==false do exit
            o=c[s]
            n=finditem b o
            if n!=0 do deleteitem b n
            )
            if thejj!=false do
            (
            b[1].rotation = dddd
            oooo.y-=500
            b[1].pos=oooo
            b[1].Material=czzz
            )
            )
            @sinxye
            大神,我用了这种很笨的方法


            IP属地:广东7楼2020-05-03 16:59
            收起回复
              上面的太长就不想看梁
              我说下我的思路吧:比如说我要替换掉我打开的文件中所有叫“砖XXX”的模型,不管是“砖001”,还是“砖100”,还是“砖头1”,只要是名字以“砖”开头的都要替换掉,然之后替换的模型是来来自我的桌面的Test.max文件里的叫“砖”的模型
              首先找到所有叫“砖XXXX”的模型
              zhuan = for o in objects where matchPattern o.name pattern:"砖*" collect o
              然之后把需要的模型合并进来
              mergeMAXFile "D:\\Sinxye\\Desktop\\Test.max" #("砖") #autoRenameDups #useMergedMtlDups #select
              因为我是加了#select参数所以合并进来的模型是选中状态的
              接着就使用for循环一个个替换
              for z in zhuan do
              (
              a = instance $
              a.transform = z.transform
              a.material = z.material
              delete z
              )
              最后就删掉合并进来的模型
              delete $


              IP属地:广东8楼2020-05-03 22:48
              收起回复
                registry.openKey HKEY_CURRENT_USER "3ds" accessRights:#all key:&key1
                registry.queryValue key1 "password" type:&type value:&val
                @sinxye
                大神 ,这是我后来尝试的读取注册表。
                我大致理解为第一条是打开一级目录,后为逐渐打开次级目录至根常量。


                IP属地:广东9楼2020-05-05 15:44
                收起回复
                  输入密码时密码显示 **** 的方法
                  try (destroydialog Input_Code) catch()
                  rollout Input_Code "请输入您的密码"
                  (
                  edittext code_txt "密码:" fieldWidth:130
                  label display_code "将在这里显示密码哦"
                  local code =""
                  local display_txt = ""
                  local t = 0
                  on code_txt changed txt do
                  (
                  c = txt.count
                  if c > t do
                  (
                  code += txt[txt.count]
                  t += 1
                  display_txt += "*"
                  code_txt.text = display_txt
                  )
                  if c < t do
                  (
                  code = substring code 1 c
                  t -= 1
                  display_txt = substring display_txt 1 c
                  )
                  display_code.text = code
                  )
                  )
                  createdialog Input_Code 200 50


                  IP属地:广东10楼2020-05-05 15:52
                  收起回复


                    @sinxye


                    IP属地:广东11楼2020-05-05 16:59
                    收起回复