Thu, Apr 18, 12:44 AM CDT

Welcome to the Poser Python Scripting Forum

Forum Moderators: Staff

Poser Python Scripting F.A.Q (Last Updated: 2024 Mar 19 1:03 pm)

We now have a ProPack Section in the Poser FreeStuff.
Check out the new Poser Python Wish List thread. If you have an idea for a script, jot it down and maybe someone can write it. If you're looking to write a script, check out this thread for useful suggestions.

Also, check out the official Python site for interpreters, sample code, applications, cool links and debuggers. This is THE central site for Python.

You can now attach text files to your posts to pass around scripts. Just attach the script as a txt file like you would a jpg or gif. Since the forum will use a random name for the file in the link, you should give instructions on what the file name should be and where to install it. Its a good idea to usually put that info right in the script file as well.

Checkout the Renderosity MarketPlace - Your source for digital art content!



Subject: Fast function to get referenced files Poser File (CR2, PZ2, ...)


adp001 ( ) posted Wed, 06 January 2021 at 9:23 PM · edited Wed, 17 April 2024 at 6:58 AM

Call it with a standard or g-zipped filename ("z" in the extension). Returns a set of filenames referenced (if any is found inside the file).

def open_poserfile(filename):
    fh = open(filename, "rb")
    magic = fh.read(2)
    fh.close()
    if magic == b'\037\213':
        return gzip.open(filename, "r")
    else:
        return open(filename, "r")

def extract_files_from_poserfile(filename, runtimepath=""):
    assert os.path.isfile(filename)
    global files_scanned, lines_scanned
    files_scanned += 1
    file_objects = set()

    fh = open_poserfile(filename)
    for line in fh:
        lines_scanned += 1
        if isinstance(line, bytes):
            line = line.decode("utf-8")
        idx = line.find('"')
        if idx != -1:
            end = line.rfind('"')
            found_str = line[idx + 1:end].strip()
            if found_str and found_str != "NO_MAP":
                file_objects.add(found_str)
    fh.close()

    return file_objects





adp001 ( ) posted Wed, 06 January 2021 at 9:35 PM

Extended version: Scans files recursively. Means: If a "readScript" is found, the referenced file is scanned too. Good example: V4. Lots of readscripts to a huge amount of files :)

def extract_files_from_poserfile(filename, runtimepath=""):
    assert os.path.isfile(filename)
    global files_scanned, lines_scanned
    files_scanned += 1
    file_objects = set()

    fh = open_poserfile(filename)
    for line in fh:
        lines_scanned += 1
        if isinstance(line, bytes):
            line = line.decode("utf-8")
        idx = line.find('"')
        if idx != -1:
            end = line.rfind('"')
            found_str = line[idx + 1:end].strip()
            if found_str and found_str != "NO_MAP":
                if line.strip().startswith("readScript"):
                    fname = convert_poserpath(found_str, runtimepath)
                    if os.path.isfile(fname):
                        file_objects |= extract_files_from_poserfile(fname, runtimepath)
                    else:
                        file_objects.add(found_str)
    fh.close()

    return file_objects




adp001 ( ) posted Wed, 06 January 2021 at 9:37 PM

And here is my version of "convert_poserpath":

def convert_poserpath(filename, runtimepath=""):
    # Make path Mac/Linux compatible
    if filename[1] == ":":
        # Watch for these strange Windows drives
        drv = filename[:2]
        filename = filename[2:]
    else:
        drv = ""
    filename = filename.replace(":", os.path.sep).replace("\\", "/")
    if runtimepath:
        idx = filename.lower().find("runtime")
        if idx != -1:
            filename = runtimepath + filename[idx + len("runtime"):]
    else:
        filename = drv + filename
    return filename




adp001 ( ) posted Wed, 06 January 2021 at 9:51 PM · edited Wed, 06 January 2021 at 9:56 PM

This is my scan result:

904 File entries found.
771455 Lines scanned inside 1143 Poserfiles starting with 'Victoria 4.2.cr2', in 0.243 seconds.

(Test run with Linux, Python 3.8)




adp001 ( ) posted Wed, 06 January 2021 at 10:07 PM

Above (in @4409589) the last "else" clause must be pulled back one stage (the else and the following line).

"else" belongs to "if line.strip().startswith("readScript"):"

(Don't know how this happend, in my editor it looks good)




adp001 ( ) posted Wed, 06 January 2021 at 10:07 PM




FVerbaas ( ) posted Thu, 07 January 2021 at 12:54 PM · edited Thu, 07 January 2021 at 12:57 PM
Forum Coordinator

Very interesting. The 'token' you use, a double quote in the line in the file, however may be a tad too simple.

Double quotes are used also for material names. From DawnSE.cr2 as provided with Poser ;

    
        shaderTree
            {
            node "poser" "PoserSurface"
                {
                name "PoserSurface"
                pos 10 10
                showPreview 1
                nodeInput "Diffuse_Color"
                    {
                    name "Diffuse_Color"
                    value 0.347301 0.137913 0.676046
                    parmR NO_PARM
                    parmG NO_PARM
                    parmB NO_PARM
                    node NO_NODE
                    file NO_MAP
                    }
                nodeInput "Diffuse_Value"

Also paths of referred files may or may not have quotes. They only need quotes if there are spaces in the path.

{
version
    {
    number 9
    }
figureResFile :Runtime:Geometries:HiveWire 3D:Dawn:Base:Dawn.obj
actor BODY:1

You will need to check on other things, multiple triggers, so, alas, much slower.


adp001 ( ) posted Thu, 07 January 2021 at 1:19 PM

You right. I should have known better.

But thanks. I'll change it ASAP and post another version.




adp001 ( ) posted Thu, 07 January 2021 at 1:28 PM

I't worked for me, because I wrote it to find images based on file extensions (jpg, png, bmp, etc). Images are always wrapped in double quotes – as far as I can see. So all the wrong findings get kicked because of no or false file extension.

But I'm interested to know how fast something like this can be done in Python (multiple choices). So I will test some different methodes :)




adp001 ( ) posted Thu, 07 January 2021 at 1:53 PM · edited Thu, 07 January 2021 at 1:56 PM

First test with regular expression \s+(:?morphPmdFile|objFileGeom|readScript|file|Map)\s(.*):

904 File entries found.
771455 Lines scanned inside 1143 Poserfiles starting with 'Victoria 4.2.cr2', in 1.755 seconds.

Disappointing.




adp001 ( ) posted Thu, 07 January 2021 at 2:59 PM

That's mutch better!

regex = \s+(:?morphPmdFile|morphBinaryFile|objFileGeom|readScript|figureResFile|visemeMapFile|file|textureMap|Map)\s(.*)
480 File entries found.
258615 Lines scanned inside 471 Poserfiles starting with 'Victoria 4.2.cr2', in 0.109 seconds.

Found files:
:Runtime:libraries:!DAZ:Victoria 4:V4rRing2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lForeArm:39-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing3:33-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rCollar:18-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rPinky1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb1:22-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky3:55-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky3:55-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:head:05-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rHand:21-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex3:27-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rForeArm:20-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lIndex3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rForeArm:20-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky3:36-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShin:61-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue04Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rThumb1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex2:26-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rMid1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky3:36-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShin:61-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShin:57-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue05Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:hip:01-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue05:16-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid3:49-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing3:52-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue05Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rHand:21-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid3:30-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex1:44-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lCollarGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb3:43-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing3:52-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_pe069_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_pe072_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_mr259_LnkPrms.pz2
    :Runtime:textures:DAZ:Characters:MilWom:V4:V4SmplLimbsM.jpg
    :Runtime:libraries:!DAZ:Victoria 4:rPinky1:34-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb1:22-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rToeChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_pe069_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky3:55-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue02Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShin:61-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex2:26-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lIndex2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lToe:63-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lCollar:37-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lMid2Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid3:49-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lCollar:37-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:abdomen:02-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing2:32-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky2:54-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:textures:DAZ:Characters:MilWom:V4:V4SmplEyesTr.jpg
    :Runtime:libraries:!DAZ:Victoria 4:V4lShldrChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid3:49-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongueTip:17-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4upperJawChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rMid3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lForeArm:39-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:neck:04-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue01Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rPinky1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky3:55-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing3:52-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb3:24-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex1:25-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lThumb3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4abdomenGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex1:44-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lMid3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb3:24-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing2:51-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing2:32-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing3:52-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongueTip:17-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lToe:63-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rForeArm:20-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:neck:04-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing3:33-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb1:41-ps_pe069inj_Chnnls.pz2
    :Runtime:textures:DAZ:Characters:MilWom:V4:V4SmplFaceM_BKN.jpg
    :Runtime:libraries:!DAZ:Victoria 4:rIndex1:25-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky1:34-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lThumb1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue03:14-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid2:29-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThigh:56-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:upperJaw:09-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rRing1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_pe072_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rShinChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rPinky2Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex2:45-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rThighGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex2:45-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rFoot:58-ps_pe082_Chnnls.pz2
    :Runtime:textures:DAZ:Characters:MilWom:V4:V4SmplEyesM.jpg
    :Runtime:libraries:!DAZ:Victoria 4:lThumb2:42-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4BODYGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky2:54-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lForeArmGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lFoot:62-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lToe:63-ps_pe070_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:head:05-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rFoot:58-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:neck:04-ps_pe070_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShldr:38-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lHand:40-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rShinGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky2:35-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lHand:40-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb3:43-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lFoot:62-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing1:31-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lToe:63-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky1:53-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rCollar:18-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky2:35-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid2:48-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lHand:40-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex2:26-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongueBaseChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky3:55-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rRing3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rToe:59-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb2:42-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing1:50-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid1:47-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue05:16-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShin:57-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:head:05-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:textures:DAZ:Characters:MilWom:V4:V4SmplLashesTr.jpg
    :Runtime:libraries:!DAZ:Victoria 4:V4lRing1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rForeArm:20-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:neck:04-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShldr:19-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid3:30-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lToe:63-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:chest:03-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lPinky2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue03Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lShinGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lRing1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue01Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid1:47-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rMid1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid1:47-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rFootChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:chest:03-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_mr259_LnkPrms.pz2
    :Runtime:textures:DAZ:Characters:MilWom:V4:V4SmplEyeSurfcM.jpg
    :Runtime:libraries:!DAZ:Victoria 4:V4rMid2Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lIndex1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rHand:21-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rPinky2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rFootGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:eyeBrow:06-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4bodyMorphsGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongueBase:11-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue04:15-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky2:35-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rHandGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid2:48-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThigh:60-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lFoot:62-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThigh:56-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThigh:60-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky3:36-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShldr:19-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex3:46-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing1:31-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky1:53-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lShinChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lHandGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShldr:19-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lCollar:37-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb2:23-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rEye:07-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:neck:04-ps_mr259_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lEyeGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb3:24-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb3:24-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid2:29-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4abdomenChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lCollar:37-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShldr:38-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue01:12-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid2:48-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing1:50-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky1:34-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb1:41-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:abdomen:02-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4hipChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:hip:01-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongueTipChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex3:46-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lowerJaw:10-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:eyeBrow:06-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:upperJaw:09-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lThumb1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lEye:08-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:Geometries:Null.obj
    :Runtime:libraries:!DAZ:Victoria 4:V4neckGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing1:31-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:neck:04-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:hip:01-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:head:05-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:abdomen:02-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rPinky3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid1:28-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky1:53-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lFoot:62-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4bodyMorphsChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rFoot:58-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing3:33-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex3:27-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex3:46-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb1:22-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb2:42-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky1:34-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rIndex2Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid3:30-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4headGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:hip:01-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing2:51-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lForeArm:39-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing1:31-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rThumb2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:abdomen:02-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rHand:21-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rCollar:18-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb1:22-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb2:23-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lFoot:62-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rToeGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lThumb2Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid3:30-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:chest:03-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShin:57-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue02Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky1:34-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid1:28-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rHand:21-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:chest:03-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing1:50-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lHand:40-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lEyeChnnls.pz2
    :Runtime:textures:DAZ:Characters:MilWom:V4:V4SmplEyeSurfcTr.jpg
    :Runtime:libraries:!DAZ:Victoria 4:V4rRing3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShldr:38-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid2:48-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThigh:60-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_pe082_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky2:54-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShldr:19-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rToe:59-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShin:61-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rThumb3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb3:43-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShin:61-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rForeArm:20-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb3:43-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid2:29-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThigh:56-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue04Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_pe070_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex2:26-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing2:32-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lPinky2Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid2:48-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThigh:56-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShldr:19-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid2:29-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rEyeChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rFoot:58-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:BODY:00-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThigh:60-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShin:61-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lForeArm:39-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4BODYChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex1:25-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb1:41-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rIndex2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex3:27-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rForeArmChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rMid3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid1:47-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex2:45-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lowerJawGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex3:27-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lowerJawChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rMid2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:eyeBrow:06-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShldr:19-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rForeArmGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:neck:04-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rEyeGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rShldrChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rToe:59-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_pe082_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex2:26-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid1:28-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lRing3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lMid3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lHand:40-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky3:36-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lIndex2Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky1:53-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lForeArm:39-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex3:46-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShldr:38-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_pe070_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rRing2Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lMid2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rFoot:58-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue04:15-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lCollar:37-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lRing2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing3:33-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb1:22-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb2:23-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing2:51-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:abdomen:02-ps_pe070_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex3:46-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lThumb2Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid1:47-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rForeArm:20-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky2:35-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rCollarGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rCollar:18-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rCollarChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShin:57-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4eyeBrowChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:chest:03-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rThighChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4neckChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lFootGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lHand:40-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4chestGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lCollar:37-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb2:42-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rThumb1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing2:51-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lToeChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rIndex3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongueTipGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lToe:63-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing3:33-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lForeArm:39-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing1:31-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:textures:DAZ:Characters:MilWom:V4:V4SmplMouthM.jpg
    :Runtime:libraries:!DAZ:Victoria 4:rMid2:29-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb2:42-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb1:41-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lThighChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShldr:38-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:chest:03-ps_pe070_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4eyeBrowGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThigh:56-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing1:50-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongue03Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb2:23-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lEye:08-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:head:05-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rIndex3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:chest:03-ps_mr259_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky2:54-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lPinky3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid3:49-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rThumb3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex2:45-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lShldr:38-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rCollar:18-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing2:51-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid3:30-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lowerJaw:10-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4tongueBaseGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid1:28-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue03:14-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShin:57-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex3:27-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rShldrGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex1:44-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rCollar:18-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lFoot:62-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex1:25-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex2:45-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:upperJaw:09-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rHand:21-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lCollarChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4upperJawGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:hip:01-ps_pe072_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rToe:59-ps_pe070_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb3:43-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lMid1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rShin:57-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing3:52-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rMid1:28-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lForeArmChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rHandChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb2:23-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rFoot:58-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky2:54-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rToe:59-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:chest:03-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lHandChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue02:13-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lPinky3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lFootChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue01:12-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:abdomen:02-ps_mr259_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lIndex1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4hipGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb3:24-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lToeGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:head:05-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:hip:01-ps_mr259_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rEye:07-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rIndex1:25-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:head:05-ps_pe070_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb1:41-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex1:44-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lRing1:50-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4headChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:neck:04-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing2:32-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lRing3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lPinky1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lThighGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rRing1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky3:36-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rToe:59-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:abdomen:02-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:hip:01-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lowerJaw:10-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lIndex3Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lMid1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lMid3:49-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lPinky1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:hip:01-ps_pe070_DAZ_LnkPrms.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rIndex1Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThumb1:41-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThigh:56-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rThumb1:22-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rThumb2Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:eyeBrow:06-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rPinky3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lThigh:60-ps_mr259_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4chestChnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongueBase:11-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rRing2:32-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:abdomen:02-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lThumb3Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lPinky1:53-ps_pe082_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:rPinky2:35-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:eyeBrow:06-ps_pe070_DAZ_Chnnls.pz2
    :Runtime:textures:DAZ:Characters:MilWom:V4:V4SmplTorsoM_BKN.jpg
    :Runtime:libraries:!DAZ:Victoria 4:lThigh:60-ps_pe069inj_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:bodyMorphs:64-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:tongue02:13-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lShldrGrps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4rIndex1Grps.pz2
    :Runtime:libraries:!DAZ:Victoria 4:hip:01-ps_pe069_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:lIndex1:44-ps_pe072_DAZ_Chnnls.pz2
    :Runtime:libraries:!DAZ:Victoria 4:V4lRing2Chnnls.pz2




adp001 ( ) posted Thu, 07 January 2021 at 3:05 PM

Avoiding duplicate scans (readScript) saves even more time:

480 File entries found.
258615 Lines scanned inside 471 Poserfiles starting with 'Victoria 4.2.cr2', in 0.093 seconds.




adp001 ( ) posted Thu, 07 January 2021 at 3:08 PM · edited Thu, 07 January 2021 at 3:08 PM

All tests made with Python 3.8, Linux (not Poser-Python).

Files stored on a SSD-Drive.




adp001 ( ) posted Thu, 07 January 2021 at 3:15 PM · edited Thu, 07 January 2021 at 3:21 PM

And this is the final function:

def extract_files_from_poserfile2(filename, runtimepath):
    assert os.path.isfile(filename)
    global files_scanned, lines_scanned
    files_scanned += 1
    file_objects = set()

    import re
    re_check = re.compile("s+(:?"
                          "morphPmdFile|"
                          "morphBinaryFile|"
                          "objFileGeom|"
                          "readScript|"
                          "figureResFile|"
                          "visemeMapFile|"
                          "file|"
                          "textureMap|"
                          "Map)s(.*)")

    fh = open_poserfile(filename)
    for line in fh:
        lines_scanned += 1
        if isinstance(line, bytes):
            line = line.decode("utf-8")

        res = re_check.match(line)
        if res:
            try:
                keyword = res.group(1)
                found_str = res.group(2).replace('"', "")
            except IndexError:
                # Happens if we have an empty quoted string
                continue
            else:
                if keyword == "objFileGeom":
                    res = re.match("ds+ds+(.*)", found_str)
                    if res:
                        found_str = res.group(1)
                found_str = found_str.strip()
                if found_str and found_str != "NO_MAP":
                    # Still something?
                    if keyword == "readScript" and found_str not in file_objects:
                        fname = convert_poserpath(found_str, runtimepath)
                        if os.path.isfile(fname):
                            file_objects |= extract_files_from_poserfile(fname, runtimepath)

                    file_objects.add(found_str)

    fh.close()
    return file_objects




adp001 ( ) posted Thu, 07 January 2021 at 3:37 PM · edited Thu, 07 January 2021 at 3:41 PM

"*" == a character with a big impact :)

exchange the regex to:

    re_check = re.compile("\s*(:?"
                          "morphPmdFile|"
                          "morphBinaryFile|"
                          "objFileGeom|"
                          "readScript|"
                          "figureResFile|"
                          "visemeMapFile|"
                          "file|"
                          "textureMap|"
                          "Map)\s+(.*)")

The old version ignores keyword starting without blanks on the left side. Exchange "s+" with "s*" changes the meaning from "must happen" to "may happen".




adp001 ( ) posted Thu, 07 January 2021 at 4:11 PM · edited Thu, 07 January 2021 at 4:12 PM

A complete testprogram can be downloaded from my website:

https://adp.spdns.org/ListFileRefsInFile.py

The scripts open a dialog to select the file to analyse. Then another dialog is opened to select the directory used as "runtime" (select just Posers runtime path in most cases).




structure ( ) posted Fri, 08 January 2021 at 5:25 PM
Forum Coordinator

'bumpMap ' , 'reflectionMap ' , 'transparencyMap '

perhaps add these terms also?

Locked Out


adp001 ( ) posted Fri, 08 January 2021 at 7:25 PM

structure posted at 7:25PM Fri, 08 January 2021 - #4409762

'bumpMap ' , 'reflectionMap ' , 'transparencyMap '

perhaps add these terms also?

Not the worst idea :)




adp001 ( ) posted Fri, 08 January 2021 at 7:30 PM

So thanks for the tip – script is updated.

Download




structure ( ) posted Sat, 09 January 2021 at 8:43 AM
Forum Coordinator

Thanks - good script,

Locked Out


FVerbaas ( ) posted Sat, 09 January 2021 at 11:25 AM
Forum Coordinator

Thanks. very useful Sorry but for the sake of good order: I found that in PoserPython on Windows it does not work for compressed files .crz's

LaFemme.crz that comes with Poser12 gave below errror:

Traceback (most recent call last):
  File "C:UsersFransDownloadsListFileRefsInFile.py", line 109, in 
    flist = extract_files_from_poserfile(path, alternate_searchpath)
  File "C:UsersFransDownloadsListFileRefsInFile.py", line 60, in extract_files_from_poserfile
    fh = open_poserfile(filename)
  File "C:UsersFransDownloadsListFileRefsInFile.py", line 34, in open_poserfile
    return gzip.open(filename, "r", encoding="utf-8")
  File "C:Program FilesPoser SoftwarePoser 12RuntimePythonlibgzip.py", line 50, in open
    raise ValueError("Argument 'encoding' not supported in binary mode")
ValueError: Argument 'encoding' not supported in binary mode

When I decompress to .cr2 it works correctly.

I can make a fix for own use, uncompress to a temp file and use that, but not sure if my mundane approach will meet your standards. ;-)


adp001 ( ) posted Sat, 09 January 2021 at 3:55 PM

Ok thanks for notifying. I restored the old method and check each line for encoding again instead only once while opening.

Script updated




adp001 ( ) posted Sun, 10 January 2021 at 3:30 AM

FVerbaas posted at 3:23AM Sun, 10 January 2021 - #4409811

Sorry but for the sake of good order: I found that in PoserPython on Windows it does not work for compressed files .crz's

With Windows the lib "gzip" seems to open files in bytemode (mode "rb") even if only "r" is given. Good to know.

Maybe it is a bit faster to do the string handling in byte mode instead of decoding each line. But I leave that to others :)




FVerbaas ( ) posted Sun, 10 January 2021 at 10:32 AM · edited Sun, 10 January 2021 at 10:33 AM
Forum Coordinator

Works fine now also with compressd formats.

I added "runPythonScript|" to the lines to be parsed.

image.png

The characters of the PE figure for example rely on scripts.


adp001 ( ) posted Sun, 10 January 2021 at 10:43 AM

FVerbaas posted at 10:41AM Sun, 10 January 2021 - #4409850

Works fine now also with compressd formats.

Thanks for feedback!

I added "runPythonScript|" to the lines to be parsed.

Jup! Most important! :)




adp001 ( ) posted Sun, 10 January 2021 at 10:56 AM

I am currently looking through old scripts. Thereby I found an interesting piece of code concerning filehandling, which I am making fit for Python 3. Multithreading and event driven. I started the script in 2006, last major change in 2008 :)

The following snippet may also be interesting regarding the current script:

def isZipFile(fname):
    """
        Returns True if  is a zip-file, else False.
    """
    with open(fname) as fh:
        return fh.read(3) == chr(0x1f) + chr(0x8b) + chr(0x08)

Scanning files directly from a zip package, Useful or not?




adp001 ( ) posted Sun, 10 January 2021 at 11:08 AM · edited Sun, 10 January 2021 at 11:12 AM

Script updated.

Download

I have rearranged the script a bit. The "re.compile" inside the function bothered me. It was recompiled on recursive calls again and again. This is not nice.




FVerbaas ( ) posted Tue, 12 January 2021 at 1:18 PM · edited Tue, 12 January 2021 at 1:19 PM
Forum Coordinator

adp001 posted at 1:10PM Tue, 12 January 2021 - #4409853

def isZipFile(fname):
    """
        Returns True if  is a zip-file, else False.
    """
    with open(fname) as fh:
        return fh.read(3) == chr(0x1f) + chr(0x8b) + chr(0x08)

Scanning files directly from a zip package, Useful or not?

Yes, but I must admit I am at a loss how this works. The signature used in the script:

def open_poserfile(filename):
    fh = open(filename, "rb")
    magic = fh.read(2)
    fh.close()
    if magic == b'37213':
        return gzip.open(filename, "r")
    else:
        return open(filename, "r")

is a totally different one.


adp001 ( ) posted Tue, 12 January 2021 at 1:41 PM

Zip and gzip are 2 diffent pair of shoes :)




adp001 ( ) posted Tue, 12 January 2021 at 4:00 PM

To be a bit more precise, a gzip file, as we have it in Poser, is a single compressed file that contains nothing but the data in packed form.

A ZIP file, on the other hand, is a catalog of files, possibly even a catalog of directories, which also contains the individual files.

The compression method is the same for both.




FVerbaas ( ) posted Wed, 13 January 2021 at 8:50 AM · edited Wed, 13 January 2021 at 8:51 AM
Forum Coordinator

Ah! That explains. I had always taken gzip to be just a pirate hack of zip. LOL!


adp001 ( ) posted Wed, 13 January 2021 at 9:49 AM · edited Wed, 13 January 2021 at 9:52 AM

FVerbaas posted at 9:46AM Wed, 13 January 2021 - #4410168

Ah! That explains. I had always taken gzip to be just a pirate hack of zip. LOL!

:)

Gzip means GNU-Zip. See RFC 1950, 1951, 1952 from 1996

https://tools.ietf.org/html/rfc1950
https://tools.ietf.org/html/rfc1951
https://tools.ietf.org/html/rfc1952

Or Wikipedia: https://en.wikipedia.org/wiki/Gzip




Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.