Jump to content

JBenghiat

Member
  • Posts

    2,031
  • Joined

  • Last visited

Everything posted by JBenghiat

  1. I haven't had a chance to publish any tutorials beyond the documentation. BeamViz does let you set an additional focus plane, so you can visualize the min and max throw. I haven't found any projector specifications that tell you the depth of focus for the lenses, though I imagine that narrower lenses are going to give you better focus tolerances, as will higher-quality lenses. Once you have your throw differential, I would recommend contacting the manufacturer. Some projectors bill themselves for being suitable for mapping onto 3D surfaces, but I don't know how that translates to usable specifications.
  2. @jameslye, if I understand your concern, it's that the models should show that the lens intersects with the geometry of the light if put at 180 tilt. The examples you have show the fixtures from the side. Take a look at the front view. I suspect you'll find that the lens intersects with the top part of the YOKE and not the base, so while you can't see the error from the side, you can see the implications of the tilt limit in other views.
  3. I think where's waldo is still the best method: locus(0,0); waldo:=LNewObj; objH:=PrevSObj(waldo); delObject(waldo);
  4. Either should work. I believe the ID for the /Data folder is 3.
  5. You should really only have plug-ins in the plug-in root folder. Either place your file in the data folder or in the Libraries folder, where each solution has its own sub folder.
  6. You can do this fairly easily with data tags. The object functions Insertion Point X/Y will use the insertion point of the data tag if the tag isn't attached to the object. For example, your tag formula might be: #IPX#, #IPY# If you are providing measurements from a hoist origin that is not at 0/0, the data tag can't yet do that math. You would have to move the user origin to the point from which you want to take measurements.
  7. I suspect the QP 3D object needs the correct texture applied that does not cast shadows. Edit the 3D component of the symbol and make sure the texture matches the one assigned to other Lighting Device symbols.
  8. Color is 16 bits, so the range is 0 to 65535
  9. You need to make a custom dialog for that — there aren't any pre-defined dialogs. The marionette node referenced above might serve as a good template.
  10. I know this is an old post, but I'm compiling wishlist items for ProjectionViz https://benghiatlighting.com/software/products/pv-1 Thanks for the nod @trashcan — just one clarification — #1 is already possible. Just tell the object not to draw the screen surface. That lets you place the focus coordinate directly onto the object receiving the projection. In fact, I specifically designed the tool to help with projections that don't fall onto screens. Most of the above list is already possible, including rotating the projector to any angle (and still correctly computing lens shift limits). The latest version even re-orients the 3D component of a projector symbol.
  11. Model>Volumetric Properties... or Create a worksheet and use =SURFACEAREA
  12. Keep in mind that pan and tilt are on top of this rotation. The x, y, z rotation values just set the reference orientation. Also, while the order that you enter rotation values doesn't matter, the lighting device will always apply in the order of z, x, y, so when a lighting device is yoked out at 90 degrees, the z and y rotations have the exact same effect. Think in terms of first setting the plan orientation of the fixture, and then either pivoting the clamp on the pipe to yoke it up/out (x axis) or pivoting the pipe (y axis). Do get the rotation you're after, either apply a 15 degree tilt after rotating ( 90, 90, 0 ), or first set your z rotation so that the yoke is parallel to the way you want the lighting device to point, and then set a 90 degree y rotation. Of course if this is a projector, it doesn't necessarily have a clamp and a yoke, so there may be a larger discussion of how to specify the orientation.
  13. I also create the control points in the recalculate event sink, and have a method that uses CustomObjectControlPtSet() to create all the control points. I have an enum defined for all the control point IDs. I'm using an implementation of IProviderCursorHandles to handle the control point actions, as well as set custom tool tips and images. Ended up creating a child class of CParametricCustomBar that has methods for setup, update, lock, and unlock, so I could easily use the same custom bar for the insertion tool and control points. In both cases, I'm not seeing the custom bar the very first time in a Vectorworks session. For control points, I only see the custom bar in 2D views. I tried installing and releasing the custom bar during the constructor, but that doesn't help. Otherwise, everything is working as expected.
  14. The rotation values are really a single transformation rather than sequential transformations in the order you apply them. The two sets of transformations are effectively the same, so Vectorworks recalculates to the simpler of the two.
  15. And I seem to be experiencing the same thing with control points — the first click in a Vectorworks session, and the custom bar does not load, but functions as expected after that.
  16. Thanks @Maarten DE, using CParametricCustomBar was quite useful. Vectorworks was hanging when I used the ISDK calls, and the VWPluginToolCustomBar class seems to require first initializing an array of CustomBarRefID's, which is a bit confusing. I have everything working, except that the very first time I run the tool each session, the data bar is blank. I was also hoping to use SetDataDisplayBarField to automatically handle certain data types, but that didn't seem to work for me. For a custom tool, I'm calling the create and install commands from PointAdded(). I'm overriding the OnCustomBar_ methods for setup, update, lock, and unlock. if ( this->GetToolPointsCount() == 1 ) { if ( fCustomBar.GetCustomBarID() == 0 ) { fCustomBar.Create(); fCustomBar.Install(); } } else { fCustomBar.Release(); }
  17. JBenghiat

    Custom Data Bar

    Does anyone have any advice or examples for creating a custom data bar? I can't seem to figure out the right place to call CustomBarCreate() and CustomBarInstall().
  18. The key maintains properties of the symbol but doesn’t have any Lighting Device data, so you can, for example, use the Light Info record to set colors in the Summary via Data Viz. I actually think this is correct behavior, as you can theoretically set Lighting Devices using the same symbol to different instrument types.
  19. Do we have a way to respond differently if an object is in a viewport set to Renderworks vs OpenGL? Would update support catch kNotifyRenderModeAboutToChange when the user updates the viewport?
  20. @Sam Jones The position and rotation of an object can be expressed as its translation and rotation from the origin, which in turn can be expressed as a transformation matrix. https://www.tutorialspoint.com/computer_graphics/3d_transformation.htm
  21. SetEntityMatrix() should work. You’ll first need to get the matrix so you can pass the offset back to set.
  22. For me, the field matches the value displayed in the OIP. I'm assuming you're on 2021. Make sure your accessories have weight specified and that you are running SP3. Prior to 2021, the clamp would appear as a separate item in the report.
  23. Script-based plug-ins run linearly, so the resets actually happen after the script completes. You should look at your Create scripts. There's no reason to switch the active layer — you can send any object to any layer without making it active, and if you do change the view, you should always restore it.
×
×
  • Create New...