Jump to content

MullinRJ

Member
  • Posts

    2,003
  • Joined

  • Last visited

Everything posted by MullinRJ

  1. Hi Fred, That little annoyance prompted me to start writing Reshaper about two and a half years ago. It took about 10 years for me to get started (I must have a high annoyance threshold) but it was well worth effort. If you use it you will never over-type a data field in the OIP again. It works like you think it should. Select an object, Open Reshaper (best done with a hotkey), Change your data, and hit ENTER. You're back where you left off, in the drawing and able to change tools or continue with the one you have. You also save that extra little mouse click needed to "energize" the OIP to change a value. (Hey, it adds up!) As I said, I started to write Reshaper for that reason, but shortly thereafter the focus of Reshaper changed to enable VW to present all pertinent object data in one window. It is most obvious when editing 3D objects, like the 3D Symbol you mentioned. Not only can you position it in 3D space, but you can also see and set its rotation values, and its Flipped state. For other 3D objects like Extrudes, 3D Polys, Meshes, Solids and PIO's you can also position them in the current view by selecting one of the standard 9 anchor points of its Bounding Box (BBox) and changing its 2D coordinate or use the Next Click option and have it snap to your next mouse click in the drawing. You don't have to worry about which axis is where, it's all about left, right, up and down relative to some point on the BBox, AND it's all in the current view. It could be simpler, but you would have to have someone else do it for you. If you'd like to try an Evaluation Copy of Reshaper 12, please drop me a line at: mullinrj@aol.com. Include the last 6 characters of your VW serial number and I'll send you Reshaper and a Key to enable it for your machine. Or, learn to click in the drawing after you change a parameter in the OIP. You should be able to master that in the next 10 years, I'd think. :-) All the best, Raymond PS - Oh, the offer's still good, even if your name's not Fred.
  2. Hi David, Until editing Rotated Rectangles is possible directly with VW, you can edit them in a rotated fashion with Reshaper 12.5.2. I am offering an evaluation copy of Reshaper 12 to those who would like to have access to editing objects in a more intuitive way. Rotated Rectangles are one of many features that Reshaper 12 provides that work more in accordance with the way we think about the things we draw. There is no magic applied to Rotated Rectangles, aside from extensive analytical geometry. Once a Rectangle is rotated it becomes a Polygon in VW. Reshaper recognizes such Polygons (and Polylines) and treats them like the Rectangles you think you see. Change the length, width and rotation, anchored at any vertex, center of side or object center, directly through your keyboard. You can even use the Next Click option to interactively click the object into position. If you would like to try an evaluation copy of Reshaper 12, please contact me offline at mullinrj@aol.com All the best, Raymond
  3. If you would like to try an evaluation copy of Reshaper 12.5.2, you will find that Arcs can be edited in the ways you desire and possibly quite a few more. Even the units will display as you like them. And like the data fields in the OIP, simple math (with units) can be entered and evaluated with Reshaper. (A quick example: an Arc Radius is 3' 7", you need it 3 cm larger, simply input 3' 7" + 3cm. The correct result will be calculated without you doing a unit conversion.) With Reshaper, you can anchor the standard 9 position bounding box PLUS the Start, Middle and Stop points. Additionally, the Arc Length, Chord Length, Start Angle, Stop Angle, Sweep Angle and Mid Angle can be held constant while editing other other parameters. Some of these edits can be done graphically, but without the exacting precision of being able to specify the values numerically. Reshaper gives you quick and easy access to that precision. There are even more ways to edit an Arc with Reshaper that would be too tedious to explain at this time. If you would like to try an evaluation copy of Reshaper please contact me offline at mullinrj@aol.com All the best, Raymond
  4. pschlie, I have waited many weeks to respond to this and other similar posts. I am offering an evaluation copy of Reshaper 12.5.2 that will display all the information you have outlined, and Reshaper will also let you edit this information when appropriate. The Bounding Box (2D size) requires that your view be orthogonal to the object to be able to change it. Reshaper lets you edit your objects in situ in ANY view you choose. You can anchor any corner point, center of side, or center of the object and specify its relative 2D position in your current view, or specify its position interactively with the Next Click option. 3D rotation values are always displayed and editable as is the 3D center of the object. Likewise, so is the Flipped state. If you would like to try an evaluation copy, please contact me offline at mullinrj@aol.com. All the best, Raymond
  5. Dave, In response to your initial question, my latest version of Reshaper (v12.5.2) displays the data you are looking for. It shows the relative 2D size (Bounding Box) and 2D and 3D position of an Extrude (also, Multiple Extrude, 3D Poly, Mesh, and CSG Solid) in ANY view. You can use the corners, sides and center of the current Bounding Box to anchor, resize and/or relocate these 3D objects. Reshaper also gives you access to 3D Rotation Angles and the Flip State of objects that have these attributes. All fields are editable at all times, except the bounding box which is only editable when viewing the object from an orthogonal position. Reshaper (knows) when you are in such a position and allows Bounding Box edits at such times. If you would like to try an evaluation copy of Reshaper, please contact me offline at mullinrj@aol.com. All the best, Raymond
  6. dcont, I have just finished updating my Reshaper utility to version 12.5.2 and it includes the ability to handle Rotated Rectangles. This is not an approximation using PIOs or any "cheap" tricks. You can take a Rectangle, rotate it with VW or Reshaper, or start with the Rotated Rectangle tool in VW (which creates a polygon) and resize it in any rotated position in length and width. When rotated, it is a Polygon but Reshaper treats it like a Rectangle with a rotation field. There is even a button to convert it back to a Rectangle when the rotation is a multiple of 90?, if so desired. You can spin it or resize it about any corner point, center of side, or center of rectangle, using the standard anchor points. All graphic attributes remain attached at all times, fills, line widths, colors, gradient fills, hatches, names, even attached records. Actually, any Polygon or Polyline with 4 vertices in a rectangular array will be editable as a Rotated Rectangle using Reshaper. Vertex types can be mixed and sides can be hidden - it's still editable. This is only one feature that makes Reshaper an invaluable tool for every day drafting. Reshaper also works with 24 more VW object types. If you contact me offline, I will forward you an evaluation copy. mullinrj@aol.com This evaluation offer is open to anyone. All the best, Raymond
  7. Msg 77777 - Not relevant, though
  8. I may not need to say this, but try it on a duplicate file first. No need to tempt Fate. Raymond
  9. Sorry, can't help you this time. Not enough ROI for me.
  10. How much would you be willing to pay for such a beast? Raymond
  11. VW 10 & 11 also run on my Intel Mac. I'm keeping my G4 in good working order for as long as possible. There are quite a few programs I don't want to let go of just yet, but losing connection with MC files would be a crime. Raymond VW 12.5 / MacMini / OS 10.4.8 MC 2 -> VW 11 / G4 / OS 10.4.8
  12. MullinRJ

    Plagued

    Press the "A" key twice fast, or double-click on the Snap-To-Grid constraint button and the "Set Grid" dialog box will appear. Set the Grid Options the way you like. If Show Grid Lines is on and you zoom way out the blue grid will disappear. They will reappear when you zoom back in. I am not sure what you mean by "accurate polylines", but setting the constraints is key to drawing precisely. It is possible to change constraints as you add vertices to a polyline so memorizing the keyboard shortcuts to the constraints is also very important to being able to draw quickly and with confidence. Write back if you have more questions. HTH, Raymond
  13. Since many things in VW are customizable, why not wish for being able to set the field order of the Data Display Bar? Much worse things have been wished for over the years... Raymond
  14. In Script palette - 32K. In PIO - much, MUCH more. I don't know of a limit. My Reshaper program is over 300K. Raymond
  15. I have Cmd-Opt-1 set to UNLOCK and Cmd-Opt-2 set to LOCK, so I know you can assign those keystrokes in VW. This works on my G4 and MacMini, and I've been doing it since VW10. If you open and close the Workspace Editor without making any changes do you still get the message? If so, there is a conflict in your workspace hidden somewhere. I'd start looking in the EDIT menu and see how you have the Copy command assigned. If it looks normal, then check every other menu looking for a Cmd-C. If you find it, remove it and save your Workspace. Then open it again and start over. One of the neatest thing I like about using Cmd-Opt-1&2 is that they only Unlock and Lock when objects are selected. With nothing selected they still Zoom In & Out x4. A very nice side effect. May it never change. HTH, Raymond VW 12.5.0 DRW/ MacMini / 10.4.8
  16. Here's the same Modern Dialog example as the one posted above with EVERY-UNNECESSARY-THING stripped out, except the comments. Gotta have comments. HTH, Raymond PROCEDURE Minimal3itemDialog; { 23 February 2007 - ?2007 Raymond Mullin. All rights reserved. } { Create a skeletal Modern Dialog with 3 text fields and nothing else. This is bare bones, no frills code. } VAR dlogID, dlogResult :Longint; X, Y, Q :Real; { These variables will hold the answers after the dialog closes. } procedure DialogDriver(var item: Longint; data :Longint); { This routine is called by the Modern Dialog each time your dialog receives an event - type a character, delete or paste text, } { click on or tab into a new field, click on a control. The dialog manager quits when you exit this procedure and ITEM equals 1. } { When this routine exits any other value for ITEM, the dialog manager waits for another event. } Begin case item of 1: begin { OK was pressed, collect all data from dialog and get ready to exit. } X := Str2Num(GetField(21)); { Move first value to X } Y := Str2Num(GetField(22)); { Move second value to Y } Q := Str2Num(GetField(23)); { Move third value to Q } end; 23: SYSBEEP; { Third field - BEEP - Just for grins } end; { case } End; { DialogDriver } BEGIN { *** Section 1 - Create items *** } dlogID := CreateLayout('No Frills Dialog', False, 'OK', ''); { create dialog window and ID } { define 3 TextEdit fields } CreateEditText(dlogID, 21, '', 16); { X } CreateEditText(dlogID, 22, '', 16); { Y } CreateEditText(dlogID, 23, '', 16); { Q } { *** Section 2 - Place items *** } SetFirstLayoutItem(dlogID, 21); { First item - always goes in upper left corner } SetBelowItem(dlogID, 21, 22, 0, 0); { Y - place below X field. } SetBelowItem(dlogID, 22, 23, 0, 0); { Q - place below Y field. } { *** Run the dialog *** } dlogResult := RunLayoutDialog(dlogID, DialogDriver); { *** Harvest the results *** } if (dlogResult = 1) then { 1 means OK button was pressed. } message('X = ', X, ' Y = ', Y, ' Q = ', Q); { display values in the MESSAGE window when program completes. } END; { Minimal3itemDialog } Run (Minimal3itemDialog);
  17. Hi vsd, Ask and you shall receive. This is a "simple" do-nothing dialog that accepts 3 numbers and displays them in a MESSAGE when finished. There is a little error detection employed and all the i's are dotted and the t's crossed. See the next post for a truly minimal approach at doing the very least. I don't recommend living this way, but it does show what makes things tick. Raymond PROCEDURE Sample3itemDialog; { 23 February 2007 - ?2007 Raymond Mullin. All rights reserved. } { Create a Modern Dialog with 3 text fields and a little error checking. } VAR dlogID, dlogResult :Longint; X, Y, Q :Real; { These variables will hold the answers after the dialog closes. } function DefineDialog(DName :String) :Longint; { Define the structure of the dialog and return an ID to reference it. This does not draw the dialog on the screen. } { there are 4 sections for defining a Modern Dialog - Create items, Place items, Align items, & Define Help for items. } Var dlogID :Longint; Begin { *** Section 1 - Create items *** } dlogID := CreateLayout(DName, True, 'OK', 'Cancel'); { create dialog window and ID } { define the labels for the TextEdit fields } CreateStaticText(dlogID, 11, 'X:', 2); { Creates first item, but does not place it in dialog } CreateStaticText(dlogID, 12, 'Y:', 2); { Creates second item ... } CreateStaticText(dlogID, 13, 'Q:', 2); { Creates third item ... } { define the TextEdit fields } CreateEditText(dlogID, 21, '', 16); { X } CreateEditText(dlogID, 22, '', 16); { Y } CreateEditText(dlogID, 23, '', 16); { Q } { *** Section 2 - Place items *** } { Label for TextEdit fields } { First item - always goes in upper left corner. } SetFirstLayoutItem(dlogID, 11); { X: } SetBelowItem(dlogID, 11, 12, 0, 0); { Y: } SetBelowItem(dlogID, 12, 13, 0, 0); { Q: } { Text Edit Fields } SetRightItem(dlogID, 11, 21, 0, 0); { X - place to right of X: label. } SetRightItem(dlogID, 12, 22, 0, 0); { Y - place to right of Y: label. } SetRightItem(dlogID, 13, 23, 0, 0); { Q - place to right of Q: label. } { *** Section 3 - Align items *** } AlignItemEdge(dlogID, 21, 3, 1, 0); { X } AlignItemEdge(dlogID, 22, 3, 1, 0); { Y } AlignItemEdge(dlogID, 23, 3, 1, 0); { Q } { *** Section 4 - Define Help strings *** } { Help strings are not needed - but don't leave home without them. Meaning - always include them. } SetHelpString(0, 'This will display when the cursor is in the dialog window, but not over any dialog item.'); { undocumented, but nice to know } SetHelpString(1, 'Click this button to ACCEPT dialog settings.'); { help string for OK button } SetHelpString(2, 'Click the button, or press ESC key, to CANCEL dialog and do nothing.'); { help string for CANCEL button } SetHelpString(21, 'Help for your first item - X.'); { item specific help strings. Must be less than 256 characters. } SetHelpString(22, 'Help for your second item - Y.'); SetHelpString(23, 'Ignore the noise.'); DefineDialog := dlogID; { return the ID when you exit this routine. } End; { DefineDialog } procedure DialogDriver(var item: Longint; data :Longint); { This routine is called by the Modern Dialog each time your dialog receives an event - type a character, delete or paste text, } { click on or tab into a new field, click on a control. The dialog manager quits when you exit this procedure and ITEM equals 1 or 2. } { When this routine exits any other value for ITEM, the dialog manager waits for another event. } Begin case item of SetupDialogC: begin { Do all setup here. Initialize variables, set controls, etc.} { This item runs ONCE before you get control of the dialog. } SetField(21, Num2StrF(3)); { set initial field value to 3 - fields are always text, even numeric ones. } SetField(22, Num2StrF(2)); { set initial field value to 2.2 - fields are always text, even numeric ones. } SetField(23, 'must be a #'); { set initial field value to Q - fields are always text, even numeric ones. } end; 1: begin { OK was pressed, collect all data from dialog and get ready to exit. } if ValidNumStr(GetField(21), X) then { This line moves first value to X } if ValidNumStr(GetField(22), Y) then { This line moves second value to Y } if ValidNumStr(GetField(23), Q) then { This line moves third value to Q } begin { *** do something here, if needed. *** } end else item := 23 { change item if Q data was wrong. } else item := 22 { change item if Y data was wrong. } else item := 21; { change item if X data was wrong. } if (Item<>1) then SelField(Item); { Return cursor to offending field. } if (Item=23) then SetField(23, 'must be a #'); { reset value to Q. } end; 2: begin end; { Cancel button } 21, 22: begin { First and second field } { Not necessary to do anything here, but you can if you want to. } { This item will execute each time you enter this field, or type or delete a character in this field. } end; 23: SYSBEEP; { Third field - BEEP - Just for grins } end; { case } End; { DialogDriver } BEGIN dlogID := DefineDialog('Dialog Name'); if VerifyLayout(dlogID) then dlogResult := RunLayoutDialog(dlogID, DialogDriver); if (dlogResult = 1) then { 1 means OK button was pressed. } message('X = ', X, ' Y = ', Y, ' Q = ', Q); { display values in the MESSAGE window when program completes. } END; { Sample3itemDialog } Run (Sample3itemDialog);
  18. They are undocumented routines that currently work, but have yet to be added to the VS Function Reference. Perhaps they are not fully tested, so use them with an open mind. The intent of some are quite obvious, while others are more obtuse. As well, the interfaces are not always accurate, but the compiler will usually give you clues as to what it is looking for. Take this call as listed: function CircleCircleIntersec(cenPt1X, cenPt1Y, cenPt1Z : REAL; cenPt2X, cenPt2Y, cenPt2Z : REAL; radius1: REAL; radius2 : REAL; VAR pt1X, pt1Y, pt1Z : REAL; VAR pt2X, pt2Y, pt2Z : REAL) : BOOLEAN; which looks like it could be simplified to: function CircleCircleIntersec(cenPt1X, cenPt1Y, cenPt1Z, cenPt2X, cenPt2Y, cenPt2Z, radius1, radius2 : REAL; VAR pt1X, pt1Y, pt1Z, pt2X, pt2Y, pt2Z : REAL) : BOOLEAN; but, with help from the compiler, really needs to look like: function CircleCircleIntersect(CenterPt1, CenterPt2 : VECTOR; Radius1, Radius2 : REAL; VAR Point1, Point2 : VECTOR) : BOOLEAN; Trial and error is your best teacher. You can also peruse the VCOR Wiki for insight @ http://vcor.net/wiki/index.php/Category:VectorScript Don't forget to add to the Wiki when you discover useful tips. HTH, Raymond
  19. ej, thank you. You've made it look exceptional. The renderings in your gallery - even more so. Christiaan, One thing that did not show up in the picture above are the markers along the green line that correspond to the centers of the displayed fillets. The centers of all possible fillets lie on the green line and the green line gets closer to the red asymptote as the fillet radius increases, but never crosses it. In the file I sent ej the fillet centers were marked with Loci, which obviously did not print/render. I was expecting a screen shot, but I got a work of art. I really should have expected this, considering the source. Thanks again, ej. Raymond
  20. Christiaan, It is because the center of the arc is only on your assumed center line when the radius of the arc is infinite. Notice you started with a line tangential to both circles. That is equivalent to an arc of infinite radius. When the radius is less than infinite, the center point of the arc falls to one side of your assumed center line, namely, it falls to the side of the smaller circle. The path of all possible centers traces an hyperbola and one asymptote is the line you drew. The exception is when both circles are of equal radii, then the expected path of center points is vertical and bisects the line connecting the two closest points on the circles. Plotting the family of possible curves is quite beautiful. Perhaps Islandmon will post a picture if I send him the scratch file I've been using. Raymond
  21. Seriously, think of getting 2GB RAM. 512 MB is like walking around the house with your shoes tied together. Raymond
  22. More information would be more helpful...
  23. Check the locations of the slow vs. fast loading comments here. Maybe you should address your complaints to Homeland Security. :-p
  24. In VW 8, and earlier, the VS editor closes when the Enter key is pressed (OK button default). Not so since then. Could we have that functionality back, please? When I am making late changes to a program I change one thing and then want to close the window and run the program quickly. After all these years, I still occasionally slap the Enter key to close the editor (wishful thinking) and then have to reach for the mouse. Having to mouse over to the OK button and then to the script palette is much slower than pressing the Enter key and then double clicking the script. OK, it's only a fraction of a second slower, but it's still bothersome. In VW 12.5 the VS editor now opens at the bottom of the file. In all previous versions it opened at the top. I rarely make changes at the end of a program, but constants and the like are at the top. Please return the editor to opening script files at the top. Thank you, Raymond Mullin
  25. Did you try: Tools>Utilities>Update Plug-In Objects? Raymond
×
×
  • Create New...