Menu

Printable or saveable patch list

2013-07-10
2013-07-18
  • Tom Lincoln

    Tom Lincoln - 2013-07-10

    From the fixtures tab the ability to print out / save a txt file of a patch list with fixture name, start dmx channel in number form and binary (simpler than printing a picture for each fixture).

    Maybe the ability to just select what fixtures you want to print out on a patch list.

    Output could be something like this

    QLC+ Patch List for testshow.qxw
    
    Fixture       Universe     Address      Binary
    
    Mac500 #1     1            1            1000000000
    Mac500 #2     1            13           1011000000
    Mac500 #3     1            25           1001100000
    Mac500 #4     1            37           1010010000
    

    Regards, Tom

     

    Last edit: Tom Lincoln 2013-07-10
  • Massimo Callegari

    At the moment there is the possibility to export the fixtures list from the fixture panel (document icon with an arrow on it)
    They're saved in XML format. Then you can parse the file how you want and build a printable list.

    What's this functionality for by the way ? A sort of checklist ?

     
  • Tom Lincoln

    Tom Lincoln - 2013-07-12

    Ok, will give that a go.

    Functionality is so that I can take a list and go round to each light and change its dmx address to how I have patched in program, currently I just write down the fixtures and address's on a piece of paper then go round the grid changing the addresses

     
  • Massimo Callegari

    This is probably one of the reasons why they invented laptops :)
    Just kidding ;)

     
  • Tom Lincoln

    Tom Lincoln - 2013-07-12

    I was thinking about useing vnc from my tab and do it that way

     
  • Tom Lincoln

    Tom Lincoln - 2013-07-13

    Got it to work with a bit of python, not worked out how to make a binary dip switch representation yet

    import xml.etree.ElementTree as ET
    import sys
    def parseXML(xml_file):
        tree = ET.ElementTree(file=xml_file)
        root = tree.getroot()
        fixtures = root.findall('Fixture')
    
        print "-" * 40
        print "QLC Patch List"
        print "-" * 40
        print "Name\t\t\tUniverse\tAddress"
    
        for fixtures in fixtures:
            fixture_Name = fixtures.findall('Name')
        fixture_Universe = fixtures.findall('Universe')
        fixture_Address = fixtures.findall('Address')
            for fixture_nam in fixture_Name:
          for fixture_uni in fixture_Universe:
            for fixture_add in fixture_Address:
                print "%s\t\t %s\t\t %s\t" % (fixture_nam.text, fixture_uni.text, fixture_add.text)
    
    if __name__ == "__main__":
        if len(sys.argv) >= 2:
          filename = sys.argv[1]
          parseXML(filename)
        else:
        print "Please specify a patch file to read"
    

    It Prints out this when run on a .qxfl file

    ----------------------------------------
    QLC Patch List
    ----------------------------------------
    Name            Universe    Address
    Dimmers #1       0           0  
    Dimmers #2       0           6  
    Dimmers #3       0           12 
    Dimmers #4       0           18 
    
     
  • Jano Svitok

    Jano Svitok - 2013-07-14

    I fixed some things, and added the DIP display. Enjoy! (tested with python 2.7)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #!/usr/bin/python
    import xml.etree.ElementTree as ET
    import sys
    
    def parseXML(xml_file):
        tree = ET.ElementTree(file=xml_file)
        root = tree.getroot()
        fixtures = root.findall('Fixture')
    
        print "-" * 53
        print "QLC Patch List"
        print "-" * 53
        print "%-20s %10s %10s" % ("Name", "Universe", "Address")
    
        for fixture in fixtures:
            fixture_Name = fixture.findall('Name')[0].text
            fixture_Universe = int(fixture.findall('Universe')[0].text)
            fixture_Address = int(fixture.findall('Address')[0].text)
            fixture_Dip = '{0:010b}'.format(fixture_Address)
            print "%-20s %10i %10i %s" % (fixture_Name, fixture_Universe, fixture_Address, fixture_Dip)
    
    if __name__ == "__main__":
        if len(sys.argv) >= 2:
            filename = sys.argv[1]
            parseXML(filename)
        else:
            print "Please specify a patch file to read"
    
     
  • Tom Lincoln

    Tom Lincoln - 2013-07-15

    Nice,
    Just noticed that the fixture address should be the address + 1

     
  • Tom Lincoln

    Tom Lincoln - 2013-07-15

    Changed a bit of your code
    Reversed the Binary representation and + 1 to the address
    Probably need to add a gap between address and dip

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #!/usr/bin/python
    import xml.etree.ElementTree as ET
    import sys
    
    def parseXML(xml_file):
        tree = ET.ElementTree(file=xml_file)
        root = tree.getroot()
        fixtures = root.findall('Fixture')
    
        print "-" * 53
        print "QLC Patch List for " + filename
        print "-" * 53
        print "%-20s %10s %10s %10s" % ("Name", "Universe", "Address", "Dip")
    
        for fixture in fixtures:
            fixture_Name = fixture.findall('Name')[0].text
            fixture_Universe = int(fixture.findall('Universe')[0].text)
            fixture_Address = int(fixture.findall('Address')[0].text)+1
            fixture_Dip = '{0:010b}'.format(fixture_Address)[::-1]
            print "%-20s %10i %10i %s" % (fixture_Name, fixture_Universe, fixture_Address, fixture_Dip)
    
    if __name__ == "__main__":
        if len(sys.argv) >= 2:
            filename = sys.argv[1]
            parseXML(filename)
        else:
            print "Please specify a patch file to read"
    
     

    Last edit: Tom Lincoln 2013-07-15
  • Anonymous

    Anonymous - 2013-07-18

    Would be possible to do the opposite?
    From a manual edited a "patch list" to a "show file"?
    (personally I'm not able)
    In theatres it's almost impossible to decide the fixtures addresses, this would be a nice help.

     
  • Jano Svitok

    Jano Svitok - 2013-07-18

    Would you please describe the scenario in more detail? I'm not sure I understood correctly.

    You want to print the patch list, then manually update it on the stage (e.g. with a pen :)
    get back to computer, edit the patch list text file and import that back to QLC?

    Can't you just edit the patching directly in QLC? It seems that I'm missing something, so I'm asking for more details...

     
  • Anonymous

    Anonymous - 2013-07-18

    Hi Jano,
    I've an already programmed show with 80 dimmers: the next venue I'll have to change all of them and it won't be easy because QLC+ will block me -and normally it's a good thing- every time the new fixtures address will be already used in the "old" patch (and in a theatre I can't change the dimmer addresses off the house, often they don't aloud me because it's a fixed installation and they've their software controlling something else, like audience lights, services, safety lights etch..)

    I was only thinking that it could be more simple to edit a patch file and then import to QLC+.

    For this show with only 80 dimmers, an easy temporary solution it will be to change the universe, but this is not the "correct" solution for everybody.
    (or I could edit the project file by myself too)

     
  • Jano Svitok

    Jano Svitok - 2013-07-18

    I see now :)

    Idea #1: What about being able to unpatch the fixtures (i.e. they would have no address for some time) and then patch them in the new order? Though I'm not sure how hard is that to implement (the rest of the program must cope if the fixture has no address).

    The idea is: press button to clear all DMX addresses, then enter new ones, save.

    Idea #2: is to allow multiple patching, or at least temporary - in that case QLC would allow overlapping addresses, but you could not leave the fixture tab until you fix it.

    Idea #3: allow separate patching for each venue in the workspace. - I don't like this :)

     
  • Massimo Callegari

    Jano, from my point of view, none of the 3 :)
    Too much coding for a single feature.
    By the way, guys, this is off-topic
    Giacomo opened another topic for this and I already gave my answer:
    https://sourceforge.net/p/qlcplus/discussion/general/thread/dc1e9b7c/

    @Jano, see my last 2 commits

     
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.