Files posted by DomC
By DomC in Marionette - ObjectsMore powerful, than a database or text application.
A Vectorworks integrated label-script-example with Marionette. The attached example shows how to import address data from a worksheet (could be other data and sources) and additionally places symbol beside the address. The power of Vectorworks and Marionette allows us to put everything you like dynamically on that labels. As example sort by male and female names (if possibly :-) and generate a individual pictures. Just infinite possibilities.
Apartment Tag / Wohnungsstempel
By DomC in Marionette - NetworksAbout this File
This tool is available in english ("Apartment Tag") and german ("Wohnungsstempel"). The contents are nearly the same just translated.
This Marionette Tool summarize all Space-Areas, which are part of the same Appartement Number and shows the result in a symbol based Marionette stamp. Alternatively we can pull out sum of apartment area with a worksheet. But this Marionette is also a nice method to do this.
1. The Marionette Objects access to the field "11_Room ID" of the space object. Every other field can be used if necessary by editing script.
2. With the Marionette PIOs field "ApartmentID" you can tell the stamp, which apartment should be displayed
3. With the Checkbox "Layer from Apartment Tag". You can make the Tag collecting spaces of the tag's layer. Otherwise it will collect areas from the layer of the layer popup
4. You can exclude Spaces with specified keywords. Delimiter for Keywords is "$"
5. To use the Marionette PIO on the Target Document, copy/paste the PIO and then import the Symbol definitions from the Folder "ApartmentStamps" on the Target Document.
Über diese Datei
Dieses Werkzeug ist auf Deutsch ("Wohnungsstempel") und auf Englisch ("Apartment Tag") verfügbar. Die Inhalte sind bis auf die übersetzten Bezeichnungen nahezu gleich.
Der Marionette Wohnungsstempel fasst Wohnungsflächen zusammen und zeigt diese in einem Symbolbasierten Marionette-Stempel an. Raumflächen können auch mittels Tabellen ausgezogen werden. Der Wohungsstempel ist eine komfortable alternative.
1. Räume welche zur gleichen Wohung gehören, werden mit dem Standardfeld "Raum ID" identifiziert. Auch andere Kriterien für die Wohungszugehörigkeit können festgelegt werden, dazu muss das Script geändert werden.
2. Im Feld "WohnungsID" wird eingestellt, welche Wohung angezeigt werden soll.
3. Mit der Checkbox "Ebene von Wohungsstempel" lassen sich explizit die Räume auf die Ebene des Wohungsstempels eingrenzen. Ist die Checkbox deaktiviert, gilt die Einstellung "Räume von Ebene:"
4. Räume mit bestimmten Namen, können hier ausgeschlossen werden. Trennung der Namen erfolgt mit "$"
5. Um den Wohnungsstempel auf einem anderen Projekt zu verwenden, zuerst das PlugIn mit copy/paste übertragen, dann die Symbolressourcen im Ordner "Wohnungsstempel" auf das Zieldokument importieren.
By DomC in Marionette - ObjectsThis 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.
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
By DomC in Marionette - NetworksThis Marionette Script creates multiple space objects from worksheet data.
A very nice and time saving Marionette script to automate a routine peace of work.
Please consider, that the the script takes the area column and calculate the square with that. If you have a language settings with comma instead of points for decimal seperator, the calculation will fail. Use points as decimal character or eliminate decimal places in your list
Marionette Translate Character to Geometry
By DomC in Marionette - ObjectsA Marionette PlugIn, that collects a custom drawing (font character, picture whatever) and refer it to a regular font character.
This "Font" is placed into the control geometry container. Also we could just use a blue symbol.
The Heart of the script is a custom node "create font dict" which manage collecting the control geometry. Also it returns a dictionary sequence data type. A dictionary is very useful if you want to have pairs of data. In this case a character and a drawing group with informations forms a pair.
Sure, the script could be improved by several things (multi-line, alignment, page based etc. ) But I think it is very useful to have that plug in. Have fun with it. Maybe you can share your own fonts and your wonderful handwriting here. Thanks.
1. Handwriting Font
2. Vectorfont (ability to use sketch view)
3. For Milling Machines
4. Fast inserting of object sequences
1. Script Crashed if input Geometry was None (Integrated a script blocker and an Alert Dialog )
2. Input Dict was always None, because use of an outdated Script command (vs.GetType() instead vs.GetTypeN()). Issue in many other scripts. One of the very rare incompatibilites of Script commands the past Years.
Symbols in Rows
By DomC in Marionette - NetworksPlaces a Marionette object, which contains symbols from a specific symbol folder. Offset and rows, can be defined. Handy for a quick and printable preview of symbols in a specific folder.
By DomC in Marionette - NodesGenerally:
In everyday life job is very often reading and writing record fields of user record formats
and PlugIn objects.
1. Marionette users have to know the record name and need a lot of knowledge to get the universal name of PIOs
2. Marionette users needs to manually find and transfer the field names into string nodes and also have to know a
workflow to find the universal field names of PlugIns.
3. copy/paste of the names or writing the values is stressful and often results in type errors.
What does this Nodes improve:
1. Quick access to record formats, PIO records and field names
2. See the localized and universal names (if exists) of the fields, returns universal names to the script automatically
3. Can also be used in combination with "print debug" to show names for editing existing networks without using directly
creating records from txt or xls
By DomC in Marionette - NetworksThis Network shows how to create fields from an existing xls or txt file.
By DomC in Marionette - ObjectsThis Script it made for users which have an Vectorworks Architecture but have not the core business to draw walls, slabs and roofs to make a presentation ambient for their designs. It helps to create room situations very fast and especially very easy.
It pulls Symbols out of a Symbol folder which are Room-Presets. As Presets Rooms can exist, that have a rectangular shape and inner dimension of exact 2 meters. Slabs are supported also (No extrudes etc.) and roofs. Best Practice maybe is to keep existing presets and just change classes as example. If we are working with presets we can "save" a lot of parameters in the Object-Info-Palette which makes it faster and easier to use.
Copy Symbolfolder and PlugIn in your project and you can use it immediately. If you want to change details you can ungroup (cmd/ctrl. U) the objects into Walls and slabs. So you are able to insert Windows, Doors or changing other Details.
3. Known Limitations/Details
- Rectangular Room presets only
- Switch on/off ceiling with classes
- Texturize by classes
- Changing classes by editing preset Symbols and attach other classes/attributes
- You can Mirror the Room to get left/right rooms
By DomC in Marionette - NodesAbout This File
This Node is similar like the Name-Node. Instead of writing the Name in the Node Infos, you can select the Name from a Popup, wich maybe is a little bit more comfortable. Using the Name input is often used by myself for quick testing, debugging or Stand-alone Scripts. This node helps eliminating errors like writing the name on the wrong field or copy/paste the name on wrong place etc.
A new innovation implemented, is a visual feedback of the node, which zooms the named object while choosing it in the popup. Which is a very interesting advance to improve user friendliness of Marionette nodes.
Ideas for further improvements:
1. Checkbox if zoom or not (not sure, because to many checkboxes decreases usability)
2. A Pick option to pick an object and auto-naming and inputting with this picked object (Not implemented, because I have not got it to work, that a pick callback runs inside of a Marionette script)
Worksheet based Popup, push Button
By DomC in Marionette - NodesGenerally:
Popups significantly raises usability of Marionette Scripts. Also for advanced marionette scripters often it is hard to search and enter the values.
1. The Popup values has to be written in an input node or the params class of the node, which do just execute if node is edited.
2. Popups are not dynamically unless the values are calculated by the script and then the Popup will popup every time the script is running.
What does that Node improve:
1. The popup values can be directly pulled from a worksheet.
2. The provided node filters one popup with another popup, which is very efficient for fast filtering and combine choices
Reshape Node 2D
By DomC in Marionette - Nodeshttps://youtu.be/vuCvK4OwN80 German Movie
https://youtu.be/Nm0te1zmpVY English Movie
Structure of the Input:
1. Group with Geometry group (send to back) and Reshape Zone definition (send to front). Best practice is to use a blue smbol without screen plane objects
2. Reshape Zone group has further groups. Every reshape zones (polygons) is grouped with a dimension object. The dimension is the link to the script. The parameter name is a prefix of the dimension text
3. Use one of the existing examples to understand the system
1. Supportes not 3D, Chain Dimension, path objects, rectangles. Container objects are not reshaped but moved (like the reshape tool)
2. user origin has to be set to vectorworks origin
3. not mix of screen-plane and layer plane. Use all layer-plane
- (and 1 more)
Import pillow 2022
By DomC in Marionette - NodesUnsure 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.
By DomC in Marionette - NetworksThe heart of this Marionette example is the RectPack node. A node with over 2600 lines of code!
It supports dozens of packing algorithm to pack rectangles on another rectangular area in a space and time-saving way.
The right combination of packing and bin algo gives the ability to pack rectangles in a way you want to have them on your machines (as close as possible, always cut complete board, less cuts etc.)
Actually not even myself know, which packing algo ist right for which use case.
Also for professional use case, usually there is a machine dedicated software, which packs the port in a way which match best for the machine.
So I see the main use case to pack parts on a board for milling them on a cnc-machine as example for model-making. Workflows which uses a guillotine-workflow (always cut the whole board) often have special requirements which maybe could be reached with the choice of packing algorithm or maybe can not.
The Marionette Example based on foundational work:
http://www.secnot.com/ Python code for packing algorithm
Jukka Jylang - A Thousand Ways to Pack the Bin - A Practical Approach to Two-Dimensional Rectangle Bin Packing (2010)
Huang, E. Korf - Optimal Rectangle Packing: An Absolute Placement Approach (2013)
- Input of basic data like length and width
- Input of additional data
- object input (node detects if part input are objects and process them like rectangles)
- sort by material
- use a list of stock materials
Not all input combinations works at the moment. Recommended to use the existing examples to get correct input values.
Extracting Geometry from PIOs or Symbols
By DomC in Marionette - ObjectsThis Script is made to made separate objects from geometry which is nested in PlugIns or Symbols. Those could be uses for special usecases. The Script is criteria and class based. So it would be necessary the nested geomtry is in a seperate class.
The Script uses 3 Criterias
1. (left) The Input PIOs or Symbols by a free criteria
2. (middle) The class which contains the required objects we want to extract
3. (right) The Criteria for deleting the "debris" of the scripts. Which is selectable by class of the source PIOs/Symbols and deletes everything which are groups inside of this class (it deletes not the source objects, because those are symbols or PlugIns)
This is also a possible method to ungroup things. Many ungrouping workflows do not work with Marionette, because the ungroup script command does not create handles to the resulting objects. But the group after ungrouping will be in the same class as the source objects. So using classes could be a workaround to catch the results by a second criteria. Not noble, but it works 🙂
Use is on your own risk and in a copy of your project (like always)
This Script is made for troubleshooting special requirements by resorting geometry for IFC Export.
Wall Component Volumes for Custom pSet
By DomC in Marionette - NetworksIf NetVolume of Wall components has to be written in a custom pSet (if this is a special requirement), this Network maybe provide a solution.
If you export Base Quantities, you get component volumes exported. Which is the normal-case to export the component quantities.
What does the Script(s) do:
1. The first Script creates record fields for every component Name exists in the Document (Walls have to be in the drawing, not just as a style).
2. The Second Script gets Wall component NetVolumes and writes it in the Record attached to the Wall for every component Name.
3. So you are able to use the Data-Manager to attach this component informations to the Wall Body and be able to export is as a Custom pSet to ifc (if this is a requirement in a specific project)
Extrude along Path with Ref point
By DomC in Marionette - NetworksThe standard behaviour of the extrude along path tool is to center the profile on the path and after creation we are able move it. This works pretty good. If we use the extrude along path node, is is not so easy to move the profile group after creation. This example shows how to do.
1. Put a 2D locus point in your (blue) symbol as a reference point and put it in the background (cmd/ctrl + B)
2. the script will measure this point and after creation of the extrude along path it will move the profile group
- A custom node to get the profile group of the path
- A custom node to reset the extrude along path object after moving profile group
Wonderful Marionette Door
By DomC in Marionette - ObjectsMore and more projects with a high level of individual control or a high level of geometry detail were created in 3D. The leading modelling and scripting capabilities keeps Vectorworks the best choice for BIM models. We have the best tool to make more than just the standard.
This Example shows how to parameterize a "hand design" Geometry of a beautiful Door.
Menu-Command Distribute horizontal
By DomC in Marionette - Menu CommandsIf you often have objects like imported pictures or imported PDFs with many objects or pages, this Marionette Menu Command can be handy.
It aligns objects to the bounding box buttom and stick it together to the bounding box width.
Marionette Object shows Values from an xls
By DomC in Marionette - ObjectsThis Example shows a Marionette Object, which contains a Vectorworks Worksheet.
By clicking "Update" Button in the OIP, the Marionette pulls automatically the new values out of the linked xls sheet.
1. Import first The Worksheet in Vectorworks 2021
2. Create a blue symbol (insert as group) that contains the worksheet
3. Fill out Worksheet Name, Symbol Name, and File Path (Pick File Node)
- I see it as a fun-gadget
- It will not enhance the VW Worksheet if new rows are added in the linked xls.
- It will not make the VW Worksheet smaller if rows are deleted from the linked xls.
- It is based on the import xls from 2021 and it will update just values. No Format etc. will be updated.
Get Values from XLS
By DomC in Marionette - Nodes"XLS Get Values"is to read Data directly out of a XLS Sheet.
The Smaller Nodes "XLS GetSheetNames", "XLS GetSheetInfos" are additional Nodes which are not essentially.
Everywhere you want to get Data out of an XLS File instead a Textfile.
1. If file Input is wrong the node will do nothing (no crash 🙂 )
2. If the sheet name is wrong it will import first sheet
3. If start/end is empty, it will return the complete sheet.
Class Legend Attributes
By DomC in Marionette - NetworksThis Network ist not very flexible (world based values, just one row) but still useful.
You can insert and and ungroup for individual layout etc.
1. First delete all classes and replace to "none" or "keine"
2. copy the object on your file
3. If you do not delete classes on the original, you will paste the classes from the example in your file
Circular Growing and Filling
By DomC in Marionette - NetworksDuring my last Marionette-Project, I produced some simple geometry nodes. Which maybe can be useful to can make geometrical constructions instead of mathematical (trigonometry) calculations.
"Perpendicular from Point to Line", "Parallel from Line through Point", "Circle-Circle Intersection", "Line-Circle Intersection", "Line-Line Intersection", "2 Circle Middleline" and some more.
Also the more Complicated Nodes "Circle tangent to 2 Circle", "Point or Circle tangent to 3 Circles"
Circular Marionette Stairs
By DomC in Marionette - ObjectsThree Examples of Marionette PIOs of Circular Stairs.
Module Importer for numpy scipy and pillow VW2020
By DomC in Marionette - NodesImporter Nodes for the most used external python packages.
Tested with VW 2020 SP1, Mojave 10.14.6 and Windows 10