Jump to content

Stephan Moenninghoff

Vectorworks, Inc Employee
  • Posts

    1,330
  • Joined

  • Last visited

Posts posted by Stephan Moenninghoff

  1. 25 minutes ago, the frog said:

    hello

    Maybe it’s because of the bug inside the covert to poly node see

     

    convert to polygon doesn't work in marionette object

    Hmm.. looks like a different issue but who knows.

    BTW it looks like the forum is breaking the links when copying and pasting. Your hyperlink comes up dead.

  2. 32 minutes ago, Marissa Farrell said:

    @Pat Stanford & @Stephan Moenninghoff

     

    I've been through all of those functions and unfortunately I still haven't figured it out.

    The locations returned all appear to be on the layer plane instead of in their 3D location projected to the screen. I don't think the function Pat mentioned takes the Z value into account, and I've struggled to find anything that can help offset that (which is why I was playing with the Layer Ref functions)

    OK, thanks, Marissa. I was just looking for a quick and dirty Marionette to fix a user problem. We'll probably have to code this properly in the SDK. Labelling parts in a drawing. Always a challenge :-)

  3. 7 hours ago, Alan Woodwell said:

    As yo move the object you would need to have the screen plane object reposition itself.

    Hi Alan, yes, that will be the next step, or, ideally, I want this to work inside the annotation space of viewports. Your example works but it converts text to polyline in the process. I understand why you need to do this. Text somehow cannot be moved in z. This was part of my problem.

    @Pat Stanfordthanks for mentioning the VS function. Maybe this will do what I need. I'll have to play with it.

  4. 6 hours ago, Alan Woodwell said:

    @Stephan MoenninghoffHi, This network places text on screen plane or Layer Plane. Hope this helps?

    001.vwx

    Capture.JPG

    Hi Alan,

    Thanks for the help.

    I cannot download your file - the link is broken. Just to clarify: I am not having problems placing text on the screen plane or on the layer plane. The Set Planar Reference node takes care of that. What I cannot do is place text on a point on the screen plane that is a projection of a 3D point.

  5. 1 minute ago, Marissa Farrell said:

    I do believe, however I haven't tested, that you can use the Move node to move the text to a 3D location. It would still exist on the layer plane, though, instead of the screen plane (if that even works)

     

    Thanks Marissa, but unfortunately, it doesn't seem to work. (In theory, I am doing that already by feeding pCenter into the text's position). But I have tried move also. To no avail.

  6. Is there a way to obtain screen x/y co-ordinates of 3D points or loci? I want to place text objects at the centre of 3D objects but in screen plane. I can find the objects' centre and I can place a 3D Locus there, no problem. Now I want to either place a text object in 3D or on the screen plane but where the centre point of the 3D object is. Here's a fake result:

     

     598dc7dd58ea9_Bildschirmfoto2017-08-11um17_05_49.png.a44c12ad8df0f318bfbc246cfb3b3d1a.png

     

    I want this to run as an executable Marionette, not as an object because I'm looking for a specific object type in the current layer to be labelled.

    I cannot seem to find a node that will return the screen plane co-ordinates of a 3D point. Also, there seems to be no way to move a text object to a specified location in 3D space.

     

    598dca17bc34d_Bildschirmfoto2017-08-11um17_15_22.png.e3b50a79c36f4931f365a38c09b99412.png

  7. Hi @Nico VindevogelI'll post a new project when I have it ready, still working on it. In the mean time, do this: Just hook the separator up anywhere in the network, I don't think its position matters. I have wired it to a node near the end though so it does not get lost in the network. Combined with the right sorting (see above) you should pretty much get the result I had. HTH.

  8. Could the slider be modified to accept its min, max and default values from input ports? Let's assume I wanted to set the amount of an element in a list by slider. In that case I would need to get the list length for its maximum and default values. If anyone can help me I would be most grateful. I promise to learn Python one day. All this Marionette wiring is keeping me off it, I guess :-). 

  9. I had assumed that the "Split List" node will split a list at a given index. I have used this node before with simple lists and it worked as advertised. Now I'm trying to split a zipped list and I'm finding that the split is not carried out at the specified index. It seems the list is split at the previous, unzipped index.

     

    This is the list to split (at index 15):

     

     

      Number of Items: 30

      [0]  = [(525.1999999999999, 0, 187), [182.71333333333334, 73]]

      [1]  = [(0, 0, 0), [174.82333333333332, 97]]

      [2]  = [(707.9133333333333, 0, 151), [151.42333333333332, 69]]

      [3]  = [(525.1999999999999, 0, 0), [182.71333333333334, 107]]

      [4]  = [(347.33666666666664, 0, 272), [177.86333333333332, 105]]

      [5]  = [(0, 0, 97), [174.82333333333332, 82]]

      [6]  = [(174.82333333333332, 0, 133), [172.51333333333332, 56]]

      [7]  = [(707.9133333333333, 0, 88), [151.42333333333332, 63]]

      [8]  = [(707.9133333333333, 0, 220), [151.42333333333332, 105]]

      [9]  = [(174.82333333333332, 0, 242), [172.51333333333332, 82]]

      [10] = [(0, 0, 179), [174.82333333333332, 105]]

      [11] = [(859.3366666666666, 0, 204), [140.66333333333333, 69]]

      [12] = [(859.3366666666666, 0, 0), [140.66333333333333, 103]]

      [13] = [(525.1999999999999, 0, 107), [182.71333333333334, 80]]

      [14] = [(174.82333333333332, 0, 67), [172.51333333333332, 66]]

      [15] = [(707.9133333333333, 0, 325), [151.42333333333332, 67]]

      [16] = [(347.33666666666664, 0, 76), [177.86333333333332, 70]]

      [17] = [(859.3366666666666, 0, 103), [140.66333333333333, 101]]

      [18] = [(347.33666666666664, 0, 0), [177.86333333333332, 76]]

      [19] = [(0, 0, 284), [174.82333333333332, 80]]

      [20] = [(525.1999999999999, 0, 330), [182.71333333333334, 80]]

      [21] = [(707.9133333333333, 0, 0), [151.42333333333332, 88]]

      [22] = [(525.1999999999999, 0, 260), [182.71333333333334, 70]]

      [23] = [(859.3366666666666, 0, 273), [140.66333333333333, 52]]

      [24] = [(859.3366666666666, 0, 325), [140.66333333333333, 91]]

      [25] = [(347.33666666666664, 0, 146), [177.86333333333332, 72]]

      [26] = [(174.82333333333332, 0, 0), [172.51333333333332, 67]]

      [27] = [(347.33666666666664, 0, 218), [177.86333333333332, 54]]

      [28] = [(0, 0, 364), [174.82333333333332, 97]]

      [29] = [(174.82333333333332, 0, 189), [172.51333333333332, 53]]

     

    This is the first list:

     

     

      Number of Items: 60

      [0]  = (525.1999999999999, 0, 187)

      [1]  = [182.71333333333334, 73]

      [2]  = (0, 0, 0)

      [3]  = [174.82333333333332, 97]

      [4]  = (707.9133333333333, 0, 151)

      [5]  = [151.42333333333332, 69]

      [6]  = (525.1999999999999, 0, 0)

      [7]  = [182.71333333333334, 107]

      [8]  = (347.33666666666664, 0, 272)

      [9]  = [177.86333333333332, 105]

      [10] = (0, 0, 97)

      [11] = [174.82333333333332, 82]

      [12] = (174.82333333333332, 0, 133)

      [13] = [172.51333333333332, 56]

      [14] = (707.9133333333333, 0, 88)

      [15] = [151.42333333333332, 63]

      [16] = (707.9133333333333, 0, 220)

      [17] = [151.42333333333332, 105]

      [18] = (174.82333333333332, 0, 242)

      [19] = [172.51333333333332, 82]

      [20] = (0, 0, 179)

      [21] = [174.82333333333332, 105]

      [22] = (859.3366666666666, 0, 204)

      [23] = [140.66333333333333, 69]

      [24] = (859.3366666666666, 0, 0)

      [25] = [140.66333333333333, 103]

      [26] = (525.1999999999999, 0, 107)

      [27] = [182.71333333333334, 80]

      [28] = (174.82333333333332, 0, 67)

      [29] = [172.51333333333332, 66]

      [30] = (707.9133333333333, 0, 325)

      [31] = [151.42333333333332, 67]

      [32] = (347.33666666666664, 0, 76)

      [33] = [177.86333333333332, 70]

      [34] = (859.3366666666666, 0, 103)

      [35] = [140.66333333333333, 101]

      [36] = (347.33666666666664, 0, 0)

      [37] = [177.86333333333332, 76]

      [38] = (0, 0, 284)

      [39] = [174.82333333333332, 80]

      [40] = (525.1999999999999, 0, 330)

      [41] = [182.71333333333334, 80]

      [42] = (707.9133333333333, 0, 0)

      [43] = [151.42333333333332, 88]

      [44] = (525.1999999999999, 0, 260)

      [45] = [182.71333333333334, 70]

      [46] = (859.3366666666666, 0, 273)

      [47] = [140.66333333333333, 52]

      [48] = (859.3366666666666, 0, 325)

      [49] = [140.66333333333333, 91]

      [50] = (347.33666666666664, 0, 146)

      [51] = [177.86333333333332, 72]

      [52] = (174.82333333333332, 0, 0)

      [53] = [172.51333333333332, 67]

      [54] = (347.33666666666664, 0, 218)

      [55] = [177.86333333333332, 54]

      [56] = (0, 0, 364)

      [57] = [174.82333333333332, 97]

      [58] = (174.82333333333332, 0, 189)

      [59] = [172.51333333333332, 53]

     

    Is this the correct behaviour?

  10. 13 hours ago, the frog said:

    hello

    I looked at your book script more than impressive; you do know how to use the lists.

     

    About the Marionette object, I am using the symbols to move faster.

     

    I transform my Marionette object into a parametric symbol and this is what I use in the plans. Of course first I make a symbol of the script (thanks webinar) and this is what I put in my plan. If I know I have to move the object often, I copy an ungroup the object (loosing the Marionette properties), and make a symbol, not parametric of course, with the same name. This is the object I move until I find its place. I wait to change the properties until the last moment or if I know I wont move it again. Then I replace by the parametric symbol and ungroup it to transform it again into a parametric object.

     

    I seems a long journey for a little result, but when you have time for a coffee between each move because 20 marionette objects are moving in a zoom, it worth the gymnastic.

     

     

    Thanks, I'll try that. Actually, it is not only moving/duplicating the Marionettes that is taking a long time but also placing them as red symbols in the first place. I have logged a bug with Vectorworks. Let's see if there is a solution.

  11. Hey @DomC, I have merged the add and the subtract nodes to get a single node with a popup-menu that lets me change its type in the OIP. I'm switching between add and subtract so often that I found it tiresome to rewire everything every time I made a mistake. Do you happen to know how the title of the node can be changed to show the type of calculation that has been chosen? Here's the node's code:

     

    #
    @Marionette.NodeDefinition
    class Params(metaclass = Marionette.OrderedClass):
        this = Marionette.Node('COULD THIS BE DYNAMIC??')
        this.SetDescription( 'Add or Subtract' )
        a = Marionette.PortIn( 0 ) 
        b = Marionette.PortIn( 0 )  
        c = Marionette.PortOut()    
        calcType = Marionette.OIPControl( "Calculation Type", Marionette.WidgetType.Popup, 0, ['Add', 'Subtract'] )
        calcType.SetDescription( "The Calculation Type" )

        a.SetDescription( '' )
        b.SetDescription( '' )
        c.SetDescription( '' )
        
        
    import operator

    def RunNode(self):
        calcType = self.Params.calcType.value    
        a = self.Params.a.value
        b = self.Params.b.value
        if calcType == 0:
            self.Params.c.value = Marionette.TupleMap(operator.add, a, b)
        elif calcType == 1:
            self.Params.c.value = Marionette.TupleMap(operator.sub, a, b)

     

    Node attached, too.

    Dynamic Add_Subtract.vwx

  12. 1 hour ago, Alan Woodwell said:

    Hi, I see its cold over there in Germany today. 36Dec C here today. Not sure where I would rather be. :)

     

    Plus one, so not that cold. Suits me fine. Expecting some snow though.

  13. @Alan Woodwell That sounds like a great idea for another "shelf life" marionette (should we create a new tag? I'm also working on a new "shelf life" Marionette this weekend). Can't wait to see the finished script. BoxShot app has parametric bottles, bags, cream tubs etc., so no end of possibilities there. I'll make some as soon as I get the chance.

    I noticed you used the "Get Bounding Box" node to get at the symbol footprints. I would never have tried that because the description reads "Returns the bounding box's coordinates of an objects *projection on the screen*. If this also works for the 3D projected footprint (as apparently it does) the description should be changed to reflect that, don't you agree?

  14. 1 hour ago, Robert Anderson said:

    Stephan, most impressive. (I loved the fact that you had a Karl May collection!) Could one move examples from all the collections into a "general random" folder and get a truly randomized collection of books?

    Ah, you mean like on a real messy person's shelf? :-) I cringe when I think of Karl May mixed with Penguin and trashy novels but hey, why not. I am sure there are marionetteers on this forum who could change the "Symbol in Folder" Node (was that even one of @DomC's?) to drill down into subfolders. That way the cake could be kept and eaten at the same time. Then again, one might want to exclude the Karl Mays after all (and the encyclopaedia). About time I learned Python. 

  15. 41 minutes ago, Alan Woodwell said:

    @Stephan MoenninghoffHi, I notice that a lot of the new nodes are by 'HMK' is that Hans M K  and one by 'Nicholas G'. I haven't seen them in the Marionette Forum. If they have more I would certainly like to see any that they have to contribute to the Forum.

    Thanks

     

    Ok i see them all now https://www.extragroup.de/xg/team/

    Great work Team I want to see more please.

    Yes, Hans Martin Kern is our CTO and my associate in the company and Nicolas Goutte is our Python Guru. They helped me with some of the changes made to the Index and Random Chunk Nodes.

×
×
  • Create New...