Jump to content

Lilith Gardell

Member
  • Content Count

    22
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Lilith Gardell

  • Rank
    Greenhorn

Personal Information

  • Location
    Switzerland

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Lilith Gardell

    Updating Node

    A happy new year to all of you! Maybe this is the thread my question fits best in. I just opened a vwx2017 file with marionette networks in VWX 2018 for the first time. What is left from the networks is a chaos of pure lines where the connection lines used to be. No nodes at all. The Marionette objects are still there. When I first had a look at the network inside all the connections were cut. The connection lines end somewhere near the other node. When I close and open again. The nodes are magically reconnected. That's not normal, is it? As far as I understand the thread above this should not happen. VWX 2018 doesn't run stable at my computer yet. To be precise: it crushes every time I close it. Even if I don't work in it at all. So I haven't started working with this version seriously yet but stick to VWX 2017. Maybe this marionette conversion behavior gives a clue what is wrong with my VWX 2018 so that could be fixed too? I add both the file in its original vwx2017 version and the vwx2018 version with lines instead of networks. Maybe someone has an idea about this? (About the content: I am trying to produce multiple phyllotaxis with a series of different angles and put them in a row - just wanted to see if DomCs Change Marionette OIP Parameter script, in VWX2018, could help with that. But that's another question.) Phyllotaxis doublizieren und versetzen v2018.vwx Phyllotaxis doublizieren und versetzen.vwx
  2. Lilith Gardell

    Script help for classes

    Hello, in a Marionette workshop last week we put together a script to dublicate selected objects on the design layer 'unused' and then delete the original object - which does the job of changing the layer to the design layer 'unused'. I tested it and added the criteria "layer is not 13 / 14 / 15" - those are sheet layers. The discovery of today. Otherwise it would work on activated objects on the sheet layers also which I don't want to happen. I guess this is it. At least I haven't found any other problems with it so far. When I manage to change this script into a tool and give it a shortcut key the workflow gets really quick. Have a great day, Lilith l = 'unused' GefundeneObjekte = [] def DoSomething(h): GefundeneObjekte.append(h) vs.ForEachObject(DoSomething, "NOTINDLVP & NOTINREFDLVP & (SEL=TRUE) & (L<>'13') & (L<>'14') & (L<>'15')") for element in GefundeneObjekte: new1 = vs.GetLayerByName(l) o = element created = vs.CreateDuplicateObject(o, new1) vs.DelObject(o) vs.ReDrawAll()
  3. Lilith Gardell

    Script help for classes

    So cool! I didn't know that it's possible to actually build your own tool. So it could be like any other tool in the construction palette? And be selectable via short key, even the modes? That would make it even quicker. Mode 1 and 2 sound perfect. What do you mean with giving graphical highlighting to the invisible objects? When I change the visibility of the "hidden class" - for example with mode 2 - I can see the previously invisible objects and pick those that need to be visible again. There will not be the case that all objects need to be reset to original class. It is always only a selection. Therefore I don't need Mode 3. Is the problem with the selection solved? Would it be possible to combine this with the SetLayer Script I found in the Marionette library? For a second tool or for another "class of modes" for a choice between class and layer? Like: choose between class and layer - then choose between mode 1 and 2. It feels like I will be able to build my own new world. Have a great day, Lilith
  4. Lilith Gardell

    Script help for classes

    Hi Pat, I found a SetLayer script in Marionette. @Marionette.NodeDefinition class Params(metaclass = Marionette.OrderedClass): this = Marionette.Node( "Set Layer" ) this.SetDescription( 'Adds an object to a specified layer' ) object = Marionette.PortIn(vs.Handle(0), 'obj') object.SetDescription( "The input object" ) list = [] h = vs.ActLayer() for i in range(0,vs.NumLayers()): list.append(vs.GetLName(h)) h = vs.NextLayer(h) layer = Marionette.OIPControl('Layers', Marionette.WidgetType.Popup, 0, list) layer.SetDescription( "A list of available layers" ) obj = Marionette.PortOut() obj.SetDescription( "The result object" ) def RunNode(self): l = self.Params.layer.value o = self.Params.object.value list = self.Params.list new = list[l] new1 = vs.GetLayerByName(new) created = vs.CreateDuplicateObject(o, new1) vs.Marionette_DisposeObj(o) self.Params.obj.value = created Don't know how to use it yet, but it does exist.
  5. Lilith Gardell

    Script help for classes

    Hello Pat, thank you very much for reading and figuring out my long message and for your support. At one point my explanation still seems to be misleading. The selection I need is the same selection a tool uses. It only works on visible selected objects. It does not work on selected objects on a layout - as long as you are not working on this layout while using the tool. It does not work on selected objects in a non-selected group – as long as you are not inside this group while using the tool. It does not work on selected objects on a layer or a layout or in group B – as long as you work and use the tool inside of group A. It does not work on selected objects on a layer or a layout Y or in a group – as long as you work and use the tool on layout X. That’s what I am searching for. I don’t want the script to work on any selection that I don’t “see” in the moment I am using the script – which would be a selection inside a group or on a layout I am not working on at that moment. Each show has its own plan, so I don’t need different classes for different shows. But I could sometimes use it for different scenes. Each show starts with the standard plan with all the standard equipment in it but the original standard plan stays untouched. I need to “hide” lights that are not being used – via putting them in a hidden class. As things change during the rehearsal process, I need to let those “hidden” lights reappear that are being used again in the next rehearsal – via putting them in their original class. I need to be able to select from those which are hidden. Not all of the hidden lights will be used/reappear. (Well, in my structure it’s mostly about layers and not classes, but that’s not relevant at that moment and there isn’t a SetLayer command anyway. Who programs the commands actually? If there is a SetClass, there could be a SetLayer, couldn’t it?) I like the idea of having the original class (or layer) saved in the light info record and being able to use a script to put it back to this original class via this stored information instead of via the info in my head. But I am afraid that for this we still have to solve the fundamental problem of the selection first, don’t we? I have not yet found a criteria which looks at a certain entry inside a record. I can just set the criteria: linked or not linked with a certain record/database. How does the Reset to Original Class script get the info from the record? I am not sure I understood the part about the “flag” that indicates which lights need to be “hidden”. Manually I just select the lights and change their class (layer) via info-palette. Would I need to do the little detour to first manually write a “hide-flag” into the record and then use the Hide objects script? If I got it right, I would translate my manual workflow into this: Store Current Class (=Writes Class-Name into a user-defined input-field “Original Class” in the record?) – first with all the standard equipment in the standard plan, so this is fixed, and then, working on a certain show, for every new light that I insert additionally into the plan. To hide certain lights, I manually select and write a “Hide-flag” in a second user-defined input-field “Hide” in the record, so I can use the Hide Objects Script which changes the class into “Hidden Class”. To let certain hidden objects in the “Hidden Class” reappear, I manually select them and write a “Reappear-flag”, and then run a Reset to Original Class script, combined with a script that erases any “Hide” or “Reappear”-flag. Did I get you right? Or work via linking and unlinking a database “Hide” and a database “Original Class” if you cannot grab the info inside of a database? I'd love to sort this out. It sounds quite promising. Best wishes, Lilith
  6. Lilith Gardell

    Script help for classes

    Hello Pat, hello Raymond, Thank you very much for your messages and your help. Two thoughts: first, I am afraid I have to postpone my question / my attempt to create a script for this task because I don’t understand your answer yet, Raymond. I need to learn more about scripting in general to actually be able to put your answer into practice. Second, I got the impression that the structure of classes and layers of the plan I am working with – which is created to meet the demands of our theatre with different multi-storey areas - might not work well from the point at which you try to create a script for this special task. I try to explain better what I am doing and why, and I created a simplified version of the file. Okay, the theatre has around 200 lighting fixtures on different storeys and different areas as standard equipment. For example in the area of the audience: orchestra seating balcony, 1.balcony, 2.balcony. Each with various lighting fixtures. Each balcony lies on its own layer to pull the overlapping balconys apart in the layout. Here I guess it would slow me down if I use a criteria like ForEachObjectInLayer. I am used to select lighting fixtures on any of those layers and put them (manually) into the hidden class. I created a hidden layer and later a hidden class to be quick enough with the changes during lighting rehearsals. All fixtures that are thrown out in one rehearsal and shall not be in the layout anymore, can be part of the game again in the next rehearsal. To save the effort to put the fixtures in question again and new into the plan, to give them all their data, to adjust the labels and all that, I just “park” them into the hidden layer (or class) when they are not used and put them back to their original layer (or class). It started with the hidden layer. The hidden class is needed as soon as you work inside a group or on a layout. Each boom is a group for example. If there is additional text on the layout for a thrown out fixture, it needs to be managed on the layout. Here I can only use classes. I guess I could maybe perhaps possibly change the structure to use just one layer for the standard equipment and one layer for the added lighting fixtures. I need to think that through calmly first to check all the consequences and I cannot do it in the middle of a theatre season. Or I just do this task manually like before and try with completely different tasks first. If I would change the structure to just one (or two) layers and use vs.ForEachObjectInLayer() I could avoid affecting selected objects in groups on other layers and anything on layouts as I understand and I would avoid running the script several times because of several layers. That sounds great. But – maybe as I don’t understand the possibilities of the IF statements enough – I don’t know yet how to avoid affecting selected fixtures in groups (in the same layer). Is the solution to just put my booms on a separate layer? I tried to understand how the code differs between lighting fixtures outside and inside a group. I can find the code for the creation of the group, but don’t find any mark which fixture is in the group, so I don’t know how to exclude objects in a group. In the simplified version of the plan there are four lighting fixtures on three different layers. One layer is hidden. The lighting object on this layer is selected. There is a group with four lighting fixtures (the boom), with two lighting fixtures selected. There is a test layout. If I run the (second) script with vs.ForEachObject() I can exclude the non-selected and non-visible objects, but not the selected objects that are inside a non-selected group and not the selected objects on the test layout (again both inside and outside of a non-selected group). I hope now you can understand better what I am doing and why. And maybe we find the point in the code about the difference of being in a group or not. Or find out, how a tool in VWX makes its selection. A tool ignores any selected object that lies on a hidden layer or class, or that lies on a layout I am not working on at the moment, or that lies in a group. That’s exactly what I need. Best wishes from Zurich, Lilith simplified_version_standard_plan.vwx
  7. Lilith Gardell

    Script help for classes

    If I create a script via Extras-Menue/Search and change (which might have a different name in English as I translated freely), I can choose not to work in/on groups and it leaves selected objects in non-selected groups alone. For example: import vs; vs.EditProperties("((V) & (SEL=TRUE))"); But if I take the same criteria ((V) & (SEL=TRUE)) into my other script, it behaves differently. With this script it does work on objects in groups again. c='00 spielt nicht mit' def DoIt(h): vs.SetClass(h, c) vs.ResetObject(h) return() criteria="((V) & (SEL=TRUE))" vs.ForEachObject(DoIt, criteria) I don't understand where the difference comes from.
  8. Lilith Gardell

    Script help for classes

    To Pat: I am open to switch to Vectorscript as I am new to scripting anyways.
  9. Lilith Gardell

    Script help for classes

    Hello Pat, thank you very much! I tried your script and tried to find the right criteria. It seems my main problem is selected objects in not-selected groups. I found the criteria for "object is not a group", but the script still works on selected objects _inside_ groups that are not selected. Do you have any idea how to avoid that? I already thought about having a script to deselect all objects (so no objects inside of groups are selected), then select the objects I want to put in the special class manually, then run the script to put them into this class. This might still be faster than to do it all manually via info palette. I exported VWX files as text files and tried to find out how for example the move-tool works. I would like to find out how their criteria works - because this tool ignores selected objects in not-selected groups. It just works on selected objects that are visible, not in a container object and not in a viewport/layout. That's exactly what I need. But I didn't find it yet. Somehow the process of the tool is not in the text - only the result. Or did I miss it? All the best, Lilith - away from the computer from tomorrow till monday because of a little holiday
  10. Lilith Gardell

    Script help for classes

    A criteria like SetLayer doesn't exist so I went for the version with the class.
  11. Lilith Gardell

    Script help for classes

    I did exactly what you suggest: I created a special layer (and class - for objects that are in a group or for some text etc in a layout) to be invisible. What I am looking for now is a faster way to put the lighting objects into this layer (or class). Okay, thank you. So I used locking before, but didn't know the english expression.
  12. Lilith Gardell

    Script help for classes

    Hi bcd! I am searching for a faster way via script to "park" lighting devices into a certain class that is invisible in my layouts. (During rehearsal process the lighting devices of our standard equipment tend to be thrown out and then be part of the play again and so on.) Saved Views don't help with that, do they? What does locking instruments mean? I got some ideas from one of the instructors how to adjust the criteria. Didn't have time yet to test them.
  13. Lilith Gardell

    Script help for classes

    Hello, after some tests I figured out that I need to find a way to exclude both groups and layouts and objects that are not visible at the moment (for the last I found something: (NOTINDLVP & NOTINREFDLVP & (V)) otherwise there will be bad surprises. Or train myself to never ever leave something activated/selected in a group or layout or in a class or layer that is not visible... no, wait, if I change the class of an object to another class that is not visible (which I need to do very often) I`d have to change this new class to be visible again, deselect all objects, hide the class again and then go on with my work. That seems to be more work than to do all that without the script... hhm... Are there any other ideas?
  14. Lilith Gardell

    Script help for classes

    Okay... I changed it to criteria="((SEL=TRUE))" and it seems to work like I would expect. I will run some more tests.
  15. Lilith Gardell

    Script help for classes

    c='spielt nicht mit' def DoIt(h): vs.SetClass(h, c) vs.ResetObject(h) return() criteria="(INSYMBOL & INOBJECT & INVIEWPORT & (SEL=TRUE))" vs.ForEachObject(DoIt, criteria) (SEL=TRUE) is already part of the criteria, but it somehow doesn`t work. At least I don`t get how.

 

7150 Riverwood Drive, Columbia, Maryland 21046, USA   |   Contact Us:   410-290-5114

 

© 2018 Vectorworks, Inc. All Rights Reserved. Vectorworks, Inc. is part of the Nemetschek Group.

×