Jump to content

twk

Member
  • Posts

    877
  • Joined

  • Last visited

Everything posted by twk

  1. Thanks @AlanW, thats what I've done. They are made up of 3d loci's and 3D Polygons The issue I'm having is that the grade limit is set to Apply To:Proposed Only. However when I view the Site Model in 3D Existing, its showing the Site being affected still by this grade limit.
  2. I am experiencing an issue with Site Models where the underlying existing site data is being altered to meet the grade limit boundaries, when the Site Model picks up modifiers (The Grade Limit is set to affect Proposed only). The Site Model is on its own design layer, the Site Modifiers are on a separate layer, and all the modifiers are set to affect the proposed site only. The grade limit is also on the same layer as the Site Model. Can anyone provide assistance to resolve this problem? Is it a known bug? Tagging the experts here 😄 @Tamsin Slatter @bgoff @Pat Stanford Existing Site Model Problem with Grade Limits.mp4
  3. I have yet to implement copy protection for my plugins, but once I do, I will be going the last number of digits per serial number checking mechanism. @Pat Stanford, would be very much interested in being added to that message thread thanks.
  4. you'd have to do a deep search, for objects within the wall: try this: def apply_code_to_objects(hObj): object_type = vs.GetTypeN(hObj) object_parent_type = vs.GetTypeN(vs.GetParent(hObj)) if object_type == 68: # Check if object is a wall, search within wall h2 = vs.FIn3D(hObj) # Get handle to first object within the wall object using FIn3D while h2 != None: if vs.Selected(h2): # If object within is selected if vs.GetTypeN(h2) in [86]: #If type is plugin object (86 = Plugin Object) object_type = vs.GetTypeN(h2) # store object_type as vs.GetTypeN of this selected object within the wall break # break while loop h2 = vs.NextObj(h2) # else move onto next object within wall vs.AlrtDialog(f"Obj: {object_type} in {object_parent_type}") vs.ForEachObject(apply_code_to_objects, "(INSYMBOL & INOBJECT & NOTINDLVP & NOTINREFDLVP & (VSEL=TRUE))")
  5. Heres another use case. I was trying to explain drainage design to a coworker and so I fired up ChatGPT, fed it Section 3 of the NZS3500 standard, asked it to summarise it and list out considerations for 3 bedroom residential house design, This is what it spat out: It basically took 20 pages of clauses tables and definitions, and summarised for us. <crazy>
  6. I agree, they are not layers, but to the point of referring to them in tutorials, at this point, it looks like they have to as they are called "Sheet Layers" in the actual drawing user interface. Also, (nitpicking here 😄), sheets do not 'contain' layers, they can contain Viewports that contain layers, and classes. But you're totally right, I only comment on this as I'm in the process of explaining the Vectorworks ecosystem to a Revit user currently on-boarding. The terminology should be changed to just "Sheets" on the drawing user interface.
  7. Happy New Year All, Heres to 2023 helping us forget 2022 😄 The folks at https://www.evolvelab.io/ have come out with an interesting approach to the rendering game in CAD. https://www.evolvelab.io/veras Would be cool if Vectorworks could get ahead in this space, if they haven't already 😉 https://forum.evolvelab.io/t/rendering-exterior-cabin-the-rac-basic-model-sample-revit-model/493 One basic render > multiple text prompts > generated multiple versions in an instant. For those unfamiliar, prompts are text that are provided by the user to the AI generator, to trigger a response that the algorithm will interpret. So the text prompts are crucial in some instances. Base render. Prompts that adjust background images, weather, and textures on building. Prompt: modern minimal cabin, limestone, white walls, white ceiling, white cabinets, background forest during autumn Prompt: modern minimal concrete cabin, background forest during autumn Prompt: modern gray wood cabin, forest during summer Prompt: modern gray wood cabin, forest during winter, snow, blizzard, white oak flooring interior Prompt: muted colors, cabin in the woods, gray sky AERIAL SHOTS:
  8. It remembers for that particular thread. Once you reset the thread, all previous interactions are deleted. However all your inputs are used to feedback into the overall AI's algorithm/learning. So releasing this into the wild by the developers is not for fun times, the AI is need of interactive data, which is why I believe they've released it.
  9. Some have in thread below: I have started using it, and I must say it is both cool and scary at the same time. Not too sure how to feel about it yet. It can write articles, even write full code, and can also write a song or a poem. Honestly still trying to wrap my head around its functionality and use-cases. Definitly something to keep an eye on. A screen recording below, obviously not everything is correct in the article, but I think it depends on the prompts you ask it as its based on a highly advanced Natural Language Training model. It is quite fun, in a dreading kind of way.lol 13.12.2022_22.15.05_REC.mp4
  10. in the zip file is vs.py file. That you place in the root folder of your project. Not used to sublime (PyCharm User), but I'm guessing its the same principal. The community version for PyCharm is very capable if you want to use it: https://www.jetbrains.com/pycharm/download/#section=mac
  11. ^^ This method never fails. Just make sure to set your language in the script editor appropriately
  12. Yes, that is what I've reverted to, just means attaching a record to every object, and making sure the records attached. So I have 2 Data Viz', - one for showing objects that have the record, to make sure I'm not missing any crucial objects, - and then another to actual classify visually, after the data has been entered into the custom records.
  13. Yes, but I already know where it is mentally. Really needing to see what 'objects' are in this area. Eg. Property Line Object on a separate Design Layer (say, SITE PLAN). Then on this multi story building (where plans are not aligned), there are service pipes/ducting that can be visualized with colorizing where those service objects are per LOT/UNIT, etc, as you cycle through viewports/sheets/design layers.
  14. Ah, thats a shame, it works in normal worksheet databases, we really need to see this visually. Will have to open up an enhancement request
  15. Not sure if its being documented anywhere, and can't seem to find in help articles, but does the Data Visualization Object Criteria settings disable 'Location' by design? or is this a bug?
  16. Yes, this is my experience as well. I believe Vectorworks writes all settings to XML settings files at application exit/close
  17. Similar to Plugin Styles, you can set certain Record Fields attached to objects, to be auto-filled by predefined criterions, setup through the Data Manager. I'm assuming that snippet you've attached is of a cabinet object, and you're looking at an IFC record attached to that cabinet object. The first image you attached has that icon showing that it is being 'auto-filled'. Clicking on it again, would bring you to the second image you've posted, and that would set that field to be now instance based (meaning you can override the auto-filled data now). It is a powerful addition to VW that we've only just started to take advantage of. Using Data Mapping through the Data Manager and writing to a custom wall record, we can auto-calculate North Facing walls, by pulling info from a sun-heliodon object and a using a bit of math/trignometry. Have a look at this help page for setting up some basic formulas: https://app-help.vectorworks.net/2023/eng/VW2023_Guide/DataManager/Creating_or_editing_mapping_formulas.htm#h
  18. Its to do with Data Mapping records through the Data Manager. You can have record fields automatically assigned to other parameters of plugin objects or IFC properties, or symbol names or classes. Look up Data Mapping in the help
  19. Could you not just collect all object handles into a python list. then delete after collection? (I've left out the convert nested symbols code). Hopefully the cleaner python will send you on the right track.) import vs def delete_3D_objects_in_symbol(symbol): _3D_components_in_symbol = [] h1 = vs.FInGroup(symbol) while h1 not in [0, None]: if not vs.GetObjectVariableBoolean(h1, 1160): # Not Screen Plane Object sType = vs.GetTypeN(h1) isSymbol = sType in [15,16,11,86] _3D_components_in_symbol.append(h1) # if isSymbol: # prevObj = vs.PrevObj(h2) # vs.SymbolToGroup(h2, 1) # toMessage.append("symbol to group" + "\n") # delete3dGeometry(vs.NextObj(prevObj)) h1 = vs.NextObj(h1) for obj in _3D_components_in_symbol: vs.DelObject(obj)
  20. Yes, that would be correct @rDesign. I don't know of anyway to write data back to xml through excel at the moment
  21. We don't generally print out our notes db, but this gave me an idea to use Excel's PowerQuery editor. So this for users who have access to Microsoft Excel. Using Excel, you can import data from an XML file, (and other formats, have not tested the Vectorworks txt format, should work as well, as its tab-delimited) Also, as this is referenced into Excel, any updates to the notes xml file through vectorworks will be updated in Excel without having to setup data connections, removing/reordering columns, etc ScreenRecording below. (I kept the NoteUUID etc, but that can be removed if you need to). Vectorworks XML DB to Excel.mp4
  22. Much welcomed changes, thanks @JuanP. And thanks too to @Christiaan, you're a legend for keeping these discussions going and effecting change!
  23. Annotation in the viewport annotation space is the way to go
  24. That shape graphic is a bit misleading, I believe that's just a symbolic representation of the profile. They do not show up in 3D
  25. The last time I tried it was 32767, something to do with Int types or LongInt, I can't remember. I've in the past used a splitter command and had 3 params set aside for storing data eg (storeParam1, storeParam2). code below is an example of how it would go # Split every_length x characters def value_splitter(listparams:list, value_to_store): """ listparams is List of record/plugin | field/parameter names """ val_str = str(value_to_store) max_char_length = 32767 val_params = [val_str[i: i + max_char_length] for i in range(0, len(val_str), max_char_length)] if len(val_params) <= len(listparams): for i, x in enumerate(listparams): vs.SetRField(plugin_handle, record, x, val_params[i]) else: raise ValueError("Number of parameters too few for splitter") A while back, VW introduced the use of ObjectUUIDs. You could try storing these in a json file together with the rest of the other data you're wanting to store.
×
×
  • Create New...