Jump to content

DomC

Member
  • Posts

    605
  • Joined

  • Last visited

Everything posted by DomC

  1. How About directly input the symbol in your extrude? You could edit your symbol properties (blue symbol) and insert the symbol directly as a poly (as long as you have not more than one object in the symbol) Any-Input-Node, can be handy for testing (even better than connecting many of input nodes to simulate an input :-). At a more final version, we should use dim-inputs for input values (Document Units).
  2. Hi Alan Nice, a Cabinet Door with a Handle profile ... :-) Path: Maybe it is better to use Linear Extrude for this. So you just input start and endpoint and not have to input a path object. Profile: I would prefer to input this profile as a geometry. You can handle a Geometry by wrapping it to an marionette object and attach profile in the control group box: 1. Group Polygon 2. Connect controll geometry node and contend node to get poly I think grouping is maybe necessary, to not have your poly as a control path. Or if you want to use different profiles. Also you could get your profile, out of a symbol definition (took a look at my exhibition wall example?). For testing your code, Name the group with the poly, name it (info-palette) and input by "name-node" If you your are creating our profile with nodes with nodes, maybe use the "any input node" and input [(0.0, 0.0),(20.0, 0.0), (20.0, 20.0),(30.0, 60.0),(-50.0, 60.0),(-50.0, 50.0),(-40.0, 50.0),(-40.0, 55.0), (10.0, 55.0),(0.0, 0.0)] I also still searching the best practice to input geometries. I hope there is something thereby you can use.
  3. Hi there A Marionette Path Object for rectangular exhibition walls. Use second reshape methode to edit path. The objects uses symbols for profiles and walls. So you are able to control wall thickness, classes and material over the symbol definition. Make sure the symbols are content of your document. Offcut or start points of the duplication are controlled inside the marionette script. There are some custom nodes used like: duplicate array between points, insert symbol and change wall length
  4. Hi David Hm, I just hav experience by using python moduls for text handling. Because you can get help for this via google for every error message. Also with python you can do so much more (sort, arrange, split, sorting out characters etc). An Example. Which Reads a text fila as one single string value. To get File Dialog use vs.GetFile, after that you should convert the path (Which is MacHD:User:Dom:etc:ect) to a Posix Path (MacHD/User/Dom/etc/etc) Try this: import vs fileName = vs.GetFile() bool, fileName=vs.ConvertHSF2PosixPath(fileName) a=open(fileName).read() vs.Message(a)
  5. Hi Alan You can check if your value is from 600 to 1200 and returns a "True". That can be complicated if you have many if then statements or if maybe a specific combination of true or false should gives other results. If you produce many True and False "Answers" and if just one of them would be "False" the whole result is False (if >600 is true and >1200 is false and smartDoor is true etc. etc.) the answer still will be False (just one door as example) and for your example you can do it this way:
  6. Hi Alan https://techboard.vectorworks.net/ubbthreads.php?ubb=showflat&Number=217181#Post217181 Download "HandyNodesAndWrappers v02" there is a insert symbol node. Just connect Point Input for locus and string input for symbol name. Dom
  7. A Similar node, which reads ini files and returns sections, keys and values Uses the python standard configparser module.
  8. This is awesome Jared, now things are really heating up! @Ilay I did not even got to work ktinker to work. This was just a test and would be not very helpful because ktinker do not much more, than the internal dialog features can do. Even if I am not a fan of using too much third party stuff. Thanks Dom
  9. Hi Patrick Very nice example. This could be a very suitable and classic example to use for teaching classes. Thanks for sharing Dom
  10. Output values are visible, when you click with the second method of the marionette tool on a wire (the "debug" methode). If there is no wire, connect a "Dummy End", which can be found under de "Debug" symbol popup.
  11. Hi This Marionette object contains a custom node, which reads a text file. One special application could be to automatically write something like an address or a descreption etc. into the plan. Can be very interesting for customers which has to integrate Vectorworks in their software enviroment and rather more pushing data into the document than "self-drawn" content. Maybe first read the "instruction.pdf" to see for which special case this example is thought.
  12. Hi Jonathan Very cool and applicable example. Thanks for sharing. Dom
  13. If we play around with Record Formats and Lists. It can be useful to access external Lists of Data. I Attached a node, which bases on the python csv standard module. It can import lists as strings (text) or as numbers. It can't mix numbers and strings. Except Header (first Line) can be strings during the rest of the lists are numbers. It could be used for: 1. Import csv (or tab) separated text files by using an absolute path. 2. Import a csv with the same path and name of the Vectorworks file (for Metadata/Project data like Title Blocks etc.) 3. It puts out rows and lines separately. The used path and rows- and line quantity. v03: Popup with Text encoding List. Python Standard is 'utf-8'
  14. Check this out: A Quick-Modification of the "Get Record Field-Node", which returns a list of Field Names instead the Field Values. So you are able to automatically feed your Field Names. I hope this was not already part of the native nodes content. Dom
  15. Hallo Michael You can just input more than one object or more than one Field Names. This works good, if you know the field names respectively if you always have the same kind of record format. If you want to have the field names dynamically (another record with other field names) You need another construct (or node) which generates the field names automatically. Dom
  16. Hi Type ID's you will find in the appendix of the function reference: http://developer.vectorworks.net/index.php?title=VS:Function_Reference_Appendix At the moment a do not know what saved sheet means (German Version here) I think this are saved view? Then maybe check out this: https://techboard.vectorworks.net/ubbthreads.php?ubb=showflat&Number=218533#Post218533 Dom
  17. Hi I just work on a script, that let us jump to the next saved view in alphabetical order. (I know Vectorworks Remote could do that) First Problem: Handle the saved views by script (I tried with ID, Parent etc. and failed). Thanks to Pat Standford (My Hero) which found a solution with vs.FIn3D :-) https://techboard.vectorworks.net/ubbthreads.php?ubb=showflat&Number=118441 Second Problem: The saved views are stored in the order they was created. Here Python scripting is showing one advantage. We can beatifully sort list with python. #Python code to create list h=vs.FIn3D(vs.GetObject('Darstellungen'))# International Version "saved views" views=[] while h != None: name=vs.GetName(h) views.append(name) h=vs.NextObj(h) views.sort() # Sorts the list alphabetically An extended Version. It maintains a Text Block inside the document which acts as a counter in the document. Because after execution the script can't remember the last saved view. Maybe there is a more smarter way by using a hidden record or something like this. I am not familiar with that. #Python code to create list, grab and change the named(Info Palette Data field) text block and call up the saved view h=vs.FIn3D(vs.GetObject('Darstellungen'))# International Version "saved views" views=[] while h != None: name=vs.GetName(h) views.append(name) h=vs.NextObj(h) views.sort() # Sorts the list alphabetically zähler=vs.GetObject('zähler') #Handle to the text block Darstellung=vs.GetText(zähler) #Read Text index=views.index(Darstellung) #Check on which index of the list (of the sorted list) this view is stored if index < len(views)-1: # -1 it's because len counts from 0 I think vs.SetText(zähler, views[index+1]) #Change the Text block to the next saved view vs.Message(index) if index+1 == len(views): vs.SetText(zähler, views[0]) #Starts from the beginning vs.ResetObject(zähler) vs.VRestore(Darstellung) #call saved View This hits on an idea to make a slide show, from save views. With an automatically delay. But this is tricky, because it seems to be a feature from scripts, that they do not regenerate views during the script execution. I tried out with a Dialog Box. That seems to work. But who want's to klick a away a Dialoge Box after every Slide. I tried to do this this way: import time h=vs.FIn3D(vs.GetObject('Darstellungen')) views=[] i=0 while h != None: name=vs.GetName(h) views.append(name) h=vs.NextObj(h) views.sort() length=len(views) def view(): for i in range(length): #vs.Message(str(views[i])) #time.sleep(0.5) #vs.SetZoom(100) #vs.SetZoom(50) #vs.ReDrawAll vs.VRestore(views[i]) #vs.Wait(1) return() view()
  18. A new Version. We are able now to reshape control geometry directly (take 2D Plan view please ...) without any spam-messages :-) combined with the random box-fassade example.
  19. One step nearer to the solution ... anything goes with script, forget crampy worksheet formulas. #Formula in Worksheet: =RUNSCRIPT('script-1') #python script-1: A1=vs.CellValue(1,'A') pic=vs.GetObject('pic-1') if A1 >= 0: pic=vs.GetObject('pic-2') vs.WSScript_SetResImage(pic) "Just" have to find cell number, the script runs. To read out relative cells to the script cell.
  20. Hi Maybe not the right forum for worksheet formula questions. I am searching a way to insert an image in a worksheet cell by using a formula. I already searched the forum but could not find any related questions. What I am trying to do: If want to show an image in cell D1, if the cell A1 has the value greater than "0". =if((A1<>0), 'here i want an Image', 'false') I tried this: =IF((A1<>0), (IMAGE(N='k1')), '') #-> cell is empty =IF((A1<>0), D1, '') #D1 is refering to the cell "D1" which shows the image by =IMAGE(N='k1') =IF((A1<>0), IMAGE(N='k1'), '') #-> cell is empty also tried from other direction: =IMAGE((IF((A1<>0), "N='k1'", ''))) #-> error because of the double quote I think =IMAGE(E1) #Simple test, if IMAGE() formula can use values from other cells I give up... Any tips?
  21. Another one ... Fibonacci Sphere Point Node Somebody knows if we just can copy paste and utilize python code from the internet? I think yes. But it's courtesy to write the source of the script into the script code.
  22. Great Job Sarah, Your nodes are exactly this kind of stuff I like to see here. Thanks. Too bad I recognised but now :-)
  23. A new Version of this Object. I created the script new and under the object and module orientated marionette phylosophy. So it is based now on this nodes and wrappers: HandyNodesAndWrappers
  24. Some New nodes: (Also I notice, how much faster and better it is to first calculate the values just with list handling and at the end drawing real geometry. ) 2D Pt Shaker: Move every Point (2D Point list) randomly by a value looser: Deletes randomly values of a list shuffler: Randomly grab values out of the input and creates a new list with same length Symbol 2D and 3D All those nodes are handy to use with point grids to get a less strict look of a grid. A natural spread of points. If someone notice, that this stuff can be done with standard nodes, let me know this. It would be pointless to "hack" nodes for things that can be easy done with a wrapper or a standard node.
×
×
  • Create New...