Jump to content

DomC

Member
  • Posts

    542
  • Joined

  • Last visited

Everything posted by DomC

  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.2

    31 downloads

    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

    47 downloads

    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.
  16. 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
  17. 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:
  18. 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.
  19. 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.
  20. This File "WorksheetInputExample_v2" (without any changes) runs without issues here in 2021. Can you attach your File here?
  21. 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 :-)
  22. 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.
  23. 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
  24. 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?
  25. 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:
×
×
  • Create New...