Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by Paolo

  1. Paolo

    Print orientation

    I have the same Designjet HP 500PS and the same problem that I solved. To get exact A0, A1, A2, A3 I have create my custom equivalent formats including the margins that are (for the HP 500PS) 1.7 cm (top and bottom) and 0.5 cm (left and right). For example A3 Horizontal trimmed is 42x29.7 cm, including margins is 43x33.1 cm. Doing this way it works. Another way is to print to PDF and using a simple layout program like this (Mac only): http://digilander.libero.it/kiaradot/fitplot/Contents/Resources/English.lproj/fitPlot%20help/index.htm The advantage is that you may print more drawing at once optimizing paper waste and having the margins under control.
  2. Paolo

    Getting extrusion value

    Hi all, Is it possible to get the extrusion value of an extruded object in VectorScript? I have checked the VectorScript Reference but found nothing appropriate. Thanks for your help!
  3. Paolo

    Getting extrusion value

    Your suggestion has been the key! Thank you! Here's a procedure to increase all the extruded object in a selection of a user given value: [font:Courier New]procedure increaseExtr; {the goal is to increase extruded objects in the selection of a user requested value} var oggetto:HANDLE; increaseValue : REAL; FUNCTION increase(h:HANDLE):BOOLEAN; var height,width,depth:REAL; xRot, yRot, zRot:REAL; p0X, p0Y, p0Z: REAL; p1X, p1Y, p1Z: REAL; result, isMirroredXY: BOOLEAN; begin {check if the obj is an extrusion} if (GetType(h) = 24) then BEGIN result := Get3DOrientation(h, xRot, yRot, zRot, isMirroredXY); Get3DCntr(h, p0X, p0Y, p0Z); SetRot3D(h, 0,0,0 , 0,0,0); {here depth = extrusion value} Get3DInfo(h, height,width,depth); {I increase the depth} Set3DInfo(h, height,width,depth+increaseValue); Set3DRot(h, xRot, yRot, zRot , 0,0,0); Get3DCntr(h, p1X, p1Y, p1Z); {move of the misplacement p0-p1} Move3DObj(h, p0X-p1X, p0Y-p1Y, p0Z-p1Z); Get3DCntr(h, p1X, p1Y, p1Z); END; increase := FALSE; end; begin {ask the value to increase} increaseValue := RealDialog('Increase extrusions in the selection of this value','10'); {apply to the selected set of objects} ForEachObjectInList(increase, 2, 0, oggetto); end; run(increaseExtr);[/font]
  4. There is a plugin to import .ai or .art files (it imports in VW just the paths, not fills, texts and other graphic attributes) at vectordepot: http://www.vectordepot.com/plug-ins/ There it is a demo and a complete version in the market section.
  5. Paolo

    Tracking Project Hours?

    Go to VectorDepot and browse for a program called Logex. Logex reads and analyze the VectorWorks log file extracting from it all saved drawings on which you have spent more than 1 minute. A typical output could be this: fileX 23/05/2006 20:39 00:33 fileY 23/05/2006 20:42 00:11 Untitled 1 23/05/2006 20:42 00:01 fileZ 23/05/2006 20:42 00:25 Once saved, the output is a text file with each line representing an event (drawing) record. The record fields are: the name of file (drawing) the when (date of event) the time spent for that file Fields are TAB separated, so the file is ready to be used in a database or in a worksheet for further statistics. Logex analyze the integrity of the VectorWorks log and check if there are errors (due to VectorWorks crashes or possible deactivations / activations of report from the VectorWorks general preferences). Errors are classified by a color syntax that may be helping for the correction work. Presently logex is available only on Mac OSX? 10.3.9 or more, any version of VectorWorks? (version 12 with some limitations due to a known bug in the "saved as?" lines produced in the report). There is no way for Windows users. Logex is available in Italian and English localization.
  6. I have worked on the problem and went out with a plugin that is able to import paths from files saved as .ai or .art from Illustrator?, FreeHand? and other vectorial programs. The importer is avaliable here: VectorDepot There is a free evaluation copy too (limited in the number of entities it can import). Waiting for a true usable quadratic bezier tool in VectorWorks, this can be a workaround for all of those users that can draw their artworks with other programs.
  7. Paolo

    Dimensioning in 3-d

    At Vector Depot there is a set of script to help generate and dimension exploded isometric view. It has an isometric dimensioning tool that uses islandmon algorithm. http://www.vectordepot.com/market/vm-017_explosion_tools.html It works only on isometric views (snapping on 3D edges along XY or Z planes). It's a workaround waiting for a native 3D dimensioning from NNA.
  8. Paolo

    PDF's from Mac

    Try this too FitPlot It is useful to send PDFs to the plotter framing them into the plotter sheet area.
  9. I'have tried this little experiment : Made a Bezier shape in FreeHand (5 points, 2 nibs and 1 bezier point with 2 handle points). Exported as .ai (even .ps or .eps should work). Opened in Textwrangler (or similar text editor). Found the clearly visible sequence of 5 points. Opened Vectorworks and created a similar shape (polyline tool) with this sequence: angle point, bezier point, angle point, bezier point, angle point. Modified each point coordinate according with values of the .ai file. The obtained curve should now be the same as in FreeHand, but a superimposition of the two shapes (proportionally rescaled) reveals a mild difference. Conclusion: bezier's algorithm used by the two programs are different!
  10. Or, at least, I wish an Illustrator / Freehand importing tool. I currently use Freehand beziers for logos and free forms, then I export in Illustrator format. I import it in Cinema4D (a very old version I use just for this) and export from there as dxf. When I open the dxf in Vectorworks, alas, the bezier lines are all converted into polygons (segmented in thousands pieces). I suspect there is no satisfactory algorithm to convert true beziers (such used in Illustrator, Freehand, Photoshop) into the native bicubic spline engine of Vectorworks.
  11. Paolo

    wall niche?

    VectorDepot has published an instruction / explaination file about "openings" plugins set (including the wall niche option). The link is here: Opening plugin (wall niche) readMe
  12. Paolo

    wall niche?

    I agree with you, Robert, the name "Openings" for the plugin's set may be confusing, but niche is an option available in a general, very customizable, opening in the wall. here's th info panel of the plugin and same image respectively in plan view, dashed line and openGL renderings. Hope now it's clear.
  13. Paolo

    wall niche?

    Are the VW Architect door and window tools able to do a wall niche? If yes, why don't you tell us before?
  14. Paolo

    wall niche?

    The plugin I mentioned is now available on Vectordepot VM-030 Openings
  15. Paolo

    none class

    Yes, of course, these are the only two obligatory and undeletable classes, always present in any VW document. You cannot even change their names, though you can change graphic attributes.
  16. Paolo

    none class

    Is there a programatical way to get the "none" class name? This is useful for plugin localization. In italian "none" become "nessuna" and so on for other languages. Is it possible that this special class (it is always present and you cannot delete it!) has not a VectorScript instruction for retrieving its localized name? Thank you for your help, Paolo
  17. Paolo

    none class

    I have found it by myself! classlist(1) gives the string of the "none" class
  18. Paolo

    wall niche?

    Yes, I'll try to publish it at VectorDepot, but the site is under heavy remake at the moment. If you can't wait, write me at project@arcoarredamenti.it. Paolo
  19. Paolo

    wall niche?

    I have made, some time ago, a plugin that fits your needs. It can create parametric niches or openings with splays (also aymmetric) and vault of various kinds. I can't attach the plug in directly here. Let me know how to send it to you. Ciao,
  20. Paolo

    VectorWorks Log

    I have written a program that reads VectorWorks log and extract from that a "text only" file (with Tab Separated fields) to be used in databases / worksheet for statistics, billings etc.. The record fields are: date: MM/DD/YYYY HH:MM drawing: file name time: HH:MM The program (I called it logex) is working fine with my VW11 version and is localized for English and Italian (my native language), but, while testing on VW12 logs, (thanks to VectorDepot), we discovered a bug in the report produced by that version. The problems is in the Saved as lines. VW11 produces a report like this: 1/6/2006 4:59 PM Opened "file1". 1/6/2006 4:59 PM Saved "file1" as "file2". 1/6/2006 4:59 PM Closed "file2". Unfortunately the same in VW12 appears as: 1/6/2006 4:59 PM Opened "file1". 1/6/2006 4:59 PM Saved "file2" as "file2". 1/6/2006 4:59 PM Closed "file2". Note that the name at left is the same as the one at right (the new name!). There is no chance for my program to recognize what is the name of the file you was saving as. Is there anyone that can confirm this bug? I'd like to know if it happens only with VW12 or the problem is already present in VW11.5. Previous version (I am user since 8.5 to 11) had not such a problem. Is there anyone at Nemetschek aware of this? Thank you for helping. This program should be published soon on Vector Depot
  21. Paolo

    VectorWorks Log

    Thank you Katie, can you tell me since which version this bug was introduced?
  22. Paolo

    scripting views

    I'm searching a way to retrieve points of location and target from a whatsoever view, but there is not the GetViewVector() VectorScript function (that'll be what I need!). This is useful to me because rendering programs I use such Artlantis or Piranesi make the camera-target coordinates as their numerical perspective setting. It is easy to transport the camera and target coordinates from Artlantis to VectorWorks and, by a script which use the SetViewVector() function, recreate the very same shot, but I am not able to do the inverse. I've tried to find a relation between GetView(), SetView() and SetViewVector(), until now with no result. Is there someone who can explain me what relation there is between these view functions?
  23. I would like to share my saved workspace (VW 11, Mac OsX 10.3) with my colleague (VW11, Windows Xp), but giving him a copy of my .vww file and putting it in his workspace folder, does not work. Is there any suggestion? Thank in advance for your help.
  24. Paolo

    Line text to text block

    Hi Hong, One simple script to merge blocks is the following: code: procedure mergetext; const CR = chr(13); var texthandle : handle; list : handle; counter : integer; FUNCTION merge_text(h:HANDLE):BOOLEAN; begin if counter = 1 then texthandle := h else begin SetText(texthandle,concat(GetText(texthandle),CR,GetText(h))); delobject(h); end; counter := counter+1; merge_text := false; end; begin texthandle := NIL; counter := 1; {cycle through selected objects} ForEachObjectInList(merge_text,2,1, list); end; run(mergetext);[/code] In simple words, select the text blocks you want to merge, then launch this script. It should copy the content of each text block into the first of the list deleting the no more needed blocks. Note 1. The order (in the stack of objects) in the DWG you converted may be reversed, so if your final text results upside-downed, simply exchange the two members in the concatenation expression. Note 2. The constant CR (carriage return) is set to chr(13) for the Mac side of the world. If you are a Window user, you should use something like chr(10)+chr(13) to get the carriage return. If you want no carriage return at all, simply set CR to ' ' (one space) or '' (nothing). Hope this helps you, bye
  25. Paolo

    create a class from object attributes.

    Hi Hong, I made a script that creates a new class (naming it with a prefix and a suffix composed by line color and fill color indexes) each time a new pair pen/fill is found in the selected objects. This is useful to me to convert line-coloured 3D models (often DXFs) you find around the web and you want them to be coloured by class. Hoping this is useful, here's the code Paolo code: procedure col2class; {this procedure is to convert selected objects to a new class with prefix-indexcolor naming} {a class is created each time a new couple pen/fill is found} var prefix : string; mylist : handle; warn : boolean; tipo : integer; FUNCTION cambia(h:HANDLE):BOOLEAN; label 100; var r,g,b : longint; r1,g1,b1: longint; newclass: string; suffix : string; indice : integer; indice1 : integer; i : integer; BEGIN tipo := getType(h); {the script works only with 2d or 3d objects (650 and 651 selectors, see on-line manual appendix)} if (GetObjectVariableBoolean (h,651) or GetObjectVariableBoolean (h,650)) and (tipo<>11) and (tipo <> 15) then begin GetFillBack(h,r,g,b); GetPenFore(h,r1,g1,b1); RGBToColorIndex(r,g,b,indice); RGBToColorIndex(r1,g1,b1,indice); suffix := concat ('-', indice,'-',indice1); newclass := concat(prefix, suffix); {check if the class newclass already exists} i := 1; while (classlist(i) <> newclass) and (i < classnum) do begin i := i+1; end; if classlist(i) = newclass then {exit from while as soon as you find newclass exists} begin goto 100; sysbeep; end; if i = classnum then {exit from while at the end of classlist (without any newclass found)} begin nameclass(newclass); {attributes of selected object} GetFillBack(h,r,g,b); SetClFillBack(newclass, r,g,b); GetFillFore(h,r,g,b); SetClFillFore(newclass, r,g,b); GetPenBack(h,r,g,b); SetClPenBack(newclass, r,g,b); GetPenFore(h,r,g,b); SetClPenFore(newclass, r,g,b); if not GetObjectVariableBoolean (h,650) then {restricted to 2d obj, LW and LS gives error if the object is a 3D one} begin SetClLW(newclass,GetLW(h)); SetClLS(newclass,GetLS(h)); end; goto 100; end; 100:begin SetClass(h, newclass); {set class attributes} SetClUseGraphic(newclass, true); SetFillColorByClass(h); SetFPatByClass(h); SetLSByClass(h); SetLWByClass(h); SetMarkerByClass(h); SetPenColorByClass(h); end; end else if tipo = 15 then warn := true; END; {function} begin {main} warn := false; {ask prefix} prefix := StrDialog('Digit the class prefix',''); if prefix <> '' then begin ForEachObjectInList(cambia,2,1,myList); if warn then begin sysbeep; alrtDialog(concat('Some of selected objects is invalid. (type ',Num2Str(0,tipo),')')); end; end; end; run(col2class);[/code]


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.