DomC

Member

543

1. Geometry Nodes and Circular Filling

Nice Work Marissa. Awww the Modell is not so bad, looks comfortable :-) That makes us snoopy ... Tell us, how you saved the movie data on disk??!!
2. Geometry Nodes and Circular Filling

I'm pleased you like it. Animation: 1. Run the modified marionette Script (Attached). It will create 100 layers. You can do more, to get a smoother run. 2. Run the Script in the Script-Palette. It will export those 100 layers. 3. I converted them with "Time Lapse Assembler" (Mac and Windows available) into an mp4 The export script was just for myself, so it is a little unhandy. A. E. you have to delete the layers after execution for the next run. It's great, but still incredible tinkered. AnimationHack.vwx.zip
3. Capture mouse click

Hi Alan I can give you that: But That's just for one click. Somehow the mouse interaction, happens always at the end of the script. So the vs.GetPt Function, hat do be connected to a callback function. I never tried this in python. There are several Vectorscript Functions to call preview drawing etc. during script execution. But they seems to work different in a python script (Tried that once -> I tried once, but resigned fast)
4. Geometry Nodes and Circular Filling

Hi During 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. The Nodes: "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" Take a look here: CircularFilling.vwx Circlular growing.vwx Geometry Nodes and PCC CCC.vwx
5. Exporting Image

I heard a rumour, that we can just wait for one of the next versions :-) I looked at : "vs.CreateImageFromPaint(paint, imageName)" This converts an Image Resource from an imported Picture. "Paint" is an image in the drawing and "Image" is an image fill resource in this context. I also looked for a way to make a handle as a criteria. Cause some of the very powerful script commands works with criteria. there could be a way with pdf export to generate frames for a movie. There are some python library to convert images to mp4 so there should be a way to automate exporting a movie. For now I make it with created Layers inside Marionette and a seperate Python script, which exports the layers as jpg frames. And then the shareware "Time Lapse Assembler.app" to connect jpgs to mp4. I will post some examples if they are ready to post.
6. Exporting Image

Not tried, but I think I found it. vs.CreateImageFromPaint(paint, imageName)
7. Animate Object

lol, love that example (besides: Do not set Bucket Lift Angle to 0 :-) I think the problem is, that the redraw command will not completely redraw the drawing inside that network. I tried out different things: Redraw, Reset, zooming in/out, switching view etc. to get a full screen 3D redraw during the script runtime. Without any success. I think there would be a necessary to upgrade the marionette class to make this possible. Vectorworks Inc: Wouldn't it be fun, to see Alan's Bucket digging?
8. Exporting Image

The Idea is, to have a generally node for that. The existing examples (as above) use a redraw command inside every move node (So we had to "hack" every node) And I think, that will not nice in OpenGL, any 3D View or bigger networks (too slow) Sure, we (I :grin: ) can do this with a code-script (also the export as images) without marionette. But "without marionette" is not the ambition. I wanted to use this, to make nice documentations of marionette scripts.
9. Exporting Image

Hi The Result of my efforts should be, to export steps in a generative design-scripts as images on the disk. This would be the base, of an animation to see, what happens in a script. This works in a Vectorscript without any problems as follows: criteria="(INSYMBOL & INOBJECT & INVIEWPORT & (N='temp_name_domc'))" vs.SelectObj(criteria) vs.DoMenuTextByName('Copy',0) vs.DoMenuTextByName('Paste As Picture',0) h = vs.LNewObj() vs.DelName('temp_name_domc') #vs.ExportImageFile(hImage, 'BildExportTest.png') In a Marionette Node, this will not work, because the copy command will not work. My Questions: 1. Anyone knows another way (Instead of do menu Text) do export something as an image file? 2. Somebody knows, why copy (and cut) do not work inside a marionette Script? This is too bad. Imagine, we could animate growing things in marionette. In a Vectorscript it works, so it just seems to be a limitation of Marionette. The Workaround at the moment seems to be, to create layers for every step and export those layers as an image. Or use them as a flicker book. Attached movie shows a simple example, of what I want to be able to do (without the flipper-book workaround just with marionette)
10. Amazing Marionette

Great, stay on the ball.
11. 3D Nodes to Mesh

@Allan The trick is, to got sorted the points in a way you can build triangles in a controlled rhythm. In my example "Suction Effect" I use Colours to Filter and sort to sort Points. But I have no Idea to see, how you could close your mesh. You somehow have to connect the last line (or row) and connect to the first one. When I looked at your post. I just realised that I forgot, what the mesh (my mesh node, notta bene :-) node do. I think it is a good feature to forget details and have space for new stuff. The other question ist. Ist there a special reason, you want to build that with a mesh?
12. Dimension Standard

Well founded Infos ... Thank you very much.
13. Dimension Standard

Hi I got a little script, which changes the dimension standard by the name of the dim standard. I did not fount a way to handle the dim-standard directly. I am just able, to get the dimension index and standard name from a dimension object. so my script draws temporary a dimension get the property. I got a Dictionary of DimStdNum and DImStdName at the end. So I could use this script, even the stacking order of the Standards is upside down. Now the Question: The very ugly piece of the script is, that i draw and delete objects just to have a relation between DimStdIndexNumber and DimName. Anyone know a direct way to handle to a Dimension Standard? #Python Code #At this place some code calculating, #which standard ist the right one for my design layer and for my Drawing scale. Choose_Standard='VSSM x0.1' Dim_Std = {} #Dictionary of Name and Index Number i=0;v='' while v !=1: try: vs.SetDimStd(i) except: pass vs.LinearDim((0,0), (0,0), 0, 0, 0, 0, 0) h=vs.LNewObj() v=vs.GetObjectVariableInt(h,0) #if 1 the function switched to 1 because calling a outindexed standard an error n=vs.GetObjectVariableString(h,27) vs.DelObject(h) i=i-1 if v !=1: Dim_Std[n] = v vs.NameClass(c); vs.SetDimStd (Dim_Std.get(Choose_Standard)); vs.SetPref(44,False); vs.SetTool(-210) Background Info: (To prevent questions like: "Why you would want to do that"): Out of the Box, Vectorworks just support one scale for one Design-Layer. I got a script here to change dim Standard and class to separate different Scales on one Design Layer. It also get the Layer scale of the active layer to choose the right standard for the intended scale in the Viewport. It would work without a much simpler script, if layer scale is set to 1:1. But that somehow hurts me to do that. And the Idea of a Routing-Layer-Scale ist not a bad one. But often there are small informations, which should be scaled in the right relation to the active layer scale. Annotation are no option (groups, import data, Symbols, PIOs, 3D Objects etc.). Main-Data, Information and Drawing has to be part of the (BIM)- Modell Space.
14. changing the name of a symbol in a worksheet?

It is possible to do this with a script call in in the Workseet. =RUNSCRIPT('Script-1', A4, B4) The Script (Make a new Script in the Ressource Browser Named "Script-1" Switch to Python Script): sym_name_old=vs.WSScript_GetPrmStr(0) sym_name_new=vs.WSScript_GetPrmStr(1) sym=vs.GetObject(sym_name_old) vs.SetName(sym, sym_name_new) vs.WSScript_SetResStr(sym_name_new) If you want to do this in a Symbol-List Worksheet. You can't write lines to that list. So you have to make a Record Format. Which you can edit in the List. And The Script will rename the Symbol with that Record Entry
15. Custom Worksheet Function with *Args

Hi Carl I made an example. Attached to this post. Hope, It can help you finish your project. Code in the Worksheet: =RUNSCRIPT('Script-1', A2, B2, C2, D2, E2) Code of the Script i=0;arg_len=1;args=[] while arg_len >0: arg = vs.WSScript_GetPrmStr(i) args.append(arg) arg_len = len(arg) i=i+1 vs.WSScript_SetResStr(str(args))
16. Custom Worksheet Function with *Args

Hi I think, we have to specify the args in the worksheet scripts. Like this arg1=vs.WSScript_GetPrmReal(0) arg2=vs.WSScript_GetPrmReal(1) I tried to get all args with a while loop args=[];i=0 while vs.WSScript_GetPrmReal(i) !=None: #Endless loop, attension! args.append(vs.WSScript_GetPrmReal(i)) Don't try this. You will never be able to open your document again. Because Worksheets script automatically actualize at open document (which seems to be a nice feature ...) but If you have an endless loop in your script you will have to wait endless :-) Or maybe it's because the vs.WSScript_Get******* ist not very liberal, if you get wrong value type. A String instead of a float as example?

18. Node Question

Tim, you are right. Thanks for this good idea. There can be used search-tags, to find the requested nodes with cached index ( in real-time speed), very exciting ...! If we look at the left menu, there is a possibility to access the Vectorworks Service Select Content. But it will be still some work necessary from Vectorworks Inc. to collect, sort out, provide, put it on the server and manage this contents. I think local distributors could make this with their own content management. There is a good chance the pain of searching the community board for marionette ressources can have an end soon :-)
19. Custom Worksheet Function with *Args

Do you want get the output in your OS Terminal or somewhere out of Vectorworks? That is to high for me, but I am very interested on this possibilities too. As I suppose, that the args method is not loaded in an embedded python. So maybe we have to somehow initialize this first. But as I told, this could be a very dilettantish comment.
20. Node Question

And we all know, there always is a lake of girlpower (manpower). Someone had to copy/paste (I think this is allowed since the beginning of Software-engeneering :-), judge and coordinate the Node content. That costs time but it will be worth ... I just see, that we have a really potential tool and it has so much natural advantages compared to competitive software (It is totally integrated, no separate tool and acess to the complete BIM Objects and Record). Vectorworks you are in front! Just lap them for once.
21. Node Question

A Rectangle-Node, which has nearly the same capabilities like the rectangle tool users already know. Also it supports angle input and calculates edge-points to insert edge points. So many enhanced nodes are available here on the community-board. Will they find a way into the standard content anytime? This would save so much time for beginners and pros. who do not check daily the community-board.
22. EAP Gutter with End Caps

Hi Allan The Movie shows the benefit or your Idea, with a Named Path. User are able to use the path from a existing geometry. And just attach the marionette object to it. A great "real-live" example.
23. EAP Gutter with End Caps

Nice, usefull example. But why you not just refer to the path directly?
24. Example for AutoLabeling

This Example shows, how to put labels with record infos and bounding box dimension on objects in the drawing. Could be usefull to make visible record values. Or auto-dimension objects. Just an idea-study not a matured example.
25. Reporting marionette information on a worksheet

Great Marissa/Robert, thanks for update A (real-live) Example for this attached: 1. A Truss (Just "stupid" crop a Truss Geometry by a length) 2. Write the lenghts into a record field attached to the marionette object 3. Creating a list of all "custom-lenght" trusses. Great product ! Edit: For those who care about the truss: It's just a "control"-geometry with a 2m truss. And I just cut away the rest. So the limit for the truss is 1.999m. You can expand the control-geometry-truss to 20m as example and have an 19.999m truss
×

• KBASE
• MARIONETTE

×
• Create New...