Jump to content

Julian Carr

  • Content Count

  • Joined

  • Last visited

Everything posted by Julian Carr

  1. A couple of things to note: 1. You need to set the 3 levels of detail for each object as there is no assumption that if an object is visible at one level, it will automatically be visible at another. 2. If the PIO contains groups, you need to set the detail level for each object within the group as setting it for the group itself will have no effect.
  2. This might be quicker. Convert a copy to nurbs then get its length using HLength(): Procedure T; VAR hTemp, h3DPoly : HANDLE; BEGIN h3DPoly := FSActLayer; hTemp := ConvertToNURBS(h3DPoly, True); Message('3D Poly Length: ', HLength(hTemp)); DelObject(hTemp); END; Run(T);
  3. Just wondering if anyone knows how to get a handle to a Plant object's style definition, from a given handle to a plant instance? GetPluginStyleSymbol() works with other styled PIOs, but not with Plant objects. Thanks.
  4. Then you have to consider how the symbols are constructed. Are there container objects within that you need to traverse such as Groups, or PIOs that are controlling fill attributes of objects within independently? Then you will also need to check whether any of the objects have their attributes being controlled by class and respond accordingly. So all in all, not a simple task.
  5. Don't think so. It could make drawing navigation very slow.
  6. I think this works: FlagTopPlan := GetProjection(ActLayer) = 6;
  7. Glad you got it working. Apart from copying and pasting between files, this functionality also ensures that the symbol is seen as being in-use by the Purge command, so won't get accidentally deleted.
  8. You need to add a symbol instance to the profile group of the PIO using SetCustomObjectProfileGroup(). Because this is persistent between regens, you need to delete the profile group on each regen then reinstate it. Something like this: Symbol('mysymbol', 0, 0, 0); h1 := LNewObject; h2 := GetCustomObjectProfileGroup(ghParm); IF h2 <> Nil THEN DelObject(h2); IF h1 = NIL THEN Flag := SetCustomObjectProfileGroup(ghParm, h2) You can always check the existence of the profile group by selecting your object then using the Edit Group command.
  9. Sorry you will need to put a minus in front of Name2Index, but also note that you may not see the line is dashed because the line from the adjoining component is solid, so you might need to do something like this: procedure test; var Response : boolean; begin Response := DeleteAllComponents (nil); Response := InsertNewComponentN (nil, 1, 5, 0, 10, 0, 0, 2); Response := InsertNewComponentN (nil, 2, 20, 0, 6, 10, -Name2Index('Dash Style-2'), 0); SetTool (13); end; Run (test);
  10. Try using Name2Index('Dash Style-2') in place of -2, as the number will vary depending on the order the dash styles were imported into the drawing. Obviously the dash style will already need to exist in the file for this to work.
  11. So what Josh is referring to is a structure like this, which is one of the most time saving scripts you can have because it can be adapted to do so many things:: Procedure TimeSaver; Procedure DoIt(h1 : HANDLE); BEGIN SetClass( h1, ‘Class Name’ ); END; BEGIN ForEachObject(DoIt, (Sel = True)); END; Run(TimeSaver);
  12. The Date() procedure has always used the system settings to determine what is displayed. On the odd machine it ignores the system settings, but this is very rare.
  13. Never mind, I got it working. Not really sure what I did however, but now it works.
  14. Is anyone using vsoStateGetParamChng() with n event enabled linear PIO? It works OK with a point object, but returns false for a linear object. Thanks.
  15. You might be able to do it in the reset evert (3) using this: Flag := vsoStateGetParamChng(ghParm, gOutWidgID, gn, gsOldParmValue); gOutWidgID is the widget ID of the param that has changed. gsOldParmValue is the previous parameter value. I've never used it with control points though, so good luck.
  16. Thanks Orso. Next question. How to get the tile fill name of a wall component. If I use GetComponentFill() then index2name() on the returned fill, it doesn't work. Thanks.
  17. Anyone have a code snippet for applying a Tile resource to a polygon? Not having much luck. TIA.
  18. Anyone have a code snippet for applying a Tile resource to a polygon? Not having much luck. TIA.
  19. Thank Josh. Yeah I tried that already but unfortunately it doesn't do anything in this case and the function returns false.
  20. Actually, one more. Any ideas for an equivalent to InsertSymbolInFolder() for shifting imported resources to a designated resource folder? InsertSymbolInFolderN() seems to be accepted by the compiler, but doesn't do anything and is not in the Function Ref.
  21. Has anyone figured out how to create a resource folder (other than a symbol folder [type 92]), and if so, what are the Object Type numbers for the various types of resource folders? [Edit]: Actually all resource folders are type 92, and I have tried using SetParent(), but that doesn't work to put resources into resource folders. Thanks!
  22. Hi Markus, I don't know about your command but I do use DeselectAll in a lot of scripts and it continues to work there. Do you know you can also deselect all by holding the Spacebar down then double tapping the X key? The Spacebar preserves the current tool selection. If you don't need this, then just double tapping X will suffice. Julian
  23. OK thanks for the confirmation Nicolas. Interesting that Vw can write to the Libraries folder though. I guess that's a slightly different mechanism though.
  24. Thanks guys. Nicolas: I am the admin user on both machines and if it works on a Mac then, should it not work on a PC? Still, maybe you are right. Pat: Message(GetFolderPath(-1)); also returns the path to application folder on Mac and PC. Sam: If you run Message(GetFolderPath(1)); you will see it does return a separator at the end of the path name.


7150 Riverwood Drive, Columbia, Maryland 21046, USA   |   Contact Us:   410-290-5114


© 2018 Vectorworks, Inc. All Rights Reserved. Vectorworks, Inc. is part of the Nemetschek Group.

  • Create New...