Jump to content


  • Posts

  • Joined

  • Last visited


518 Spectacular

Personal Information

  • Homepage
  • Location
    United States

Recent Profile Visitors

5,441 profile views
  1. The description explains the sorting: The first value is the length of the array. If this is a dynamic array, then you should be tracking the size of the array anyway. The second is the index of your data structure, if you have one. If the array contains handles to record instances, pass the field index that you want to sort by. I can't recall if this also works on PIO's. While vs allows you to access data via the PIO handle, it's technically not a record. If it does work, you can use the Plug-in manager or DebugListView to find the field index. I believe the index is 1-based/ Alternatively, you can sort an array of structures (see the vs language guide). You then pass on which element of the struct you want to sort, based on the order of fields in your structure. This is probably a better approach, as you don't have to rely on the index of the field — you can use GetRField to retrieve the data and store it into your structure. You can also concatenate data in order to create a primary and a secondary sort. Sorting data in vs is definitely clunky, and with Python as an alternative, not likely to ever improve.
  2. If the plug-in has its own version control, you can hook the kNotifyPlugInObjectUpdate notification in update support. But that requires you to check the plug-in instance to determine if it needs upgrading, for example a version field or the absence of data that gets auto-filled on first run. You can also use IProviderSaveCleaner to trigger actions just before save, though I believe this is more geared towards reverse translation than forwards translation. I have not tested either of these with the batch conversion process.
  3. There is a migration interface. I haven’t implemented it, so I don’t know is you can easily find it in the SDK — I know I have it in an email somewhere. You can also either call the file up-convert interface or listen for the plug-in update event — I presume handling would be the same whether called for an individual file or a batch convert.
  4. Hmm... I definitely want it to receive shadows from other objects. Is this because the image textures seem to be sort of like gobo textures? The projection cone is a 3D object and separate from the projected image. Now that i'm back at my computer, the texture for the cone is already set not to receive shadows. You'll only see this on RW, though. You can always turn off the projection cone in Display options, or in Rendering options toggle Only show image plane. This is, of course, in addition to the option of applying a class to the projector cone and controlling that way.
  5. Yes, there’s a manual section on this. Adjust the interaction locks to control how drags and move commands function. Locking the length of heights, and then either the location of projector or focus, will only move the unlocked location. For example, if the projector location is locked, a move of x=3 would move your image 3’ to the right. Locking throw or plan distance will move both the image and the projector. Dragging a control point in 2D or 3D will move just that point, regardless of locks. You can use the Lens to hanging point option to enter the z distance from the lens center to the insertion point. You will have to adjust the symbol for L/R. Note Vectorworks does not include a way to universally indicate the lens center in a projector symbol That’s not currently possible. I’d have to look at the math involved, and basically it would turn the image upside down. The workaround would be to duplicate your symbol so the snorkel faces up. Edit the projector beam texture and uncheck Receive shadows. I guess it’s somewhere in the middle. You have to add the text you want to the label, but you don’t have to deal with any layout. It would actually be way too complicated to allow simple text box toggles as well as custom prefix, suffix, and label order. A single text box for all of this is actually much simpler. This is a limit of OpenGL itself. Now that GL is becoming deprecated, there’s a chance this could improve in the future.
  6. My guess is that the Render Bitmap tool is not using Redshift.
  7. Light will pass through objects with transparency, like glass, but they do not recognize shadow mapping. Redshift requires shadow-casting shaders to apply directly to lights, which isn’t something light objects in Vectorworks have ever been equipped for, so it’s not so much hobbled as not implemented yet.
  8. Currently, lights in Redshift don’t recognize shader transparency, so image projection is not possible.
  9. Do you mean on a code level? The 2D point (x, y) equals the 3D point (x, y, 0). Or do you mean something else, like converting a 2D locus into a 3D locus?
  10. This depends on the type of object, which is easier if you’re intentionally creating objects for export. The only object that gives you actual vertices is a mesh. If the objects are extrudes, you need to get the points off the planar base, the do the math to get the vertices in space. If it’s a generic solid, it can’t be done.
  11. I believe this is on the list to improve. In the meantime — shameless plug — Savvy Sequencer and Savvy Select Similar Instrument both contain options to apply numbering to all accessories (e.g. unit numbers) or only non-static accessories (e.g. channels). https://benghiatlighting.com/software/products/savvy-sequencer https://benghiatlighting.com/software/products/ssi1 Personally, I use Select Similar Instrument to select all the units in the same position, do a quick check to see that everything is in the correct position (selected as expected), and press the mode bar shortcut (“p” by default) to number.
  12. Check your path. File paths are usually relative to the script location, unless you use absolute paths (i.e. c://… or \Users\…) Possibly the file won’t actually appear on disk until you call EXL_SaveAndCloseBook()
  13. You can actually get a handle to a class, so: GetObject(className) if handle is nil return false else return type of object is 94
  14. You can do this during the widget prep event. Look at the vsoWidget calls.
  • Create New...