Jump to content

JBenghiat

Member
  • Posts

    2,024
  • Joined

  • Last visited

Everything posted by JBenghiat

  1. I think this isn’t a warning you can opt not to show again, as it only arises in specific circumstances. Are you frequently entering and exiting the plug-in Manager? A better consideration might be how to avoid this. Using include files, turning on developer mode, and turning off caching (there should be some discussion of this in the archive) helps avoid regularly entering the plug-in Manager.
  2. Ideally, you would control the exchange of data outside the PIO: Custom menu command: Require a selected object. Extract data from the selected object. Ask user to click a point, then insert the PIO and set its fields. RunTempTool can be useful here. Custom tool: Click in the drawing for the insertion point. Insert the PIO. Ask the user to select an object. TrackObject can be useful here. Note, the tool code does not run until after your first click, so doing the above in the revers order would be difficult.
  3. In the out position, you can basically treat these like building seating out of Wenger-like platforms; either use the stage deck tool or manually use rectangles and extrudes, as the two above options indicate. These configurations often allow for a few options of house size. You can use classes for each configuration, including full open and full closed. Also, some systems allow for moving the entire section and other are attached to the wall, with the movable seating adding some complexity, as the seating will migrate a bit between installs. Generally the most important things to get right are ends of the first and last rows and any railings that may cause obstructions. Also don't forget the potential for a row of seats on the floor.
  4. In _EventSink::OnInitXProperties() set: extProps->SetObjectProperty(objectID, kObjXPropPreventWallInsertion, true); varCreateCustomObjectDontInsertInWall is actually an application preference (var* are prefs and ov* are object variables). To use that, you would implement in the handle complete event of your custom tool — get the current setting, set to true, restore setting. This is equivalent of clicking the option in the mode bar.
  5. These shouldn't show up in viewports, and when you see them, it's a bug. What version of VW are you using? I believe this shouldn't be an issue for 2019 SP4.
  6. When you import a layer (in the new layer dialog), you have the option to import all the layer's objects, so you could have one template file for the venue, and another template file with all the various configurations. This is slightly cleaner than deleting the layers you don't need. If the objects for the standard configurations are all on the same layer, you can select them all and create a symbol, enabling the option to convert to group on insertion. This has the added benefit that if you come up with a new configuration, you can create a symbol and use the Resource Manager to export that symbol back to the master file. The above suggestions assume that each configuration is bespoke and that you will make adjustments for every project.
  7. Not exactly— each Lighting Device needs to be a unique instance on the drawing. You can start with a symbol for the 3D geometry, place Lighting Devices around it, then make that a symbol. In the symbol options, select “Convert to group,” making it a “blue symbol.” That allows you to at least place the elements as a unit.
  8. You can easily find your user folder by going to the User Folders tab of preferences and selecting Reveal in Finder. You may actually need to try a clean user folder, rather than a new application install. You can use the dialog to create a new, empty user folder, then restart VW. If this helps, copy elements from your old folder to the new folder in batches, and see if you can pinpoint a file causing the slowdown.
  9. TheTrackObject commands are what you want. Note that VS tools don’t run any code until the first click, so you can’t have a tool start out highlighting objects. It works great from menu command or plug-in button or as a secondary action for a tool.
  10. The SDK still uses the modular/plug-in approach, but offers performance improvements (c++ is a pre-compiled language) as well as capabilities that aren’t possible with scripting, particularly regarding user interaction. From what I understand, ConnectCAD already has some functionality built on the SDK.
  11. Are you saying that you did not create the script, or are just reiterating that you are using a script-based solution? Your first step is to determine how you want to describe the holes in the OIP. Are you providing the distance of the holes from a reference point (like the top)? Do you have a quantity of holes on regular centers? To script the holes, create extrudes in the manner you did to create the frame. You may also need to use SetEntityMatrix() to rotate the holes into position. Use SubtractSolid() to make the holes into negative space.
  12. FYI, paged-based symbols will appear green in the Resource Manager (you can actually search the help for "green symbol"), and are meant for things like notes are independent of scale.
  13. See here on setting up windows to debug: http://developer.vectorworks.net/index.php/SDK:Debugging_SDK_Plugins Plug-ins essentially run their own independent code, so you can still break and debug any of your own code even if VW is running in a release build. If the issue is with VW or the SDK itself, debugging can be a little harder: you need to backtrace the break and see on what call you get an error. If you can reproduce an error in TesterModule, submit the modified TesterModule files in a bug report to VW. To answer your original question — essentially no - your plug-in running at all is an indication that it loaded successfully.
  14. Make sure your render settings are set to cast shadows. Note that you are not able to cast shadows and see your render lights in OpenGL, as the instrument bodies create a shadow of the light.
  15. Sure — create extrude representing the negative space of the holes, and subtract solids.
  16. Yes, add this line after defining the texture mapping info variable: inObject.GetTextureMappingInfo(kTexturePart_Overall, txtrMap); This makes sure the structure is properly initialized for the object type.
  17. Are you looking to do something like write the file name and a date/time stamp to a text file? I would recommend looking at python for this, as both file writing and time stamps are far superior to the options in VS. You can also find a lot of tutorials on writing a text file via python. vs.GetFName() will get the name of the current file. Triggering the log automatically requires the SDK, so is possible but a bit more complicated
  18. Scale has nothing to do with mirroring, either with the object variables or the transformation matrix. A mirror is a flip of the transformation matrix and an offset from the line of reflection (twice the vector from the object to the reflection axis) Using matrix transformations can be a bit tricky: you can get and set an object’s transformation matrix directly, which is its location and rotation in space, as well as transform by a matrix (effectively multiply the object’s matrix by the transformation matrix). The order of applying the transformation also makes a difference VWTransformationMatrix also has a method returning whether a matrix is flipped.
  19. If the issue is what I suspect it to be, it looks like this should be fixed for SP4. Here is a workaround for the moment: Create an Extrude Along Path (draw a line, draw a rectangle, select both, Model>Extrude Along Path) In the EAP options dialog, uncheck Fix Profile This resets the default options for EAP. The lighting pipe should now draw correctly.
  20. Have you installed the latest service pack?
  21. I'm not sure if you're thinking of the term "parameter" correctly. A parameter specifically refers to the extra data attached to a PIO. If you want to handle all objects equally, you're limited to mostly the functions you have attached to VWObject: name, bounding box, class, etc. What you are proposing is no small task. The purge command likely compares each object to all other objects, starting with object type, then class, then bounding box, etc. before then comparing specific attributes of that object type. I assume that you're noticing duplicate symbols on importing DXF blocks. Often the duplicate symbols have slight variations from each other, like a rotation or translation, so each symbol is actually unique. You're also comparing entire contents of a symbol definition to the contents of all other symbol definitions, which is a fare amount of processing. You may be best off creating a feature request.
  22. Are you looking for more functionality than choosing the dialog from the text menu? Otherwise, you’ll have to do as Pat says, develop an event enabled plug-in, and add a button that raised the dialog. If you need different parts of the object to have different text settings, assigning text styles by class is an easy option.
  23. For 2D objects, lines are defined by their end point, arcs by center, radius, and sweeps, and all other objects by their vertices. These aren't really parameters, but geometric data that you access with various other Get routines. VWLine2DObj, VWArc2DObj, and VWPolygon2DObj will give you a class to easily access these and any other calculated fields. Plug-In Objects only have a position and rotation. They can also store a path and profile object in a special group. All other parameters are stored in a record field with the same name as the PIO. Just a note, you can compress your code a bit: VWParametricObj params(obj);
  24. The images must also be 72dpi to be recognized as valid. Pixel dimensions alone isn't enough.
  25. Just to add, even internally, VW stores field data as strings (at some point you're writing data to the file). You just have to make sure that writing data uses a string that VW can validly convert to the stored data type. When you're not dealing with SetRField, VW does this behind the scenes.
×
×
  • Create New...