Xrev API Tools: Increase Productivity!



Sunday, October 04, 2015

DNS Unlocker malware on Android Phone

This took me months to get rid of, and to find something of use on the internet. Searching "DNS Unlocker Malware" would just find posts to remove it from desktop machines.  As such I thought I'd post what finally worked for me.

Obviously at some point I acquired the DNS Unlocker malware on my PC which re-directs links and feeds unwanted spam Advertisements to the browser.  I used one of the numerous tools to remove it: http://malwaretips.com/blogs/ads-by-dns-unlocker-removal/

This managed to get rid of it on my PC.  A few days later I started noticing my phone was getting similar ads showing up.  I ran just about every Adware/Malware/Virus scanner for android to try and remove it, but none of them would detect any issues.  I found I got some reprieve by clearing the data on chrome:

Settings-->Apps-->Chrome-->Storage-->Clear Data

But that on its own was not enough to eliminate it.  Then finally it clicked, the tool had managed to infect my Chrome profile.  So as soon as I logged back in it would sync the malware straight back to my Phone.

The Solution:
On ALL your devices, that use your Chrome Profile - Reset/clear data.

Settings-->Apps-->Chrome-->Storage-->Clear Data

Advanced Settings-->Reset Settings

After this I was finally able to click a web page on my phone without getting a redirected Ad!

I hope this helps someone else!

Wednesday, September 09, 2015

Revit Railings - Long Standing Issues

I'm sure I'm not the only one he gets frustrated by the Railing tools in Revit.  I thought I'd put together this post to point out the type of day to day frustrations they cause and what I'd like to see implemented to solve the problem.

Extensions and Terminations

Here it can be seen a 180° railing termination and a standard 300mm extension.
As you can see, dimensionally its accurate.
But look at the Length I had to give to achieve this?
As you can see that dimension doesn't seem to correlate to anything?
  • I've checked the Termination family and its origin is set as the Centre Left/Right Reference Plane which is located exactly where the 300mm dimension is, and the Extension Length is set to 0, as I don't want it to be subtracted from the Extension Length.  IE: It should be 300mm and then the return.
  • If I switch the Extension style to Floor and ditch the termination, I see it correctly ends exactly at 300mm with an extension length of 300mm.  Although it stops exactly 163.424mm short of the floor...  NOTE: That just happens to be exactly how far extra I had to offset the Extension Length by.  But where is this value coming from?
  • Similarly if I switch the Extension style to Post, its still 163.424mm short of the end of the Railing sketch.  Anyone have any ideas where this number is coming from?
Another issue with Terminations is the fact that they do not display in linework in Plan.  It seems they are there when you hover over them, but they never show the edges.  If this is because of some standard elsewhere in the world, that's fine, but don't hard code it this way, make terminations a sub-category that we can control visibility of separately.  Unfortunately, there is absolutely no smart workaround to fix this.  Even masking regions and linework in the termination family don't show through...

Baluster Placement

Oh how I wish for Instance parameters!
  1. For Posts we can set "Space" adjustments for Start, Corner & End Posts.  But lets say I want my posts to be spaced Equally.  In this example, 2000mm spacing.  I set my Main Pattern "Dist. from previous" value to 2000mm.  Rarely do I want to have a post exactly where by Railing starts/finishes when hosted on a Ramp or Stair.  There is always a change in level meaning I need to offset to allow the base plate to fit.  In this case I've sent a start spacing of 100mm.  But as you can see my first and second balusters are now 1900mm, and this space is not factored in by the rule...
  2. Similarly, if we have a space, either mid rails and bottom rails should automatically stop at the first and last baluster, or rails should also have "Space" parameters to allow us to make them stop short in these circumstances:
  3. Railings need instance parameters, so we can override Baluster placement.  Sure we can make excessively long baluster placement rules that individually set out each baluster, but what a waste of time and we end up with potentially hundreds of Railing types in our project becoming a management nightmare!  Why doesn't it work more like Curtain Wall Grids and Supports, where we can define a rule, but at the instance level unpin them and position them exactly where we want them, and even add extra ones if required.
  4. Why not have placement controls for Stair Posts such as "Centre on the first and last Tread of each run" with maximum spacings for intermediate Posts, that also default to centred on the Tread.  WE DON'T PLACE POSTS ON THE NOSING!
  5. Corner Balusters, sometimes use base plates or brackets/supports.  Because we have no control over their orientation we end up having to make 4 different versions for the different corner styles.  We also have no connection to the angle of the corner.

Baluster Properties

  1. Give us access to the instance parameters!  We have instance parameters available for Top Cut Angle, Slope Angle, Bottom Cut Angle & Height.  However we can't drive other instance parameters from these as they don't get updated!  For example, in a particular modular baluster, it has brackets to hold the rails.  The bracket type varies depending on whether the Rail is flat or sloped.  Now if instance parameters worked I could use an IF statement to ensure the appropriate bracket is visible.
  2. Visibility parameters seem to have weird glitches.  EG: If you turn off parts of the balusters, some times they still display in section and elevation, but not in 3D.
  3. Corner Balusters should have their own special type with extra parameters to be able to use the angle of the corner in formulas.
  4. Instance based Width parameters for Panels!  This way we can create proper Glass Patch fitting style Railings without workarounds...

Railing Properties

  1. Landing Height Adjustment options are needed on Top Rails and Hand Rails.  If you have a bottom Rail, you don't want its height to be adjusted as well!
  2. Why is it we can't have a Hand Rail on its own! Its the only rail type that allows us to have supports and adjust their positions per instance...
  3. Offsetting Rails from the edge of Stairs upsets transitions in slope. 
AUTODESK WE ARE TIRED OF WORKAROUNDS!  These issues have existed for many many years now...  Please help us!

Tuesday, April 14, 2015

Revit 2016 What's New? - A Commentary

So if you're trawling the web you will see Autodesk have officially updated their Revit product page to refer to 2016.

So what's new?  2016 is a tricky one, as Autodesk released a Point release of Revit 2015 in R2, which included a lot of new features back in September last year.  So to truly look at the full set of 12 months of feature development we should probably incorporate those.

All in all 2016, in my opinion, represents a lot of handy minor improvements, but no real game changers have been made directly in Revit.  Instead the game changers have been left for the partner tools such as:
  • Dynamo - Visual Programming tool that plugs into many different pieces of software allowing them to work together bi-directionally.
  • A360 Collaboration for Revit - Revit in the cloud for dispersed teams to work on the same project.
  • Project Solon - Explore a building's energy performance
  • Site Designer - Subscription based Site Tools (still limited by the capabilities of Revit's existing site modelling tools, and a horrible tool to use)

Core Functionality - New Features

  1. Navigation during redraw
    A new feature that allows for continuous navigation in views while the view is redrawing. You can pan, zoom, and orbit in views before the view is fully redrawn, saving time and providing workflow efficiencies.  The feature can be enabled by going to the Revit application menu>Options>Graphics and enabling the check box named "Allow navigation during redraw".
    This is very useful on a large model, when you quickly want to get to specific portion of the model, you don’t have to constantly wait for Revit to redraw the view with every modification you make.  Provided of course that enough of the model has been redrawn that you can find your way around…  When changing this setting you do need to close/reopen any models you already had open in order for it to take effect.
  2. Reveal constraints mode
    Extremely useful, Reveal Constraints is a temporary display mode that highlights all constraints in a view, enabling you to quickly identify and remove any erroneous constraints.  The mode only shows explicit, user-created constraints.  The mode will display constraints within a sketch contained in the view.  It can be used in both 2D and 3D views & the Family Editor.  There is no need to select an object to see the constraint. 
    In the future, I’d like to see this also include Revit’s manually implied constraints so they can be broken when needed.  For instance, when you draw a sketch in a family, and the lines move with nearby Reference Planes, requiring you to put a whole bunch of dimensional constraints on the lines to stop them moving…
  3. Linked IFC Referencing Enhancements
    Linked IFC elements support dimensioning, snapping, alignment and hosting of face-based families.  This is a great improvement.  The more that we can use IFC natively in Revit the better!
  4. Ability to Show the Status of Revit Links in Closed Worksets
    Handy addition that makes it that much simpler to figure out why a link isn’t visible.  If a Revit link is in a workset that is closed, its status in the Mange Links dialog will change to “In a Closed Workset”.
  5. New Pin - Unpin Icon for Items Driven by Their Host System
    This is a subtle enhancement, which makes delineation between elements that are pinned directly and those that are pinned as result of their host system like:
    - Components in Curtain System (Curtain Grid, Mullion, Curtain Panel)
    - Components in Railing (Top Rail, Handrail, Support)
    - Components in Truss (Brace, Analytical Brace)
    - Components in Beam System (Beam, Analitycal Beam)
  6. Shaft Opening Enhancements
    The Shaft Opening default Base Constraint will now default its extents based on the level/view you initiated the command in.
    If you’re now in a floor/ceiling plan view, click Shaft Opening command, the default Base Constraint will be current level.
    If you’re now in a section/elevation view, click Shaft Opening command, select a plan view in Go To View dialog, click Open View, the default Base Constraint will be the selected level.
  7. Remember Current "Thin Lines" Setting
    Pretty straight forward, this option is now Application level and is remembered between sessions.
    The thin lines setting is stored in the Revit.ini file under the [Graphics] group as "ThinLinesEnabled=1". When the user launches Revit, the thin lines setting will use the setting stored in Revit.ini.
    The Revit.ini file is located in \%APPDATA%\Autodesk\Revit\Autodesk Revit 201x\.
  8. Remember Current Snap Settings 
    In Manage>Additional Settings>Snaps, changes to the default snaps is now remembered between sessions in the ini file.
  9. Search in Combo Box (Type Selector)
    In the majority of Combo Boxes, you can now click and type text to have the list autofiltered to quickly find what you are looking for.  This is a great feature for long lists like the Type Selector.
  10. Remove Repeater 
    If you’ve ever used the repeater functionality, to later find you want to individually customise the pattern to make it more random, this feature has been sorely missed.  This enables the removal of the underlying repeater element, leaving the adaptive components in place. Further modifications to the surface or lines where used to define the repeater will now not effect the components by adding or removing components.
  11. Background Color Enhancements
    This feature allows you to set the background color to any desired color, not just white and black.  For those with eye problems, this will be a very welcome addition!
  12. Link Positioning Enhancements 
    Origin-to-Origin is now the default positioning setting for RVT and CAD links.  The last used positioning setting is stored for the active session – as has always been the case.  Personally I find most consultant models I receive the origin is not setup the same as in my template, so I tend to use “Manually Centre to Centre” and then once placed temporarily move to the appropriate position or I use shared coordinates.  As such I see little benefit to this minor tweak.  But if you do work closely with consultants and your template positioning is centred on Revit’s internal 0,0,0 this could make life easier!
  13. Select Host for Tags
    When you have lots of tags in a view, and things move around, it can become difficult to work out what tag belongs to what element.  Which means users can inadvertently edit the wrong tag…  This feature makes life easier.  When a tag is selected, there is a new contextual button on the ribbon: Select Host.
    Use Select Host to change selection from the tag to the host element of the tag.
    The command is also available from the right-click menu and can have an assigned keyboard shortcut.
  14. Usability Improvements Dimension Text Usability Improvements - Automatically activates the text box to type in new text when you click the “Replace With Text” option button.

    Preset Instance Parameters for Stair Tread Number – Personally I’d like them to add “Type Parameters” for Stair Tread Numbers, but this is marginally better.  You can now prepopulate the stair tread number instance parameter values and reuse the settings for similar stair tread number annotation.

    Property Palette Scroll Bar Improvements – This is a great fix. It can be so annoying when you are needing to edit a bunch of instance parameters individually, and you have to scroll down the Properties Palette to get to the parameter you need.  Each time you switch element it scrolls back up to the top.  NO MORE.

    Schedule Usability Improvements  - Use TAB/ARROW keys to move schedule cell focus from up to down or from left to right like Excel.
  15. Load Family into Project and Close When loading a family into a project from the family editor, clicking “Load into Project and Close” button will close the family document and load the family into the project. You will be prompted to save changes to your family before loading.
    I have mixed feelings about this feature.  It’s great for power users to quickly tweak a family, and in a single operation load it into the project and keep working.  But for novice users, it makes it all too easy for those that don’t properly understand how parameters work, to edit a family (breaking it) and make some changes and reload it, causing problems through a whole project.  I can see many larger companies, investing the API to disable this command.
  16. Improvements to Model Upgrade User Interface
    New messaging is displayed for model upgrade indicating the source and target file format for upgrade. The dialog shown includes:
    - The version of the model being upgraded
    - The version to which the model is being upgraded (the version of the active session)
    - A link to relevant help topics
    - A cancel upgrade option which will abort the upgrade and load of the model
    Great feature, and I wish it had always been in Revit.  It’s so annoying when you simply want to open an old project in its native version so you can view it quickly.  I’d still like to see this in the Properties of the actual file, to avoid the need to open it at all, to view its version…
  17. Search in Ribbon Combo Box
    Similarly to the Type Selector, Combo boxes in the Ribbon also have search functionality.  Reference Other View, is a list that can become very long, and being able to quickly filter this is a very welcomed addition.
  18. Selection Boxes 
    If you’ve used either of these free tools - COINS Section Box, or Xrev ViewBox, you’ve already seen how this feature works.  Select elements and generate a 3D view with a section box cropped around those elements.  This is now integrated into Revit.  However, these free tools still offer additional functionality such as isolating the elements, pre-naming the views, selecting by ID, crop based on view extents, specifying padding etc.  As such, if you still want the extra behaviour its still worth having these addins installed.
  19. Remember View States Across Sessions
    As a way to improve performance, by not wasting valuable resources regenerating entire views, Revit now remembers the pan and zoom states of model views across Revit sessions.  For example, imagine you are working in section view “Section A-A”  and you are zoomed into a portion of the model. In r2015, if you save and close the model, the next time you open the model to view “Section A-A,” the view will open to the extents of the view, not to the specific portion of the view that you were previously working in.  In 2016, when you open the view “Section A-A” in a new Revit session, it will remember the portion of the view that you were previously zoomed into instead of zooming to the extents of the view.
    I really like this new behaviour!
  20. Revisions Enhancements 
    a. Enable multi-selection in the Sheet Issues/Revisions dialog.  Great for the occasions where you need to edit a few revisions at once, such as marking them as Issued.  If you wish apply a revision in bulk though, you’ll have to revert to using free tools such as Xrev UpRev.

    b. Numeric numbering - Sequence starting number can be customized.  For those companies who wish to start with 0 as the first revision.

    c. Alphabetic numbering - Sequence is now called Alphanumeric.  Alphanumeric now allows multiple characters (comma separated) in the sequence to accommodate custom numbering when required for some (or all) revisions in the sequence.

    d. Prefix and Suffix options are available for both Numeric and Alphanumeric numbering options - value will be added to each revision in the sequence.

    Autodesk had the opportunity to finally solve the Revision problems many of the world face using Revit, but unfortunately this solution falls short of solving the problem.  The new Prefix/Suffix options are global settings and they apply to all revisions.  So if you start with P1, P2, P3, and then move to C1, C2, C3 – when you change the Prefix the already issued P series will also change, and if the P series was already on the sheet you’d get C4, C5, C6!   If you create your own manual sequence P1, P2, P3, C1, C2, C3, you’ll still have issues as different sheets have different numbers of revisions on them so the count would be incorrect.  
    Simply put, we need to be able to create Sequence Types, which can have their own Prefix/Suffix.  Users will then generally set these up by Phase.  It would be great to also have the ability to Hide an entire sequence type (avoiding the need to ever delete Revisions from Sheets when the project changes stages).
  21. Texture Settings
    For render appearances of materials option in DWF Export Dialog.
  22. PDF Hyperlinks & Bookmarks
    Revit will automatically generate bookmarks and hyperlinks that can be used to navigate your views/sheets within your PDF viewer. 

Architectural - New Features

  1. Site Performance Enhancements 
    Improved edit and modification times for complex toposurfaces, subregions and building pads. Regeneration improvements when deleting building pads or modifying building pad geometry. Improved regeneration for cut/fill values when modifying building pad geometry.

    Please Autodesk, just give up on the current Site tools, they are vastly inadequate.  I attribute the current tools as using Microsoft Paint to create a digital master piece.  Sure if you spend the time you can do it, but there are far more powerful tools that will make the job much easier. Please develop something new that gives us the ability to:
    - Create Batters to particular grades
    - Create Retaining Walls
    - Create Roads with Kerbs that follow the terrain
    - Create Fences that follow the terrain
    - Host elements to the terrain, the modify the surrounding terrain, such as drains
    - Allow correct representation of sub-terrain elements, so the hatch doesn’t go through the element and instead wraps around it.

    It’s been a very long time since we’ve seen a major new modelling feature in Revit.  Site Designer is a novel attempt, but as its limited by the limitations of the Site tools we still get, poor representations of steep faces (triangulations, requiring thousands of points to avoid), incorrect display of topo in section.  No nice way to display Max. Building Heights above Natural Ground Line, compare Natural and Proposed Ground Line, without showing Poche for both...
  2. Place Rooms Automatically Place multiple new rooms in all room-bounding elements on the same level with one click.
    Architecture tab>Rooms>Place Rooms Automatically
    All empty room-bounding elements will be filled with rooms.
    Rooms will share Identity Data from the Properties panel such as name and finishes.

    Will be useful, but will probably require manual cleanup afterwards to remove any unwanted rooms...
  3. Reset Camera Target in Perspective View 
    With this command, you can reset current camera target to the centre of crop region, to get a better view from an unusual view angle.  Great when you are getting lots of distortion in your perspective and would prefer to simply fix it, rather than recreate the view.
  4. Toggle Perspective-Isometric View Create and activate a camera view or a normal Isometric 3D view, check ‘Show Crop Region’ on View Control Bar, and Toggle View command is enabled in the View Cube.
    With this command, you can have your 3D view switched between a camera view and a normal isometric 3D view by one click.
  5. Enabled Align, Move, Pin, & Unpin in Perspective View 
    Finally we can make some model modifications in Perspective Views.  Currently 4 commands have been enabled; Align, Move, Pin, Unpin.  Let’s hope there is more on the way.
  6. Multi-Select Wall Joins 
    Edit multiple wall joins at once!  Awesome.  Enough said.
  7. Autodesk Raytracer Rendering
    Autodesk are starting to transition for the 3rd party Nvidia Mental Ray rendering engine to the proprietary ‘Autodesk Raytracer’ for static view rendering. For Architects and Designers who render images in Revit, the Autodesk Raytracer rendering engine provides equivalent functionality to Mental Ray.
    I think this will represent some great improvements in the future.  We haven’t seen many new features in Mental Ray for a long time, so perhaps with this now being Autodesk technology, and the fact its shared between multiple applications, we’ll see some great improvements.

Structural - New Features

  1. Analytical Model - Enhancements To Loads and LCS 
    More improvements to LCS including, LCS displayed for curved beams and arced walls, LCS displayed for elements when defining loads, Proper loads now display for linear elements, Area loads for arc walls, Projected loads for surface elements, Not-hosted loads snapping to model lines, Rearrangement to Loads parameters in MPP
  2. Change Reference on Multi-Selection
    You can now adjust the setback on Multi-Selection, allowing you to quickly change the reference on many elements at once.  I’d still like to see this feature be able to set at the family level.  We can do it for the stick model, but not for the 3D model!
  3. Snaps on Model Lines 
    This feature extends snapping capabilities on Model Lines & Detail Lines for following the structural elements; Beams and Braces, Vertical and Slanted Columns, Trusses.
  4. Flip Structural Framing Ends 
    Handy little feature that enables you to quickly flip a beam without having to drag it over itself.
  5. Tag Enhancements for Additional Parameters - Elevation at Top for Isolated Foundation
    - Elevation at Top for Wall Foundation
    - Elevation at Top for Slab Foundation
  6. Define Rebar in Plan and Elevation Views of Concrete Elements 
    Previously, you defined rebar in concrete elements in a section view, with the exception of floors which could be reinforced in a plan view.  This feature builds extends the floor functionality to other concrete elements and views. You can now define rebar in beams and columns without creating a section view.
  7. Reinforcement Rounding Methods 
    When you enable the reinforcement rounding option, the program rounds lengths to the nearest increment by default (for example,  3.72 becomes 4, while 3.42 becomes 3). It is now possible to also specify rounding  the reinforcement lengths up or down.
  8. Rebar Constraint Manager Enhancement Previously, when you opened the Rebar Constraint manager, the position of the element was fixed and you were unable to Zoom or Pan in the drawing area. You would have to close the dialog, set the desired position for the view and then re-open the Rebar Constraint manager.
    Now, after accessing the Rebar Constraints manager, you can zoom to the scale that is the most useful so that everything is visible and clear.
  9. Rebar Performance Improvement 
    Revit is now smarter about when and how reinforcement is displayed, so that views will open and update faster. This is achieved in two ways: by limiting the regeneration of reinforcement to only what is visible on screen and by displaying reinforcement as simplified lines if its very small on screen, no matter what detail level is assigned to the view.

MEP - New Features

  1. Liters Per Minute Units for Piping Flow 
    Liters per minute, with unit symbols L/min and LPM, is now available for Piping Flow in Project Units
  2. Most Recently Used Panels  
    Prior to this feature, when a circuit was created, it would not be connected to a panel. Extra steps were always required to associate the circuit to a panel.
    Now, when you create a circuit, Revit will connect to the most recently used panel (in the current Revit session).  Revit will remember the most recently used panels for each system classification and distribution system.  The functionality is automatic. There is nothing you need to do to enable it.
  3. Power Circuit Creation Sequence
    Prior to this feature, when creating power circuits on a branch circuit panel, Revit created the circuits in numerical order (1,2,3,4,5...).
    This feature provides the user options for the sequence in which power circuits are created, enabling creation of circuits grouped by phase.
    Open the Electrical Settings window (ES keyboard shortcut, or via the Manage tab > Settings panel, MEP Settings drop list > Electrical Settings).
    On the left, select General
    On the right, in the Settings column, find the row for Circuit Sequence:
    Numerical (1,2,3,4,5,6,7,8,9,10,11,12): The standard way Revit has circuited elements. Revit numbers from smallest ,to largest
    Group by Phase (1,3,5 / 2,4,6 / 7,9,11/8,10,12)
    Odd then Even (1,3,5,7,9 ,11/ 2,4,6,8,10,12)
  4. Move Circuit to Specific Slot in Panel Schedule
    Prior this feature, the user had to use a combination of Move Up, Move Down, and Move Across to adjust circuits in panel schedule, which could be disruptive to other circuits.
    With this feature, the user will be able to use the Move To command to move a circuit directly to a target slot, without disrupting other circuits.
  5. Graphical Representations for Duct Fitting Tables
    Prior to this release, when you specified 'Coefficient from ASHRAE Table' as the loss method for duct fittings, the Settings dialog displayed a list of the ASHRAE tables based on certain criteria for duct fittings.
    Now, the ASHARE Table Settings dialog displays the graphical representations associated with the duct fitting tables, so you can identify which table is applicable for the current condition.
    Click "View All" to view other tables that are not applicable to the selected component.
  6. Fabrication Content 
    You can use detailed manufacturer and standards based content from the Autodesk Fabrication products within Revit MEP
  7. Fabrication Hanger Placement
    Hangers may be placed on fabrication segments to facilitate detailed model coordination.
    Hanger Placement:
    - Click Systems tab, Fabrication panel, Select Part.
    - From the Service Tab drop-list, select Hangers.
    - Select a Hanger and click OK.
    - Position the cursor along the edge or centerline of a segment and click to place the hanger.

    The hanger should update to accommodate the size of the duct, and be oriented so the bearer is perpendicular to the duct. The hanger is placed directly underneath the selected element.
    Note:  The tools on the Options panel of the Modify | Place Fabrication Part tab are disabled during hanger placement as they primarily apply to fitting, not hanger, placement
  8. Fabrication Part Placement
    To place parts in free space or end to end:
    - Click Systems Tab > Fabrication panel, Select Part. (If you have not yet selected a configuration for your project, you will be prompted to do so.)
    - Select a Service.
    - Select a group from the Service Tab. These are the same groupings as the tabs in CADmep.
    - Use the Properties Palette to set the Level and Offset.
    - Select a part and click OK.
    - Click in the drawing area (plan, elevation, 3D view) to place the part.

    During placement, various commands are available on the Modify | Fabrication Part tab in the ribbon.
    - Rotate 90 Degrees: Rotates the component about the connector's axis.
    - Change Connector: Toggles which connector the cursor is attached to.
    - Smart Snapping: Increases snap tolerance to open connectors in the model.
    - Show Help Tooltip: Provides additional in-context help.
So were your feature requests answered?  I'm still waiting for the big ticket items to be addressed:
  • Site Tools
  • Text Tools
  • Stair/Ramp/Railing Tools
  • Structural Connection Tools
  • Revamped Groups

Tuesday, January 20, 2015

Revit Material API Workarounds

If you've worked with the Revit API you'll know that often there are holes...  That is, things you can "almost" do, but there will be one item you can't access through the API that makes it impossible or require some obscure workaround.  This can be frustrating, as it can easily make a task you expected to take a day, take a week or even longer as you trial & error every possible approach and research a solution!

The Revit Material API is no exception.  Through the API you can create a new Material and set all its identity data, create new Thermal & Physical Assets and set all their properties, create an Appearance Asset and Apply Assets to the Material.

However, you cannot set/modify the properties of an Appearance Asset.  So how do you create high quality and "render ready" materials through the API.  Well effectively you can't...  However, what you can do is create families containing the pre-setup materials and through the API, load those families into the project and then delete them. 

As you may know, loading a family also loads all the materials and those materials will remain after you delete the family.  It also won't overwrite existing materials/assets if they already exist in the project.  So you can be sure it won't ruin any modifications a user has made.

Unfortunately if you are dealing with a Paint Manufacturer's colour palette they could have thousands of materials, and you are going to have to create all of these Appearance Assets manually using a duplicate and change the colour approach (and perhaps change the reflectivity depending on the finish).  Maybe a job for outsourcing...

Perhaps this will change in the future, but given the hundreds of different options available on Appearance Assets, I don't expect it will happen soon.