Jump to content

Hello Community!

We will perform a system update on the Vectorworks Community Board on Friday, Dec 8th, from 3.00 PM to 6.00 PM EST. During this time, the site will be unavailable. I appreciate your patience.


  • Posts

  • Joined

  • Last visited

Everything posted by DomC

  1. 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:
  2. 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)
  3. Hello I posted a Marionette example, that installs a python pillow library from a wheel file with Vectorworks 2022. Now I stuck on Windows.
  4. 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.
  5. 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
  6. 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))
  7. 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?
  8. 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.
  9. I was able to reproduce the "freeze" on my computer also with VW 2020 and VW 2021. It seems it freezes by wrapping the Network to a Object Node before the code runs. So the Code is all right, it is the Wrapping-Technique, which produces a problem. I will submit a Bug for that. I deleted the empty pass nodes and deleted the name of the Wrapper of the Worksheet Wrappers. Those Wrappers and nodes produces empty outputs in the network, which maybe is results the appHang. New Version 1.0.1 of Worksheet Input Example Created for Vectorworks 2020/2021
  10. OK Just tested that application. 1. Import units should be set in the settings to mm 2. The sheet(board) must be added or imported by dxf So far, then it works. It seems to be a try and error algorithm, because it uses quite a while. Would be nice, to have a tool like this directly implemented in Vectorworks (also something, that can be handled by script/marionette) Source code nesting algorithm, seems to be java:
  11. Cool Spontaneously I would say, It has to go this way since we have no other Marionette: 1. Unfold (Extracting Tool) Click on every shape and extract planar shapes 2. Put them on screen-plane (Infopalette) 3. Or alternatively there would maybe be a quite simple script to put every shape on a different layer (maybe not, because the pathes may be NURBS and they are not CNC-compatible) 4. Next exporting DXF and (I don't like to say) import it in an other software to nest those polys. maybe this one, looks free and looks at it runs on macintosh: https://deepnest.io/ just downloaded it looks promising good! Edit: Seems that every DXF have to be imported one by one manually. Also it needs some settings (units). Did not testes, It did not work after one Minute. 5. Some CNC-CAM-Software could automatically extract your 3D Model (export Parasolid) The really cool thing would to have a poly-nest similar to the rectangle-nest. There is open-source-code for this available so it would not be a project from scratch. Also this would allow us, for automating the complete process. That would be my next project if I would find the time because that is also a kind of project that is interesting for me.
  12. Hello Aha, you really take the Original File. So the issue could be related to the following: 1. Platform (Mac Win) 2. Country-Settings (dezimal seperator is point here) 3. Vectorworks Version (I have German SP4) 4. Program Settings (more or less Standard) Ah see the issue while I am writing here. On my windows computer it hangs since over a Minute. Seems to be the issue can be confirmed on windows here too. Thanks, I will update for any news.
  13. This File "WorksheetInputExample_v2" (without any changes) runs without issues here in 2021. Can you attach your File here?
  14. Ahm ... good found I provided a new Version (1.0.4) which handles editing of the space boundary different and this seems to work (hope for many years :-)
  15. Thank you. I wonder, why the most usefull things always have the lowest rating here 🙂 Using Rectangles instead of Space PIOs could make definitely sence. To have rectangles instead of Spaces you could modify the script as following: 1. Create a Symbol with a Rectangle inside and link it to your record format. So you save that part of setting record to objects and tagging objects by script. You can Tag the Rectangles at the end with the "multi-Tag-Methode" 2. Modify the brown Wrapper like this. It would result in a much more simple script 3. Then you have to edit the "Set Record Field" part of the script with your own record name instead of "Space". Other Options also possible but I think this is the most easy workflow.
  16. Hi Green is a Page Bases Symbol. Red is a Parametric Intelligente Object (a space or a DataTag as example) The Other Point (switching between Styles) I can't reproduce. The Data are transported (if unstyled Field) from one Space to the other and Back. Switching Space Style.mp4
  17. Hello The Object looks here as it should. So the crunchpoint will be, what is the difference between the attached file and the files you have issues with this object. I would check the following: 1. Distance to the drawing center (Vectorworks origin) 2. Model view on? 3. If you delete all other objects out of the model how your Marionette looks then 4. If the Object looks like the left picture. Will it look all right after refresh, reopen the file or copy paste on another layer or copy paste to the origin. Or does it not work at all so it cal be reproduced always or just after working a while?
  18. The Popup list you generate delivers 3 string variables into the network. But for a popup, you need those 3 strings nested into a list as Example ['choice1', 'choice2', 'choice3'] If you run the node without list absorbing, the input with the choice would deliver 'choice1' the first time the node runs, 'choice2' the second time etc. that's how the Marionette Data-Flow works. The node repeats as many times as one input delivers values. "list absorb", is merging all inputs into a sequence and the node just run once. So the popup there will work. But because the node run just one, your dialog run just once. you could loop through the number of dialog you want to have with the integer input you have in the node itself. Or just leave the node how it is and merge the popup into one list. I would recommend this:
  19. Hi I am close before using a custom node and I thought, this time I ask before I create a new custom node 🙂 I have two corresponding data flows in two wires. I want to add items of the second wire by counting the items in first wire. 'obj1', 'obj1', 'obj2', 'obj3', 'obj3', 'obj3', 'obj3' second wire is: 'str1', 'str2', 'str3', 'str4', 'str5', 'str6', 'str7' Somebody knows how to concatenate the strings of the second wire corresponding to the count of the items in wire 1? 'str1str2', 'str3', 'str4str5str6str7' In a second scenario, I have already grouped the second wire in lists of the lenght of counts of the items in wire1 'obj1', 'obj2', 'obj3' ['str1', 'str2'], ['str3'], ['str4', 'str5', 'str6', 'str7'] I repead: It is no problem to solve that with python, but with standard nodes I need an idea. Add List of Strings.vwx
  20. Hi In you code you have: if dlogList would be 'hello' and x was 2, the result is 'l'. Your dlogList is not a List is is just a string. You can solve it this way in your node:
  21. The actual Version, is able to shift from right to left, top to buttom also. +-*/ and all parameter input names should work.
  22. Hi I think you could do the following: 1. Switch off unit in the document settings 2. Or modify the the Node "split unit from number" as following: ',' also fix the issue, when this node is used in Countries with ',' as a decimal separator. If we anytime had the possibility for voting for small things like this. Please all vote for decimal units and all vote for point as decimal delimiter. 🙂
    Awesome Node. I will never want to do without it again. One Tweak I made for myself is, that when I call the symbol dialog I am able to see a preview of the last chosen symbol. Often I have no idea, how my chosen symbol looks like (because in a scripting progress I can't see already the result). With some additional lines in the node, I am able to call a preview very fast and in a lazy way. Maybe an idea for implementation if you either way have to touch the node anytime 🙂
  23. Hi You could directly connect the xlsx reader instead of csv reader, this works perfectly. I would first try this one because if you have an excel File this would be the direct way (If it works, because text encoding is a real pain). By the way your worksheet for me looks like an encoding issue too 🙂 Maybe not just islandic? Also the First version v2018, uses a Vectorworks Worksheet for input. This still works and you could just connect the worksheet reader instead xlsx or csv reader.
  • Create New...