Interface Log Out | Topics | Search
Moderators | Edit Profile

CADVANCE USERS FORUM » CADVANCE Forum » Interface « Previous Next »

  Thread Last Poster Posts Pages Last Post
  Start New Thread        

Author Message
Top of pagePrevious messageNext messageBottom of page Link to this message

Paul Plak
Username: Paul_plak

Registered: 11-2006
Posted From: 81.247.73.237
Posted on Tuesday, December 11, 2007 - 11:33 am:   

Hello,

as a matter of fact, I'm a former cadvance reseller, I started playsing with cadvance V1.4 at the time. But I am basically a town planning engineer, a job I returned to after 11 years as CAD application engineer. I have focused on traffic planning, that's an area with a lot of demand here in Belgium at the moment.

Maybe you don't remember me, I remember you as one of the V7 users.

I stopped coming here on a regular basis, this forum software requires some efforts to keep by, I'd prefer a newsgroup based solution. In the Compuserve days, I used to read the Cadvance forum on a daily base. But I changed jobs, and have a much lower need to exchange about cadvance now.

Here's the picture :
picture of traffic flows, at least I hope it will work, the help isn't that explicit.

For the macro names, they simply are the 4th generation of these macros # 1 and #2.
Top of pagePrevious messageNext messageBottom of page Link to this message

Joe_calvin
Username: Joe_calvin

Registered: 09-2006
Posted From: 74.211.54.41
Posted on Sunday, December 09, 2007 - 07:52 pm:   

Hi Paul,

I stand corrected regarding the history of Kind. I jumped from V7 to V12, so apparently mistook Kind as being new.

For instructions on inserting images, see the "Help/Instructions" link at the bottom of this forum page. I had to ask for help the first time too.

I take it that you're a traffic engineer. Where do you do work, Europe? Your macros sound interesting, but I'm curious about the numeric names, 41, 42?
Top of pagePrevious messageNext messageBottom of page Link to this message

Alexander Medwedew
Username: Alexander_medwedew

Registered: 10-2006
Posted From: 68.167.71.176
Posted on Sunday, December 09, 2007 - 05:53 am:   

Joe has a great application using KIND.

When finding out that KIND attributes were integer only and used by FIT in its own applications, I decided to find another way and developed EZAttributes for Cadvance to allow multiple attributes to be attached to drawing objects and not use dBase files to store attributes.

http://visual-engineering.com/EZAttributes.html

Similar to database attributes, EZAttributes allowed drawings to carry the attribute database with them. Multiple attribute values could be attached to drawing entities without having to battle over the single KIND attribute.

Area widgets solved the problem of line, circle and arc issues in area calculations as well as color fills.

http://visual-engineering.com/AreaFillWidget.html

The CdiSetAppData and CdiGetAppData are used to store the data in these applications. AppData allows multiple applications to co-exist by assigning data with ids. Its drawback is that the data cannot be copied and pasted in the same or to other drawings.
Top of pagePrevious messageNext messageBottom of page Link to this message

Paul Plak
Username: Paul_plak

Registered: 11-2006
Posted From: 81.246.234.191
Posted on Wednesday, December 05, 2007 - 12:51 pm:   

I believe Kind appeared much earlier thean V12, possibly V8 or 1999, as I've been using it nearly ten years. My application is much simpler.

I wanted to have a way to set line thickness of sometimes complex linesets, composed of several line and arc segments joined together (in a way, mimicking acad's polyline capability).

The linesets represent traffic flows in sometimes very complex situations, so the job of selecting the line and arc segments one by one before changing thickness is very painful. One miss, and you can start all over again. Moreover, there are often many situations to represent, like morning traffic, evening traffic, daily total, yearly average, etc. So the job must be done several times.

It is also a burden to have to calculate the line weights respective to one another, as you may have to match traffic values of 1578 cars/hour towards 8, so you need some scale system. After all, there are only 127 line weights, which is quite adequate for a valid diagram.

So I wrote 3 macros.

One is called "setkind" and will edit the kind value for any fiven active selection of lines/arcs/texts into cadvance, for instance for the traffic flow A>B, one for A>C, etc. until F>A (but the system could go further if needed).

The second macro called "traffic41" will edit text values in a standard drawing and change the A-F texts into meaningful street names and directions. Then I save the "base" drawing on which I will do the modelling, mostly at least twice.

The 3rd macro "traffic42" will allow the user to enter in a matrix all the traffic flow values, will calculate the according lineweight and set the lines for all kind values corresponding to directins AB, AC, AD, ... to FA. So I only need to input the actual traffic matrix, I get a perfectly balanced traffic diagram. I can the save the various instances is different drawings, and even mount them into a street pattern diagram using reference files.

As I do not remember how to add a picture here, I can't show you. If you care to explain this to me, I'll add a picture in another reply.
Top of pagePrevious messageNext messageBottom of page Link to this message

Joe_calvin
Username: Joe_calvin

Registered: 09-2006
Posted From: 74.211.56.147
Posted on Friday, November 23, 2007 - 03:36 pm:   

Hi Jeff,

Kind came about in V12. Every object drawn has a value for kind, an integer. By default it's set to zero, but I believe the range is -32768 to +32767. Imagine having 65000 layers that could live along side the 255 normal layers. There additional kind-layers don't have names, and you can't use them to control visibility, but they are a method for dividing objects into categories. The user can not directly set the kind for an object (at least not in V12, optionally in V13). He can see the kind in the object query box, but it's just a number without any meaning. I think Takashi's intent is that FIT and possibly users could use kind as way for the program (or macros) to identify "special" objects. That's what I've been trying to do for the past 18 months or so.

There are three CBL commands in V12 for setting and reading kind. They are cdiEditKind, cdiObjKind, and cdiQueryKind. V13 will add cdiSelectByKind. These commands allow you do say things in macros on the order of "Okay, go select all doors"

The problem with kind that I touched on before is being organized. If you were to create two different special objects with the same kind number, your macros probably wouldn't be able to distinguish a door from a window for example, and it might at some point redraw all of the doors as windows, or other unpredictable results.

When I started working with kinds, I made a list of all the special objects that I'd want to create, and numbered them in a fashion leaving room for growth. Then I've strictly adhered to that scheme. I did make a mistake however. At the time, I didn't know what FIT's in-house intents were for Kind, so I avoided the range of 1 to 1000, and started at 1001. This put my door kind numbers in the range of 1200 to 1519. I guess I was too eager and overlooked them at the time, but there are four constant variables that appear in the SDK. They are: CDI_WALL_KIND=1245, CDI_WALL_CAP_KIND=1246, CDI_WALL_SYMBOL_KIND=1247, and CDI_WALL_TEXTURE_KIND=1248. I have no idea what FIT uses these for, sounds like they may be reserved for a future upgraded wall tool. But, in any case, I will probably have to deal with this conflict someday.
Top of pagePrevious messageNext messageBottom of page Link to this message

Jeff_hayden
Username: Jeff_hayden

Registered: 09-2006
Posted From: 216.62.125.199
Posted on Wednesday, November 21, 2007 - 09:59 am:   

Joe,

Looks pretty slick but a bit overwhelming. I can write basic macros and edit them but I can't fathom how you were able to make those.

What is Kind? I don't really understand what it is and, therefore, don't really understand why it is so great.

I would love to improve the way we do doors and windows. We too have done the manual window thing and are still doing it. I have a window/sidelight macro that I got from someone but it is pretty finicky and only works about 10% of the time. We also have a huge door library- a left and right for each size. I have macros for placing doors in existing openings. The angle of the door is set by two clicks on either side of the opening. The macro sets the angle but I have yet to figure out how to set the scale of the symbol by the two clicks. Some day I hope to figure out a way to have a 1” wide door symbol and if the two clicks are 36” apart then the macro will scale the symbol by 36. As far as placing doors and creating openings, we just use the Edit-Open command. I hope someday an easier way will be standard issue.

Thanks for showing off your macros. Hopefully they are an inspiration to FIT.

Jeff
Top of pagePrevious messageNext messageBottom of page Link to this message

Joe_calvin
Username: Joe_calvin

Registered: 09-2006
Posted From: 8.7.87.222
Posted on Wednesday, November 21, 2007 - 09:57 am:   

This post is a continuation of on the topic of Kind. If you haven’t read the post (possibly below) on Kind and Doors, I recommend it first.

ROOM, DOOR AND WINDOW IDENTIFICATION

We have a series of macros for Naming and Numbering Rooms, Doors and Windows. I doubt these have much to brag about compared to AETools, but I thought I'd show them here as another example of how we've used Kind to our advantage.

Here's an example of placing room tags.
Room Tag
The dialog increments the numbers automatically, but allows the user to override as needed. The macro runs repeatedly until the user clicks the Cancel button. A preview cursor allows for attractive placement the first time, and leaders are an option if the name won't fit within the space on a plan or section. The same interface is available for editing existing room tags and accessible via the Interactive Query and Tool macros as well.

Here's the placement of a door tag.
Door Tag
The dialog is smart enough to pickup on the scheme you use to number doors whether it be letters, whole numbers or decimals. It increments using the scheme and allows you to place as many door tags as you like without returning to the dialog. We typically use our room numbers followed by a decimal .1, .2, .3, etc to number our doors. To quicken this task and eliminate errors, the user can literally suck the number off of room tags for use in door tags. This is very simply done by clicking on a room name rag (to set the numbering from that index) instead of clicking on a door. Remember that all of these objects are groups, but that they have Kind as identification, so that the macro can distinguish them.

Window Tag
Window tags do not increment automatically because we will often use the same tag on two identical windows.

In the case of both window and door tags, the width of the text is carefully balanced with the shape and size of the tag marker "symbol." Again, all of these objects are groups with Kind identifiers rather than Cadvance symbols. They all find their proper layer, respond to the drawing scale, and so on. These tag macros are relatively simple, but they've turned a several hour task into a 20-minute task for our staff.

SCHEDULES

We have a schedule macro that ties all of the above items together. This one really saves a huge amount of time in both schedule creation and checking. Higher end CAD software, particularly BIM products like ArchiCAD and Revit. take care of scheduling for you. Their schedules aren't beautiful in my opinion, but they're basically done for free. That was my original hope in creating this macro. In the end however, it doesn't "finish the job," but it does provide a really good start.

When run, the schedule macro looks at groups in the active drawing and looks close at their Kind properties. It's studying the room, door and window tags as well as the actual doors themselves. If you're working on a multiple story building where the plans are in more than one drawing file, it's a good idea to paste one into the other (temporarily) before running this macro.
Sched Choice
Once the macro finds all of the groups of the specific kinds (which is only a second or so) it displays a small dialog box asking if you want to create a Room Finish Schedule, A Door Schedule, a Window Schedule, or any combination. It then gives rectangular cursor previews and lets you place them where you like in the drawing. If creates these schedules to readable scale in paper-space. Although it looks at the drawing objects carefully, the schedules themselves created by the macro are simply dumb text and line work. In other words, this macro is sophisticated on the creation side, but has no editing abilities.
Room Sched
As far as the finishes content is concerned on the Room Schedule, this information is blank with only manually editable pieces of "blank" text put in place. However, the task of listing all the rooms by number and name is automatic. The macro will inform you if any room numbers are accidentally duplicated on your plans (allowing for room numbers for stairs and elevators and open-to-below and the like to be duplicated as is often the case). The macro will also take some liberties with the room names on the drawings, such as un-abreviating the text. For example "W RR" in a room tag gets translated to "Women's Restroom" (in fact "W" would be enough), "Jan" becomes "Janitor", "Off" to "Office" and many others.
Door Sched
The door schedule turns out a little more complete. The macro is able to associate the complex door objects created by the door macro with their associated door tags on a 1 to 1 basis. It there are duplicates or if there is a miss-match between the number of doors and tags, the macro will let you know and give you the choice of continuing or stopping. The macro not only indicates the door number and associated room name, but also lists the door's type, size, material, frame, and glazing options. In the case of hollow mental door frames, the macro calculates a throat dimension. Each unique door is given a elevation reference letter, and the elevations are drawn below the schedule. Doors that are not unique reference elevations as duplicates of course. The door elevations are formated to plot at 1/4" scale regardless of the scale of your "source" drawing. The elevations are complete down to glass reflection and swing. I intend for future versions of the macro to dimension the elevations. Hardware is not automatically scheduled, but the appropriate blank grid and headings are created. I'm a believer is scheduling hardware on architectural drawings, rather than doing hardware sets - that's the suppliers prerogative. The hierarchical column headings in the hardware section of the schedule are derived from an easily edited text file in the Cadvance folder.
Window Sched
The Window schedule is fairly dumb. It simply lists the windows and their quantity. I haven't trained it to read window sizes yet, although it would be possible. The quantity is shown off the schedule to the left for checking purposes, my opinion being that architects should not be responsible for quantities in construction drawings. Our staff wants me to have the macros elevate the windows, which is a possibility in the future if we continue with Cadvance.

If you've gotten this far, then thanks for reading! Please make comments or questions. I hope that this demonstration of some of our macros has been an interesting illustration of the power of Kind and of the potential power of a thoughtful and deep interface.
Top of pagePrevious messageNext messageBottom of page Link to this message

Joe_calvin
Username: Joe_calvin

Registered: 09-2006
Posted From: 8.7.87.222
Posted on Wednesday, November 21, 2007 - 08:19 am:   

KIND

In the past, I've posted descriptions and images of some of our macros that I felt were "universal." Macros that would augment the Cadvance user interface for everyone. These include Interactive Query and the Tool. We've also created a lot of other less universal macros specific to architecture or even more specific to our office standards. I'd like to show some of them off in this and maybe a couple more posts. My goal is as always, to promote improved interface in Cadvance. It also might help stimulate the forum which has gotten pretty quiet lately.

When Cadvance 12 came out it added Kind as a property that could be set and read for any drawing object. In my opinion, this is the single greatest improvement to Cadvance since V5, with scroll wheel support as a runner up. Kind is not a feature for every individual drafter to use directly. Kind allows macros to create complex objects that are identifiable by giving them a integer based ID number. This requires some planning on the part of the macro programmer - a organized list so that macros don't compete over an accidentally duplicated Kind integer.

Here are some features that macros can have through the use of Kind.
1 - A complex drawing object created by a macro can be later identified by that macro for re-creation or editing purposes. I've found that these complex objects are typically either groups or linesets (now that linesets can halve thousands of segments).
2 - A "master interface" macro such as Interactive Query or the Tool can identify selected macro-generated complex objects and pass off editing responsibilities to subsidiary routines or macros accordingly. In other words, a single tool bar button or keyboard command can be used to trigger contextual editing of a broad variety of complex objects.
3 - Similarly, dividing creation and editing responsibilities for a single complex object type among several different macros, make those macros easier to debug and upgrade and makes the "Procedure too large" error easier to avoid without sacrificing a polished finish.
4 - Variations on a single type of complex object can be created by and then later distinguished by a single macro. This can help establish parametric-style flexibility.
5 - Allowing room for growth and evolution, a macro would be able to distinguish "versions" of complex objects, allowing for more dynamic and freedom of macro upgrading. In other words if you had a macro create a complex object called "thing," you could go on to create "thing 2" and "thing 3" years later as completely different and improved versions while maintaining forward compatibility with the original "thing."

Okay let's get onto an example...

DOORS AND WINDOWS

Prior to V12 we had a huge library of door symbols on our server. A different symbol for each hand, material and size of door - and variations as needed for various drawing scales and wall conditions that the doors might go into. And, though I hate to admit it, we draw windows completely manually until 2005. In short, it was a mess. With V12's Kind parameter, we've made door specification, placement and editing many times easier, more flexible, and more informative.

I don't know much about AETools Kevin and Takashi, sorry to say, but I hope you're using Kind to update the abilities of doors. I don't know how my macro might compare to AETools, but at the risk of foolishness in this regard, I'll continue.

The best way to describe our experience with doors and windows is to show some screen shots, but let me describe a few parameters first. Doors for us are groups, which have a Kind value between 1200 and 1519. Subtracting 1200 and looking at the binary bits in the resulting number identifies the door type, it's material, it's frame, and it's glazing options. The Kind for the first couple objects nested within the group identifies the door's width and height. End users don't have to interact with these Kinds directly, but they are of constant use via macros.

Here are the steps to placing a door.
1 - Click the toolbar icon.
Init Dialog
2 - Make menu selections (from left to right) in the "Specify a Door" dialog box. This dialog box remembers selections from one use to the next, so typically only minor adjustments are required. Click the "Open" (to break a wall) or alternately the "Place" button to dismiss the box.
Text Cursor
3 - Following the text cursor prompts, click on a "Hinge Point" and the "Push Side of Wall." These instructions and points vary a little by name depending on the door type. This is an example of a single hinged door.
Offset Dist
If you have snap turned off while placing the hinge point, a tiny dialog will help you offset the door from nearest corner making a suggestion for distance. This suggested distance is derived from the wall thickness the macro measured. Different offsets are suggested for walls that appear to be wood, hollow metal studs, or concrete block for example.
Finished Door
That's it! Your door is drawn. Alternately, you can have the Tool macro alternately run, but we'll discuss that more in a little bit.

A few things to point out at this point. The above process is simpler and more intuitive than placing a door symbol via the Alter/Open Segment command. First, there aren't a myriad of symbol files to dig through. Second, "layer", "scale", "line (spacing)" and "justification" are all handled automatically without any input from the user. Third, special doors of unique sizes or conditions can be "made up" on-the-fly without having previously created symbol files. And fourth, accurate placement is easily achieved as shown above without the two-values required Ctrl-F2 Offset command.

The doors made by the macro are also more contextually sensitive. For example, the jambs for wood and hollow metal doors match the thickness of the wall (except for HM in a masonry opening of 8" deep or more). They are also sensitive to drawing scale, selecting colors (weights) and lifestyles appropriate for scales ranging from smaller than 1/16" to larger than 1/2". We've also started showing an indication of glazing options on the larger scale plans. Lastly, the doors are sensitive to the active layer. Although they are automatically places on a predetermined sub-set of layers - "door" layers, they look carefully at the active layer to discern if the door is "new". "existing" or "to be demolished" varying the graphics of the color, weight and linestyle accordingly. These contextual variations allow us to replace many many redundant symbols with a single complex object.

The macro draws a few other objects separate from the door group itself. It draws a header on our reflected ceiling plan layers (even if the layers are off) and a floor finish transition line on a floor finish layer. My philosophy is that this floor finish transition is easier to erase later than to have someone draw them manually. These additional objects also get updated as the door changes over time as described below.

Doors crated by our macro are not static. If you select one and rerun the macro, it will allow you to make changes via the same dialog box interface.
Edit Box
You can change the materials and even the size of the door. Any adjustments to wall the wall opening are handled automatically. The Kind parameter of the group helps the macro to 1) verify that it is being passed a door, and 2) load the existing door type, material, frame, glazing and size options into the dialog as a starting point for adjustments.

Other macros also identify and work with doors.
Interactive Query
The Interactive Query macro displays information about a selected door rather than simply identifying it as a "dumb group." It also gives an "Edit" button that runs the door macro allowing adjustments as shown above.

The Tool macro really adds great dimension to door editing, which is why running it automatically is a option when placing new doors. The Tool, in case you're not familiar with it, is a "universal" macro for editing object by manipulating handles and on-screen numerical data as a kind of heads-up-display, an alternative to Cadvance's built-in editing commands. It identifies all sorts of objects and specifically distinguishes doors from other groups. The Tool displays it's interface elements as temporary cursor definitions.

Here is an image of the interface that the tool displays for doors.
Tool
Starting with the button pallet to the right, these controls allow the user to easily change the doors layer, flip it from left hand to right hand, reverse it's direction through the wall, change it's size (again wall openings follow automatically), change the door and frame materials, and a check box for displaying required accessibility clearances per the 2006 ICC/ANSI A117.1 code. These wheelchair clearances are very flexible. You can click on the directional arrows to toggle though multiple approach vectors per side, you can indicate if the door has hardware that may affect the clearances, and lastly, you can "stamp" the clearances complete with dimensions into the drawing for documentation to the Building Department using your current layer, color, linestyle and text parameters. The Tool presents the interface (because that's what it's good at), but the actual changes to the door are accomplished by the door macro. Working in concert, these macros allow a user to non-destructively and quickly explore door variations and code compliance at the same time.

Although this example showed only a simple single-hinged door, the macro also creates and recognizes paired, bi-fold, bi-pass, pocket and overhead doors. I haven't talked about windows either. They are accessed from a button off of the main door dialog. Here's a glimpse.
Window

Thanks for reading - more to come soon.
Top of pagePrevious messageNext messageBottom of page Link to this message

Ken_etter
Username: Ken_etter

Registered: 08-2006
Posted From: 205.196.151.98
Posted on Wednesday, November 21, 2007 - 02:59 am:   

Joe,

Looks very cool. But the images are missing.

Ken
Top of pagePrevious messageNext messageBottom of page Link to this message

Joe_calvin
Username: Joe_calvin

Registered: 09-2006
Posted From: 8.7.87.222
Posted on Friday, November 24, 2006 - 11:37 am:   

Hello again,

As promised a couple of weeks ago, here is a description of the various materials that can be drawn with the Linear Materials Macro. I have taken screen shots and tried to have at least one instance of each material selected so that you can see the associated contextual options.

PLYWOOD
Here are some images of plywood at various scales although all 5/8" thick. The two nearly horizontal and vertical pieces demonstrate the low-slope skewing as described in the previous posting.
01 - plywood

GYPSUM BOARD
When selected, gyp bd has special buttons for adding more layers, j-mold and corner beads. When you click these buttons, they ask you which side or which end you want the pieces added. Notice the moldings near the cursor in the image below. Their detail and graphic offset from the surface varies appropriately depending on scale.
02 - gyp bd

RIGID INSULATION
When selecting the thicknesses of all insulations, the drop down menu shows all common thicknesses as well as their R-values. You can easily add stucco (or rather EIFS) to rigid insulation - see below.
03 - rigid insul

BATT INSULATION
Even though you are presented with a menu, you can make up your own thicknesses as shown below. Batt insulation scales well for both small scale plans and large scale details as shown on the first posting a couple weeks ago.
04 - batt insul

STUCCO
The 1/8" stucco coating shown below is drawn at a very large scale shoing stippling within the thickness. More appropreate graphics are drawn for smaller scales and of course you can make the stucco thicker for "real" hard-coat applications.
05 - stucco

POLYISOCYANURATE, RECOVERY BOARD AND TAPERED INSULAION
More roofing products. Keep in mind that these can all be "added" to each other. Again, the graphics vary depending on plot scale. The macro does not go as far as to draw membrane roofing.
06 - polyiso

STEEL BAR JOISTS
Below are two selected examples of bar joists. You can draw joists either from their bearing points "up" as shown on the left, or from the top of the top chord "down" as shown on the right (notice handle locations). As a result, you can not draw bar joists upside-down. The left joist is drawn at a larger scale than the right one and is therefore more detailed. Keep in mind that you can "refresh" materials if you change scale. When you first draw joists, a depth is recommended based on the span - I guess I should disclaim that this is NOT engineering, it's just straight out of "Studio Companion," a starting point if you will. The joists below are not the recommended depth for demonstration sake. When selected the macro tells you the span, slope and depth to span ratio of the joists. You can also use buttons to automatically add various decking materials.
07 - joist

STRUCTURAL AND CORRUGATED METAL DECKING
When drawn level, the macro gives you the option of adding concrete topping (a grey fill with heavy line on top). On slopes, the macro gives you the option of adding various roofing products. At small scales, the heavy line of the deck offsets from surrounding materials for graphic printing purposes.
08 - deck

MASONRY
The macro draws various masonry products including CMU, brick and stone veneer. The wall CMU wall surfaces are drawn with lines in the usual way. The linear material in this case is the texture in between. Using the macro has several advantages over area textures (like we used before). These advantages include auto-scaling, refreshing on scale changes, and perfect alignment from one application to another. Unlike sectional materials such as roof deck (that now which way you are going with rigid insulation), the macro asks you to pick a side when you add brick or stone to a CMU wall. At scales 1/4" and larger, the brick is drawn with a cavity. The roughness of stone is automatic, and you are given the opportunity to "profile" the outer edge with a heavier line as shown below right. For the veneers, you are given the options of "adding length." Adding length makes it easy for materials to turn corners, offset window trim, etc.
09 - masonry
In the future I plan on having the macro draw more detailed CMU for large scales with open cells, grout joints, button for adding bond beams, etc., but that's the future.

METAL STUDS
The image below shows studs at various scales. The enlargement on the right shows fully drawn thickness (scaled up here) for very large scales. The zig-zag is for small scales. This is maybe a good time to mention that I have updated the Interactive Query macro with a "unglue sections" button allowing you to edit the individual studs.
10 - studs

GRAVEL AND SAND
These materials are intended to draw below-slab conditions in section (based on soils report recommendations of course). Gravel and sand are drawn in appropriate detail for the scale of your drawings. At very small scales, two different shades of grey rectangles are drawn instead. The vapor barrier shown is just a simple line.
11 - gravel

STEEL HAND RAILS
Almost as fun to draw as bar joists, you can draw railings in either plan or elevation based on the "thickness" you give. Less than 1'-0" results in a plan view, more results in elevation. Eventually I plan of the macro drawing fully detailed guard rails if you enter 42" or more, but that part is not done yet. In elevation you can simply pick the top and bottom noses of a stair fro the start and end points. 12" rail extensions are automatic, but there are buttons that allow you add "horizontal" distance to (say one tread length to the lower end). This is easier than it sounds. Railings are drawn on a sliding basis at varying degrees of detail depending on drawing scale. Wall supports are added or taken away (max 6'-0" span) as you change the length of a railing.
12 - railing

In any cases above, the materials drawn may not be perfect. That's typically okay because you can easily edit them (being just standard linesets). However, manually edited linesets can revert to pre-edited state if you use the refresh all button. At the request of a co-worker, I have added a warning dialog to the refresh all button.

To those of you who have requested a copy, I will send it to you soon. I first need to document some areas of the code that set layer and color, for you to edit if you like. Also, this macro runs only in V12.

Again, thanks for reading.
Top of pagePrevious messageNext messageBottom of page Link to this message

Admin F I T
Username: Furukawa

Registered: 08-2006
Posted From: 68.164.66.193
Posted on Monday, November 13, 2006 - 03:32 pm:   

Joe,
Thank you for your another great contributions.
Top of pagePrevious messageNext messageBottom of page Link to this message

Joe_calvin
Username: Joe_calvin

Registered: 09-2006
Posted From: 8.7.87.222
Posted on Saturday, November 11, 2006 - 11:57 am:   

LINEAR MATERIALS

This posting is a demonstration of a new macro we've developed called "Linear Materials." Most of the macros I've written over the years and shown-off a bit in the previous iteration of this forum are purely about interface. These included "Interactive Query", "The Tool" and "The Eraser". Linear Materials is also about interface. You might say that it gives an interface to line textures. But unlike the other macros listed above, Linear Materials also delivers content. It does a lot of actual drawing as well as providing what I hope is a user-friedly editing interface. It is this difference, the content, that I think has made it quite well received by our staff. I think they looked at the other macros listed above (of which I was quite proud of for their interface design) and said to themselves "well fine, this is how Cadvance should work; useful, but boring." I think that this one by contrast gives them a more tangible feeling of increased productivity.

Okay, here's what Linear Materials actually is. It is a macro that allows quick and easy drawing and editing of graphic materials that can be very simply described by a single line segment. At first glance this makes it similar to line textures, you draw a line, and Cadvance (or in this case the macro) follows up with more detail. However Linear Materials vary from line textures in many important ways. These differences will become apparent in the rest of this posting as I describe how to use the macro.

First however, I will point out one technical difference that may not be readily visible. That is, instead of symbols, or broken line segments, each linear material created and edited by this macro is a single lineset. As such, they are not dependent on any external files, import and export without trouble, and are easy to edit with Cadvance's built-in editing tools such as trim and stretch. Files containing linear materials can be opened, printed, and edited by users who don't have the macro. The downsides of using a single lineset to store the complex graphics are: a single linear material can be only one color and on only one layer at a time, and there is a limit (around 2000 segments (including invisible segments)) to the complexity. The macro works hard to overcome these limitations, particularly in terms of complexity.

CREATING A NEW LINEAR MATERIAL

Creating a new linear material is quite easy. Start by running the macro. We've created a toolbar icon for it. The macro begins by presenting a menu of materials as shown below. Because linear materials are drawn according to an algorithm instead of by "stamping," this list if fairly static. In other words, the user can't easily add a material without first adding the supporting CBL code. We think that this list is a good start, but may expand it in the future. Easy expandability is a limitation, but the dynamics of the code-driven graphics more than make up for this. The example that follows is based on the selection of "gypsum board" from this menu.
1-MtrlList

The second step is to draw a line by clicking two points, and then picking a side of the line to offset toward. As shown below, the macro gives simple cursor feedback in selecting these three points. The option of choosing which side of the line to offset from is more intuitive than having the user draw in one predetermined direction like Cadvance's built-in line-texture command requires.
2-GetPoints

The last step in creating a Linear Material is to complete the following small dialog box. This box varies slightly depending on the material, but general consists of two options. The first is layer. The macro tries to pre-determine the layer on a material by material basis (based on code that can be easily edited), but it will remember the layer selected from one use to the next. Second, the box asks for the thickness (or "depth") of the material. You can type any thickness you want, or select from the list of standard thicknesses on the pull-down menu. The thickness menu varies depending on material and provides additional information such as R-values and "recommended" thicknesses based on length.
3-LayerThick

The macro quickly draws the material as specified and quits. The same algorithm draws difference thicknesses of the same material as illustrated for the gyp board below. Given this fact, you can start to see that the one linear material can easily replace all the variations of symbol and line-texture definitions that you may have in your library for different material thicknesses. Also as can be seen in the case of this gyp board below, the random number generator, seeded by the clock, allows identical lengths and thicknesses to vary slightly in appearance eliminating the stamped "CADed" look.
4-VaryThick

The dynamics of the code-based graphics does not end with variation in thickness. Linear Materials are also aware of length, angle and most importantly drawing scale. The four pieces of 1" thick gyp board draw below are the same in every respect, but were drawn at four different scales (based on Option/Unit settings). Furthermore, linear materials can be moved from one scale to another and "refreshed" to reflect the scale change. There is even an option to "refresh all" of the Linear Materials in a file all at once if there has been a scale change.
5-VaryScale
Notice that in addition to the number and scale of the little tick marks in the gyp board shown above, the minimum distance between the ticks and the outside edge of the board also varies by scale. These variations are all carefully optimized for best printed appearance. Also, as you go to smaller scales, the reduced complexity helps with performance on wider-scping drawings. As another example of variation by scale, see the batt insulation shown below. This is the same insulation in a 6" wall "refreshed" at the three different scales shown. The spacing, tightness, number of points, and graphic offset from the wall lines are all carefully coordinated for printing and performance. (BTW - batt insulation is one continuous bezier curve.) Again, I hope you can see how the one linear material can replace a number of different line texture variations while improving and standardizing printed output.
6-VaryScale2

Okay, let's talk about edit-ability. An existing materials can be easily edited by simply selecting it and then running the macro. The macro will notice the selected material and will add end-point handles and a floating pallet of buttons as shown below. You can very simply click on and move the handles causing the material to be redrawn accordingly. The "refresh" button and refresh "all" button work as described above. You can click on the thickness button to type in a different thickness. The "break" button allows you to click two points long the material to make a clean hole though, complete with end-caps, etc. At the bottom of the pallet there may be depending on material, a variety of "add" buttons. These "add" buttons allow you to very easily add related materials and graphics.
7-Selected

As stated above, linear materials (completely unlike line-textures) are aware of their angle as well as thickness and scale. I bring this up after discussing editing, because this angle awareness is easier to see when editing a material by moving its end handles. Some materials such as bar joists and hand-rails are highly reactive to angle, but nearly all materials respond to very slight angles (that is slightly off vertical or horizontal) by skewing their graphics rather than strictly rotating them. You can see this in the rigid insulation below.
8-angle
This "skewing" may seem like a cheat at first, but if you think about it for a while, I think you can realize the instances in which this can be a great time-saving advantage. For one these instances, see the image below. All graphics shown, from the bar joist on up to the tapered insulation are drawn by the macro, and as you can see, they stack up perfectly vertical despite their slight slope. The tapered insulation is still selected.
9-RoofStack
In addition to the angle awareness issue, the above roof section drawing is also an excellent example of the power of the "add" buttons. This whole section took only three points specified by the user. Once the joist was drawn, the other materials were "added" by clicking appropriate buttons without requiring to the user to supply points. In other words, the original end points and direction were passed on (and offset) from the lower materials to the upper ones. The dimensions of the tapered insulation as an example were automatically calculated by the "add" button to provide appropriate counter-slope.

I'll make another post in a few days to describe the other materials in more detail, but in the meantime, please feel free to contact me if you are interested in this macro. I hope other users can find it as useful as we have. Thanks for reading.

Add Your Message Here
Post:
Bold text Italics Underline Create a hyperlink Insert a clipart image

Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Password:
Options: Enable HTML code in message
Automatically activate URLs in message
Action:

Topics | Last Day | Last Week | Tree View | Search | Help/Instructions | Program Credits Administration