DomC

Member
  • Content count

    267
  • Joined

  • Last visited

Community Reputation

84 Excellent

About DomC

Personal Information

  • Location
    Switzerland
  1. Maybe I am sick on Monday :-)) Edit: Seems to be related to Preferences.
  2. I have it at the moment (Got to work on a presentation and that really stops me now ) I am working with marionette nodes. Now I have the following symptom: 1. Objekt-Info of every PIO in every File do not work correctly anymore 2. After restarting Vectorworks it works again for a while 3. I have it reproducible if I create a menu command of a Wrapper. 4. After that, the Info-Palette is completely numb I have to restart Vectorworks -on a Mac :-) Maybe it's because I work in a Beta-Build of German Version based on SP1 ... I reported this as a bug with a vwx and a movie file ...
  3. To be exact: It is technical impossible to snap the most bottom port if a corner of a node is inside the snap-radius and Master-Snaps are on.
  4. Hi I tried to make the effort to find the new node from 2018 release. Any additions? "Valve" seems the most important and a real milestone for me, because it integrates a real new method to block networks.
  5. Hi Don't know if I completely unterstand the question because I can't really follow your request. You don't need to store a value in the Params class, if you don't want to use it for data-flow. If you just need the variable inside the node, you could create the variable in the RunNode() method. "self.Params.variable_name.value" you just need to get variables out of the Params class. Params class is for input ports and input fields. If you don't need ports and fields, don't use the Params class. Just write Fx_Value = 500; Waarde_Slag_Of_Groef = 400; Corpus_Breedte = 600 and so on in top of your RundNode()'s code. Example create value in RunNode(): @Marionette.NodeDefinition class Params(metaclass = Marionette.OrderedClass): this = Marionette.Node( 'aNode' ) def RunNode(self): Fx_Value = 500 vs.Message(str(Fx_Value)) #or this ? Waarde_Slag_Of_Groef = 20 Corpus_Breedte = 600 Dikte_Zijde_L = 19 Dikte_Zijde_R = 19 Waarde_Slag_Of_Groef = 2 breedte_Rug = Waarde_Slag_Of_Groef + Corpus_Breedte - Dikte_Zijde_L - Dikte_Zijde_R + Waarde_Slag_Of_Groef #or in one line Waarde_Slag_Of_Groef = 20; Corpus_Breedte = 600; Dikte_Zijde_L = 19; Dikte_Zijde_R = 19; Waarde_Slag_Of_Groef = 2 Or if you exactly want to store your value in Params class, without having any input field or knots, you could maybe make something like this. @Marionette.NodeDefinition class Params(metaclass = Marionette.OrderedClass): this = Marionette.Node( 'aNode' ) Marionette.variable_name = 500 def RunNode(self): Fx_Value = Marionette.variable_name vs.Message(str(Fx_Value)) This code maybe is dangerous, because If you use the same "variable_name" in another node this could overwrite your variable_name. Don't know if this could be an issue, probably not.
  6. @Stephan Moenninghoff Äh, yeah. In previous Versions numbers over 9 did not work. So we avoid by numbering with 1_1 1_2 3_3 or 7, 8, 9, A, B, C etc. Now for me it seems we can just take a Number to sort. It will be not so clever to sort like 1,2,3,4 ... 12,13,14,15. So I just sorted with 100 200 300 400 500 600 The Main-Positions or the seperators. And Sup-Positions with 110 120 130 140. And there is always enought space to push some new inputs between the existing inputs. Looks perfectly for my now.
  7. Hi 0_1, 0_2 ... seems not to work not the same in 2018. The Number after the unterscore is now part of the name. I made some test and best input-sorting-workflow for me seems to work with a three-digit number. Also seems to be an efficient workflow to use a worksheet for node (re)-naming.
  8. Hi Do you mean the size of a Wrapper or the size of the network inside your wrapper? Can't confirm this with VW 2017, a wrapper's width (the wrapper-node width) is always about 10% of a DIN A4 width independent of the document unit Marionette Objects are page based. Maybe your layer scale is not the same and you run into this one: https://forum.vectorworks.net/index.php?/topic/51667-marionette-node-scale/ You could first change the layer scale like your target layer scale and then copy/paste. Or scale the content of your wrapper with the scale difference. If your created objects are too small, check your input values, maybe they changed by copy/paste to default or you are not using dim input nodes for size-values (In this case it should be bigger not smaller with cm).
  9. Hi Welcome by the mountaineers. I will not post the corrected network because doing ourselves gives stamina. Debug your script from left to right and disconnect the rest of the nodes, instead a pass or a dummy node and click on the wire with the beetle(bug) method: 1. The name of the rectangle which defines your bounding box of the geometry is "x" nothing wrong with that, but I think a standard user-error by clicking "x" for the selection tool in a field :-) If you need that rectangle here just for the bounding box, you don't have to make a copy here. 2. Object Name in the input field is "rec" You should take "x" for the name input field. "x" is the name of your rectangle. 3. The Range Node is designed to make a range from a lower value (input a) to a higher value (input b). Replace start and stop of the bottom range node 4. You go two range for x and y coordinates now. The Mix Node has a popup in the info-palette. Select "Cross Reference". Cross Reference, will repeat the sequence from the "list 2" input. By the length (number of values) of the list1 input. Simultaneous every values from lis1 is repeated by the length of list2 input. So you got a perfect point grid with 6x6 points. 5. The input for circle radius is by an integer input. Please use the Dim Input. Also switch document units to mm cm or m (https://en.wikipedia.org/wiki/International_System_of_Units) Sorry forthat, but imperial units blocks my brain :-) 6. So with those reasonable units you will see, that your radius is bigger than your rectangle and you want to have 36 circles on that rectangle, that can't work. 7. The Solid Operation is set to "add" instead of substract (I think so because your bottom and top are the same) 8. Then you substract the rectangle extrude from the circle extrudes, that would made the whole thing needless. Or could create antimatter (subscract a big mass from a lower mass). Always a hard start. Comfort you my first network was not better. I maybe would practice with simple locus points first to see, what is going on without accidentally booling billions of solid operations and freeze your computer. In this case I think it was not the reason mat that does not matter after fixing the (little but a good many :-) errors it will work. Don't give up. Dom
  10. Confirmed, I had the same Issue here. Which Build do you use? At the moment I can't reproduce. I used 387649 and I had this issue after every change of Marionette PIO Option in the Palette. After Rescale Info-Palette it was OK until the next object active and changing something, I ignored it and got to bed... iMac 27" Sierra at Home. Now I tried again with Build 390873 Mac Sierra in the office it looks fine now :-)
  11. Hi Marissa Thanks for quick reply! That's OK. In a special case I used a Beta-Node(Which frequently has to be updated) 100 times in a Drawing (to test different usecases and objects) and used the "Preprocessor" to speed up that process. Maybe for making this, it was a better choice to directly import the code as an external module directly into the node execution next time. Besides, my fairly efficient workflow to edit nodes in the Drawing. It pops up a Script-Edit-Dialoge for every node which matchs to the criteria vs.DSelectAll() criteria = "(('MarionetteNode'.'NodeLocalizedType'='The Node Name'))" def DoIt(h): vs.SetSelect(h) vs.EditObjectSpecial(h, 4)#The edit mode: 0-Default; 2-Properties; 3-Reshape; 4-Edit group like; vs.SetDSelect(h) vs.ForEachObject(DoIt,criteria)
  12. Um Have to correct this. Seems like updating the nodes to 2018 deletes (Even if I copy the python Scripts in the library folder) the first line with the #COMMAND;REFFILE; ...... link ... a case for a Bug Report? Either way, Great Version! Particular Multi-View is incredible cool for Marionette Scripters
  13. Hi Frantically I search a way to find get LevelTypes, which are attached to a story. I can get LayerLevelTypes or LevelTemplates (can't find a difference). All Informations are available, but I have problems to find out, which LevelType is attached (hook) to a story. I tried to cross reference template elevation with elevation of the LevelType in a store. If it is not 0.0 and not identically with Template elevation it is definitely hooked to a story. But all others are uncertain .... my efforts so far: StoryHandle = vs.GetStoryOfLayer(vs.ActLayer()) # Just to get a story handle numLLT = vs.GetNumLayerLevelTypes() numTLT = vs.GetNumLevelTemplates() #Difference to GetNumLayerLevelTypes ? if numLLT != numTLT: vs.AlrtDialog('Difference numLayerLEvelTypes and numLevelTemplates') #Never see a Difference? for index in range(1, numLLT+1): LevelName = vs.GetLevelTypeName(index) #clear level_elevation = vs.GetLevelElevation(StoryHandle, LevelName) #clear BOOLEAN, layerName, scaleFactor, levelType, template_elevation, wallHeight = vs.GetLevelTemplateInfo(index) #clear story_name = vs.GetName(StoryHandle) #clear LFS_Handle = vs.GetLayerForStory(StoryHandle, LevelName) #clear l_name = vs.GetLName(LFS_Handle) #clear #vs.AlrtDialog(str(l_name)) s = vs.GetStoryChoiceStrsN(StoryHandle, 2) #not clear #vs.AlrtDialog(str(len(s))) if levelType != LevelName: vs.AlrtDialog('Check Difference Template and LayerLevelTypes') if level_elevation == 0.0 and template_elevation != 0.0: pass #vs.AlrtDialog(LevelName+' is not used on this story') else: pass #vs.AlrtDialog(LevelName+' '+str(elevation))
  14. I think it is a "limitation" not a bug. Because there is the scale-workflow. The only event the Network keeps the relationship of node size and network size is a layer scale. You are right, copy-paste improvement would have been more useful than layer scale. To my knowledge it does not support the following other (often used) workflows directly: 1. Copy-paste network or plugIn on a layer with another layer scale 2. Edit in a symbol with a network, that was created by an active layer of another scale 3. Also there is an issue, if I copy-paste a network with text or graphic documentation. It think it is all a question of development priority. For me this was about point 4 in a list of wishes with 10 points. But for other marionette workers (which are not get used to that limitation) it could be priority #1 :-)
  15. Hi I have nodes, with the following headline: #COMMAND;REFFILE;[VWLibDef]/DomC\Script.py; This is great, because instead of copy/paste an updated code into every node of that type I used in a project it is up-to-date, whenever I edit A node. Also editing a node, will update the resource on my disk and will make up-to-date other nodes which I edit. Also I am able to edit the node in an external editor, whithout copy/paste the result code. Anyone has an Idea, how to update hundreds of nodes in a document, which are all linked to the same file instance but are not up to date. Edit and exit every node after update steals time from making new fantastic marionette projects. Besides: How about tagging the nodes with the year, they are released first time? We have to manually compare (or making a marionette script for resource comparing :-) -> another great Idea) the two versions to see, which nodes are new. How many time I created a custom node, which was already there in a new version but I did not realized.