Jump to content


  • Posts

  • Joined

  • Last visited


381 Spectacular

Personal Information

  • Location

Recent Profile Visitors

6,642 profile views
  1. Not Issues here. Can you provide your Textfile and your settings? Space from List.mp4
  2. CircularFilling fixed symbol v2021.vwx
  3. @lgoodkind Can you provide picture and an Idea how the algorithm logic could be. That would be nice. If I adjust the node to grab randomly your diameters. The result is as following: still there is white space which could filled up with an enhancement of the algo. But this is quite complicated. Thats why this node is beta version and not finished.
  4. Version 1.0.0


    This Document contains two Marionette PlugIns. Those PlugIns will simplify the workflow where we have more than one page on one sheet layer. 1. Someone who uses your plans will have an advice if the document of the plan layout are complete. 2. You can see which page you have to print directly on the layout without counting the pages This Marionettes supports Normal- and Landscape Format. Where pages are printed in a different order. Note: One Marionette (multi label) puts a label on every page and have to be inserted at the center (info-palette x0 y0 > please do not move). The other Marionette (single label) can be putted freely on the layout. It returns the page number of its center point. The Multi-Label Marionette, do not support uneven pages like 6.2/2.6
  5. Hi I think this can be made by scripts and/or a Marionette Nodes. I think with getRecordField and with getObjectVariable you can pull the requested values out of a viewport, if you know their IDs. The Advantage of a Standard Label or Data Tag is, that it has a perfect Link to the viewport and a User Interface to link/delink to an object. This could be made with tricks for sure with a Marionette but without a good UI and with supporting scripts etc. So I recommend to try to make your object with the DataTag. Which I think this is all makable with the DataTag except the "arrow symbol" maybe. As Example the Viewport Scale you can pull out with the following formula in a Data-Tag: Scale: 1:#WS_ObjectData('Object Variable', 1003)# Source: https://developer.vectorworks.net/index.php/Worksheet_Functions Some of the Object Variable of a Viewport (You can see them with the Methodes mentioned above): The Rest you can get from the Data-Tag Standard Variables. The Method to find Object Variables is the Script Reference or exporting a Drawing with one viewport as a text Format and search the Viewport's "SetObjectVariables". Change one value of the viewport and export again and see, what changes. Or you can use the "SearchObjectVariable" Marionette. Must be here in the forum but can't find it right know. The Data-Tag is a very powerful Drawing label. Only disadvantage is missing links between VP and Labels and no Links in Exported PDFs.
  6. Hi You are quite near at the solution. You need to repeat every poly handle as many times as there are points on that polyline. To get the number of points you have to get the number of items in every list you created with the chunk by list node. Also here you need a node, that is not standard. I do not know to do it with standard nodes. I think chunk by list and length of sublists is something, that I is really missed by repeating things on n objects. The Node you can see GetListLength ist the standard Node but the line "this.SetListAbsorb()" is commented with a #. Different ways to solve that I think. Nice Example. ScreenFlow.mp4
  7. Merry Christmas for all Vectorworks Nerds 🙂
  8. Hi The Field name of "Gesamt Breite" ist 'Width' not "Breite". If you change that, you will get the right object. If you set a name of the object, you change the name on the object info on the very buttom. Not the Cabinet Name. The Cabinet Name ist generated by a higher "act of nature" we are not able to write that Name field with a Script. Also ungroup I would not use. Because your Symbol is inserted as a PIO. The group around every marionette-created geometry you cant eliminate with the ungroup node. I think this could be changed with the node itself "linkedGeometry" This here, created the group:
  9. As I understand, you want something like global variables for the PIOs on the Document. Like Title Block Project Data. There are several possibilities. I think it depends on what you can handle yourself. 3 Examples of Strategies: 1. You could get the values from a Record handle (the record definition itself not from an Object > It takes the default value). So you had a central control over those values. 2. You could push the values (with a Dialog) directly to the Marionette PIOs 3. Take the value from a worksheet This depends how your Marionette-Code is designed. I guess SimA - Method (Method 1?) would be the best option. To the second Methode. Maybe this is the hardest one because changing the OIP of Marionette is not as simple like with Standard PIOs. There is an Example in the Gallery to make this or you could code A dialog-Window Enter the Value and Push them on your Objects. For myself I use that method to backup values from the marionette on a record. So the script is updated I am able to pull the values if necessary from that record. Code something like this: import json #Globals recName = 'MarionetteObject3D' #recName = 'MarionetteObject2D'# Check, the Marionette Rec-Name for your Marionette PIOs fldName = 'NodeDef_OIPControls' #collect Objects objs = [] def getObj(h): objs.append(h) criteria = "(NOTINDLVP & NOTINREFDLVP & (C='MarionetteObjects'))" vs.ForEachObject(getObj, criteria) OIP_Name = 'Mauerlicht' #Name of the Parameter OIP_value = 1200 #value of the Parameter for obj in objs: sOld = vs.GetRField(obj, recName, fldName) #vs.AlrtDialog(str(sOld)) j = json.loads(sOld) for OIP_field in j['data']: name = OIP_field['varName'] if OIP_Name in name: value = OIP_field['value'] OIP_field['value'] = OIP_value vs.SetRField(obj, recName, fldName, json.dumps(j)) vs.ResetObject(obj)
  10. Hello I posted a Marionette example, that installs a python pillow library from a wheel file with Vectorworks 2022. Now I stuck on Windows.
  11. Version 0.0.9b


    Unsure on which different OS and how long this will work. I just need it for myself and wanted to share, because I know some of you are waiting for external-library-fix with OSX. For my usecase the issue at the Moment seems to be fixed. Not tested with Windows or other OSX Versions. Runs on my Machine intel Mac Book with Big Sur and Vectorworks 2022 SP1. Do not run on Windows yet. Feedback what it does on your machines is very welcome.
  12. Thanks Vectorworks Inc. for the great job on our favourite core-features in 2022. That's worth a small attention from my side. (Sound Featuring Garage Band, Organic Tower inspired by Johanna Grüneberg, Marie Brackmann (Detmold University, Markus Graf) Trailer.mp4
  13. Fantastic Julian this is a very reliable solution, Thank you. I implemented this way: dim = vs.FSActLayer() def GetDimAngle(h1): h2 = vs.FIn3D(h1) DimAngle = 0 while h2 != vs.Handle(0): if vs.GetTypeN(h2) == 2: BOOLEAN, style, angle, size, width, thicknessBasis, thickness, visibility = vs.GetObjBeginningMarker(h2) if style: DimAngle = round(vs.HAngle(h2),0) h2 = vs.NextObj(h2) return DimAngle DimAngle = GetDimAngle(dim) vs.AlrtDialog(str(DimAngle))
  14. Dimension Direction.vwx Hello I am able to check if a Dimension is vertical or horizontal with direction = vs.GetObjectVariableReal(dim,value) On my mac version, it returns 0 for horizontal and 1.0 or -1.0 for vertical Dimensions. Unfortunately this seems not to work on Windows. There is always 0.0. I could test if xDiff is bigger than yDiff (of the Dimension Points) an decide it is horizontal but this can result in errors with some dimensions. Anyone has an Idea to get that information reliable?
  15. What about this: def IsTagged(h): result = False; num = vs.GetNumAssociations(h) assH = None assKind = None value = None i = 0; while(i < num and result == False): assH, assKind, value = vs.GetAssociation(h, i); if (assKind == 37): result = True; i = i + 1; return result, assH; This would help finding Tagged Object. This was some I found in the Forum here. It works in a Marionette Object, which is inside a DataTag to find the tagged Object. So I think you could loop all Objects and check with vs.GetAssociation() type 37. Then you have the Tag and could check the Kind of Tag.
  • Create New...