Zbrush

Adding a section on Zbrush. First post covers the curves helper plugin. Using this plugin is the simplest way to generate wires, cables, curves, rope and more for ZBrush.  To use the plugin all we have to do is use ZSpheres to construct our path and then select the generate button. This will trace the center of the ZSphere path.  After that we select a subtool and then choose the option to create the curve.  You can read about it more here:

http://www.zbrushcentral.com/showthread.php?208308-Useful-small-ZScripts-and-Macros-for-ZBrush-4R8&p=1222584&viewfull=1#post1222584

Only reason I am posting is because this is one of those trade secrets artists don’t like giving away so finding it in the first place was a major pain in the rear.  Hopefully I dropped in enough keywords in this that other people won’t have the same problem.

Computer Vision, ReCap, and Photoshop

Google generates their surface for Google Earth using a concept called computer vision.  Those of us not on the infinite-internet-funded budgets don’t have the pleasure of using that costly equipment but essentially the computers semi-automate the construction of a 3D surfaces, or meshes from flights.  The tech has advanced enough that mapping materials and textures has become more streamlined as well.  The rest of are stuck with a more budget-friendly (and labor intensive) approach to generating a 3D surface for our modeling and presentation purposes.   ReCap is software developed by Autodesk that can help to generate computer models from aerial photography, especially useful for someone with a a drone and the right permits.  Permitting for urban areas of major cities can be delayed by a year or more though, so many of us resort to manually modeling our surfaces the best we can in time constraints using whatever methods we can. One such method is using Recap and Google Earth.  By recording a 360-degree video rotating a surface in google earth we can convert those video frames to images and upload them to ReCap for processing.  Manually modeling high-priority buildings is best, but for low levels of detail (outlining areas and background), this has potential.  During my escapades I found Photoshop opens videos, allows me to crop them however I wish, and then render the frames to images. There are other methods but the simplicity in cropping and converting has made this my favorite.

 

export

 

 

Tutorials

I’ve decided to start adding tutorials again.  Tutorials are difficult for several reasons. First, there’s time. Simply put, it really does fly by, and before I can create one, I’ve already lost the time to do it. Second, those of us who make tutorials or train throw ourselves out there, and in competitive environments, this leads to a multitude of responses, not all of them pleasant. So, we build thicker skin.  Finally, with literally thousands upon thousands of videos out there covering software like 3ds Max, Civil 3d and Autocad, it’s difficult to find a reason.  My reason: I find that I may know something really well, but when presenting it, I always learn a little bit more.  So, over the next year I’ll be covering several topics in no particular order.  I hope a few are found reasonably useful.

 

Here is a cheat sheet for new 3ds Max users:

Download

CHEATSHEET

 

Tutorial A – Setting up real-time rendering with 3ds Max and the VRAY RT system https://youtu.be/nZ6QKMIl0kU

RT

Tutorial 1 – Character Creation for the non-character creator types https://youtu.be/GUgFxDa-aD8

funny dude

Tutorial 2 – Basic example of using Substance Painter with 3ds Max in a way that might be useful for architectural and engineering visualization https://youtu.be/QwBT894XHSk

cello

Tutorial 3 – This tutorial demonstrates how render elements in 3ds Max can allow us to export various channels to make images more appealing (specifically for engineering / architectural visualization).  https://youtu.be/kL5ORk9CbMY

birdyshot

Tutorial 4 – Quick demonstration using Vray lights with 3ds Max. https://youtu.be/WwiAH75DlhQ

vray

Tutorial 5 – OpenSubDiv with Crease modifier, bend, lattice, FFD 4X4X4 and symmetry.  https://youtu.be/P5RcHL1rD1U

modifiers

Customization for Autocad, Civil 3D, and 3ds Max

Below are various thoughts / notes concerning customization of software and languages I use on a consistent basis. In most cases this includes Maxscript for 3ds Max and Autolisp / C#.Net for Autocad and Civil 3D.

It’s possible to edit the visibility states of dynamic blocks using c# .net.  For the flip state it was particularly tricky to deal with the short value.  I found by simply converting the object to a string I was able to easily swap between the states I wanted.  The code is below:

    DynamicBlockReferencePropertyCollection pc = br.DynamicBlockReferencePropertyCollection;
                            foreach (DynamicBlockReferenceProperty prop in pc)
                            {
                                if (prop.PropertyName.ToUpper().Contains("FLIP"))
                                {
                                    object[] allowedValues = prop.GetAllowedValues();
                                    if (prop.Value.ToString() == "1")
                                        prop.Value = allowedValues[0];
                                    else
                                        prop.Value = allowedValues[1];
                                }
                            }

1) I created a cheat sheet to help those learning the API for Civil 3D. You’re welcome to download it here:  Pro-Cad Civil 3D 2018 C-Sharp Net Cheat Sheet 

cheatsheet
2) Three reasons to learn to code:

Influence the Future – Imagine yourself born in 1452. Without a formal education you venture out to make a life. Instead, you shape the world. That’s exactly what Leonardo da Vinci did. He became the leader at the forefront of technology, shaping the world that followed. Da Vinci kept a massive journal filled with his ideas and sketches. He didn’t know his work would influence the world for centuries to come. Imagine the internet your journal, you are Da Vinci, and your code could do the same thing. “It had long since come to my attention that people of accomplishment rarely sat back and let things happen to them. They went out and happened to things.” – Leonardo da Vinci

A Challenge Worth Tackling – People refered to Da Vinci as a quiet man of science. Society called him a peaceful man, who did not approve of conflict and war. Yet, he understood the ‘bestialissimapazzia’ (most bestial madness) of war had two sides. The challenge he tackled was to protect his fellow man. He sought to maintain liberty from tyrants who would besiege them and their towns. Driven by a cause, he proceeded to investigate ways to protect them. This led to his studies into machinery and flight centuries ahead of its time. In the coding world there are two sides to the war. One is automation will replace humans and the quality of society will plumit. The opposing view is coding will lead to improvements by allowing people to focus on being more creative and caring. It’s a choice to believe one or the other, and coding isn’t going away. ” Every action needs to be prompted by a motive” – Leonardo da Vinci

Improve Life – Da Vinci noted that simplicity is the ultimate sophistication. He ventured to improve the lives around him while studying and learning what he loved. He found the two functions were the same. In the end, if our efforts help to make one or two lives more easier to manage, it’s an improvement. Chances are, if you are reading this, you have a fetish for Da Vinci or you are interested in coding. I can’t help with the former but the latter is shaping the world as we know it, we just need to get on bored. “A painter was asked why he had made his children so ugly, when his figures which were dead things he had made so beautiful. His reply was that he made his pictures by day and his children at night.” – A Joke by Leonardo da Vinci

The sharp symbol in C# is a reference to the music note, and that it combines four + symbols to create it.

3) General Resources

Coding Haven – http://www.c-sharpcorner.com/technologies/csharp-programming

Civil 3D/Autocad

Development Guide – http://help.autodesk.com/view/CIV3D/2017/ENU/?guid=GUID-275A6271-7758-4C14-9703-989B1B007E3E

3ds Max

CGSchool Maxscript Cheat Sheet – http://www.thecgschool.com/downloads/3DATS_MAXScript_Cheat_Sheet.pdf

4) Using C# .Net with Autocad or Civil 3D it’s easy to dynamically construct a winform and datagridview to display information we might want inside a drawing.  This example demonstrates how to do that by listing the number of objects inside the BlockTableRecord for modelspace.

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using System.Linq;
using System.Windows.Forms;

namespace Autocad_DataGridView
{
    public class Class1
    {
        [CommandMethod("acadgridview")]
        public void routine()
        {

            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;

            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                ObjectId modelSpaceId = SymbolUtilityServices.GetBlockModelSpaceId(db);
                BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                BlockTableRecord btr = tr.GetObject(modelSpaceId, OpenMode.ForRead) as BlockTableRecord;

                Form form = new Form();
                form.Width = 300;
                form.Show();

                DataGridView MyDataGridView = new DataGridView();
                MyDataGridView.Anchor = AnchorStyles.Top;
                MyDataGridView.Width = form.Width;
                MyDataGridView.Height = form.Height;
                MyDataGridView.Columns.Add("Column 1", "Objects In Model Space");
                MyDataGridView.Rows.Add(btr.Cast<ObjectId>().Count().ToString());
                MyDataGridView.Columns[0].Width = form.Width;
                form.Controls.Add(MyDataGridView);

            }
        }
    }
}

5) Everything we program in regards to Civil 3D or Autocad requires we collect and work with data. In some cases we wish to produce reports and tables of information. Using C# with the Civil 3D API we can do this on the fly. Below is an example. First I create a form dynamically. Then I collect the layers (SymbolTable) where I add columns for the layer name and the layer color.  Next, I iterate through the layers in the Symbol Table and add them to the DataTable that was created dynamically.  Finally, I create a DataGridView to display the information I stored in the DataTable, since the DataTable can’t be displayed in it’s native format.

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using System.Windows.Forms;

namespace Autocad_DataTable
{
    public class Class1
    {
        [CommandMethod("acaddatatable")]
        public void routine()
        {

            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;

            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                Form form = new Form();
                form.Width = 300;

                SymbolTable symboltable = (SymbolTable)tr.GetObject(db.LayerTableId, OpenMode.ForRead); 

                System.Data.DataTable dt = new System.Data.DataTable();
                dt.Columns.Add("Layer Name");
                dt.Columns.Add("Layer Color");

                foreach (ObjectId id in symboltable)
                {
                    LayerTableRecord symbol = (LayerTableRecord)tr.GetObject(id, OpenMode.ForRead);

                    System.Data.DataRow dr = dt.Rows.Add();
                    dr["Layer Name"] = symbol.Name;
                    dr["Layer Color"] = symbol.Color.ToString();
                }

                DataGridView grid = new DataGridView();
                form.Controls.Add(grid);
                grid.DataSource = dt;
                form.Show();
            }
        }
    }
}

6) One of the most important parts of customization is optimization. For example, if we want to change some featurelines we don’t want to iterate through the drawing’s entire database. Instead, we  filter everything out and start with the featurelines.  Eventually we drill down until we get those we want to modify, but to begin we use selection filters (shown here: Dev Guide Link).  In order to use selection filters we need to know the DXFCode (or DXF Name) of the object we wish to select. One way find this out is to cast the modelspace objects to a list, then print a list of those objects dxf names to the screen using a  DataGridView as shown in the example below.

dxfnames

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using System.Linq;
using System.Windows.Forms;

namespace Autocad_DataGridView
{
    public class Class1
    {
        [CommandMethod("acaddxftotal")]
        public void routine()
        {

            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;

            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                ObjectId modelSpaceId = SymbolUtilityServices.GetBlockModelSpaceId(db);
                BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                BlockTableRecord btr = tr.GetObject(modelSpaceId, OpenMode.ForRead) as BlockTableRecord;

                Form form = new Form();
                form.Width = 700;
                form.Show();

                System.Collections.Generic.List<string> dxfnames = new System.Collections.Generic.List<string>();

                DataGridView MyDataGridView = new DataGridView();
                MyDataGridView.Anchor = AnchorStyles.Top;
                MyDataGridView.Width = form.Width;
                MyDataGridView.Height = form.Height;
                MyDataGridView.Columns.Add("Column 1", "DXF Names");
                System.Collections.Generic.List<ObjectId> modelspaceobjects = btr.Cast<ObjectId>().ToList();
                foreach (ObjectId modelobjectid in modelspaceobjects)
                {
                    dxfnames.Add(modelobjectid.ObjectClass.DxfName.ToString());
                }

                System.Collections.Generic.List<string> distinctdxfnames = dxfnames.Distinct().ToList();
                foreach (string dxfname in distinctdxfnames)
                {
                    MyDataGridView.Rows.Add(dxfname);
                }
                MyDataGridView.Columns[0].Width = form.Width;
                form.Controls.Add(MyDataGridView);

            }
        }
    }
}

7) Link to probably the best example of using linq with autocad: Linq and the Autocad Net API

8) Several years ago I decided to abandon the two script / program languages I was using and forced myself to learn a new one (just to see if I could really). That was C# (C-Sharp). This chart shows that it’s top of the line to take of the world. Lotto XD

CcVyDI9UsAA0RQp.jpg large

9) A completely useless app but I had fun developing it. If you want it just message I’ll send it your way.

10) Here’s a cool idea.  With the ability to use animated gifs in picture boxes we can develop training applications in CAD for specific workflows.  Check out an animated interface I created here: https://www.youtube.com/watch?v=y391aP_jCeE&feature=youtu.be&vq=hd720

The Spillway

11-17-17 _ I came across a gentleman named Andrei Dolnikov, the CEO of Binyan Studios at Autodesk University. Over the years I’ve thought about something I heard once a lot: that a persons work tells a story. It never clicked until I heard this man speak about his teams work and the process they use.  It’s easy to see why he is successful. I’m twisting it a bit when I say this as they apply the concept in a form that matches visualization specifically, but in short the part of providing good, clean, accurate data is taken care of. It’s not easy, but easy enough and become easier every day. The key to being the best is being able to provide “that something special” that’s above and beyond, that reaches the client and their customers. Of course entrepeanuers strive for this every day, regardless, its been ticking in my head for years, and for me seemed an easy concept to comprehend, but difficult one to really grasp.  I have no idea why I get it now.

1) Jeff Bartel produced probably my favorite, simple video of how to get data from Civil 3d into Infraworks 3d.  https://www.youtube.com/watch?v=pY2V4xjhNJ4

2) Routine to move labels in Civil 3d https://youtu.be/mU1w4q1LIds

3) Check out Steve Hill’s article about his Pipe Production Tools for Civil 3d: https://issuu.com/augi/docs/aw201606hr

4) Sincpac has some great tools for use with Civil 3D: http://www.quuxsoft.com/

5) Jason Leinberger, one of my favorite coders, presents a useful .net trick: Inheritance with Autodesk API

6) Eric Chappel and George Hatch with Autodesk present Site Capture, Drones to Infraworks 360

7) QGIS is an open source GIS application.  With hundreds of addons, plugins and tools it’s as powerful an application for GIS as anything out there. By installing just a few plugins users can export georeferenced Google Earth or Bing Map images with it’s associated TFW (world file) for import into Autocad Map or Civil 3D.

8) 3d visualization is made easier every day. A primary example is software called Lumion. Lumion basically creates the Sim City for designers, where we can drag and drop high quality vegetation, people, cars, water, landscape materials, street equipment, signs, and hundreds of more objects onto our scene. With a few clicks they are all animated, any time of the day (or night) with wind even factored in. Check out this example here: https://youtu.be/tgcOXoYHcwU

lumion

9) It was a huge pain but I finally found a method of exporting imagery for use with CAD that I can live with. I tried multiple software applications. First ArcMap, then QGis, then Global Mapper, finally back to ArcMap.  I should note that none of the conventional processes made me happy. Every one of them took too long to export.  So here’s what I ended up doing. First, I created a grid in ArcMap using the fishnet tool.  I was able to size them exactly how I wanted. When I created the fishnet, I chose the “create polygon” option over “create polyline”. This allowed me use the “Data Driven Pages” tool to automatically generate pages based on those polygons. Finally, with a relatively simple python script, I was able to efficiently, and very quickly export all the images I needed (497 in a few minutes to be exact). The script is below:


... mxd = arcpy.mapping.MapDocument("CURRENT")
... df = arcpy.mapping.ListDataFrames(mxd)[0]
...
... for pageNum in range(1, mxd.dataDrivenPages.pageCount + 1):
... mxd.dataDrivenPages.currentPageID = pageNum
... arcpy.mapping.ExportToJPEG(mxd, r"E:\Folder\Subfolder\imagename{}.tif".format(pageNum), df, df_export_width=3200, df_export_height=2400, world_file=True)
... del mxd

3ds Max Articles

I’ve been the content manger for the 3ds Max section of AugiWorld Magazine for several years now.  During this time I’ve produced numerous tutorials and articles for the AugiWorld Magazine:

Customization with 3ds Max 2018 – Discussing Custom start-up files, templates, toolbars, and materials.

customize

Level Up with 3ds Max – Presenting hard-surface scene construction concepts.

level up

Online Collaboration for 3ds Max – Presenting four useful sites that can be used to share and review 3ds Max content.

collaboration

Managing Assets for 3ds Max – Discussing version control and more.

versopm

Four Favorite Plug-ins – Discussing some plugins for 3ds Max.

mats

Creativity Unleashed – Discussing new features in 3ds Max 2019.

whatsnew

20 More Tips and Tricks for 3ds Max – Expanding on the first 50 Trips and Tricks posted a few years before.

tricks

Professional Presentation for Designers – Discusses animation timing, blocking, motion, keys, composition, and content.

bus

Advanced Techniques – Covers manipulating textures using the Slate Editor and nodes, Advanced Data Manipulation and the Particle View, Particle Systems, Substance Painter with 3ds Max and using maps for alternate scenarios.

advanced

3ds Max Interactive – Introduction to the new powerful tool for VR and visualization for 3ds Max and Maya.

interactive

Education Triumvirate – Discussing how to use available resources to learn 3ds Max.

image

Customize 3ds Max – Working with color schemes, expanding rollouts, and customizing quad menus.

custom

Expanding on Details – Demonstrate using work paths, subdiv, and displace modifier to add details to scenes.

details

Tools for Collaboration – Using non-destructive options with xrefs, File Link Manager for Revit connections and the design workspace.

collaboration

Covering Details – Demonstrating how details can add character to scenes.

hair and fur.jpg

Implementation of Arion Renderer – Discussing Arion Renderer and basic implementation.

Arion

3ds Max 2018 Highlights – Introducing updates with 3ds Max 2018. pic

Manage Still Image Post-Production Elements – Using render elements and PSD Manager with Photoshop for post-production work. bildings

Introduction to MassFX – Working with MassFX to add interest to a scene. lollipops

Advanced Lighting: Light Balance with 3ds Max – Applying light balance to scenes in 3ds Max.  lightbalance

Reflections on Lighting – Introductory to lighting setup and analysis.  image1

Reach Out with 3ds Max – Focused on encouraging the use of art and 3ds Max to communicate, teach, and understand one another. egypt

Max Creation Graphs – Using and creating Max Creation Graphs (MCGs) for 3ds Max

mcg

Max Efficiency – Article discussing how to manage 3ds Max data effectively

cat

Collaboration with 3ds Max and Stingray Article introducing Stingray as a realtime solution for visualization purposes. stingray

Future of Visualization Article discussing how the visualization industry is impacted by today’s technology.live

Third-Party Options Helpful, affordable plugins for 3ds Max.Brian_Chapman-AW-0616-03_452_229

New Release, Packed with Improvements teapot

Material Management Proper use of materials in 3ds Max Brian_Chapman-AW-0416-01

Tricks with Scripts (Time-saving tricks using the MAXScript language in 3ds Max)1

Retopologizing a Mesh in 3ds Max (Digital sculpting with 3ds Max and other software)2

Constructing an Interior Scene in 3ds Max (Creating an interior scene using 3ds Max, VRay, and Photoshop)Main

Keeping it Civil in 3ds Max (Using 3ds Max with Civil View and Civil 3d)Figure 1

The Digital Artist (Design Fundamentals)Figure 3 - Shapes in Complex Parts.png

Creating Custom Textures with the Viewport Canvas (Working with textures, color and contrast)Figure 11 - Brush Images

Bringing Characters to Life (Manual character construction)
Figure 1 - Bot Needs Karate Lessons.png

Creating Visual Effects with Atmospheric Apparatus and Rayfire (Working with 3ds Max effect tools) Figure 1

Manage Large Scenes in 3ds Max (Tools that help manage large, detailed scenes) Fig 1 - Housing Development in 3ds Max

50 Fast Tips & Tricks for 3ds Max (Quick timesavers for 3ds Max users) Figure2

Intro to 3ds Max (Getting started) FIGURE1

3ds Max Versatility (Explores how to use 3ds Max in unconventional ways) Brian_Chapman-AW-1214-01.jpg_452_369

Make Game Development Child’s Play (Demonstrating game development with 3ds Max and the CryENGINE 3)  FinalFigure

Max Management Tips (Variety of usage tips for 3ds Max 2015) Brian_Chapman-AW-0714-01

Powerful Para 3d (A plug-in for controlling arrays in 3ds Max) Brian_Chapman-AW-0614-02.jpg

Performance, Productivity Increases (Introducing 2015 features) Brian_Chapman-AW-0414-01

Interview with the Artist (Q & A with Jose Alves da Silva) Figure 1

Quality Content with Max Plug-ins (Introducing Vray, CityTraffic, and Forest Pack Pro) CityTraffic Example

Not Just for Games (Q & A with Seid Tursic and presentation of hair and fur module) Mouse With Fur

Autocad / Civil 3d Tips

The ESRI plugin for Autocad / Civil 3D allows us to connect to Esri maps, services, and more.

esri

civil

1) Combine the transparent command ‘CAL with MME to get a point in the middle two selected locations

mee

2) For 64-bit computers an optimal setting for virtual memory can be 2X your physical memory. If you have 8 GB of ram set your virtual memory to 16 GB

3) Turn off Dynamic Tessellation to help speed up Civil 3D

dyu

4) Values in the toolspace can be copied to the clipboard values

5) Export Civil 3d files to native Autocad formats using “ExportToAutocad” command

6) View corridors can be analyzed using the “Zone of Visual Influence” tool and some creativity

view

7) Assign aliases using the alias editor for AEC commands you use a lot. Assign them to your left hand to be more productive (maintaining one hand on your mouse at all times)

8) Civil 3D can be used for much more than just civil applications,  check out the commands “extrude”, “slice”, and “revolve”extrude

9) Explode parcels to extract the parcel polylines, useful for multiple applications

10) Explore the “mapclean” command, which can be used for a multitude of tasks such as weeding polylines or checking line workmapclean

11) Not only can viewports be split, but they can be joined as well. By splitting and joining viewports, we can configure them in virtually any format we want

12) The modify option to insert PI works with featurelines, polylines, parcels, and more modify.png

13) With “paste special” we can insert lines and text from an excel file

14)  To help clean up a surface’s boundary experiment with the the max triangle length option

maxtriangle.png

15) XML files can be opened with notepad and can contain useful data

16) SYSVDLG command contains short descriptions of all variables in Civil 3d

sys.png

17) To convert a volume surface to a tin surface, simply create an empty tin surface and paste in the volume surface

18) In the xref manager, the name of an xref can be changed. This allows us to xref the same drawing twice, giving us layer control over each xref

19) The daylight from a grading object can be offset to create a 3d polyline

20) Fields can be used to read object data, be formatted to display with various units and precision, and be updated dynamically.

21) Customizing CAD using Autolisp and applicable programming languages can simplify life and streamline workflow. If you have a task you’d like to see automated, feel free to give me a shout, I might be able to help.

example

22) Autolisp is a common language to customize Autodesk drafting and design applications.  Creating one is simple. Here’s an example:

(defun c:anycommandname ()

(setq anyvariablename 1)

(setq anothervariablename 1)

(setq total (+ anyvariablename anothervariablename))

(princ))

That’s it. If this was loaded and we typed “!total” in the command line it would list “2” as the result.

23) Are you aware that for many cases you can modify a surface’s contours by drawing your own then adding it to the definitions? Simply add it as a “user contour” and it will adjust appropriately.

24) Civil 3d has a series of ‘transparent’ commands useful for a multitude of tasks. For example, ‘stae used with polylines or points allows user to locate a position in a profile based on selected locations in plan view.

25) Download this routine to move basic Civil 3D labels as shown in the video located here: https://youtu.be/mU1w4q1LIds

26) Autodesk developed a way to create a pipe catalogue with custom parts for use with Civil 3D using Inventor and Infraworks. It’s cumbersome and inefficient but essentially the steps are: Construct the part in Inventor (or in Autocad then import them into Inventor), assign parametric dimensions.  Use the plugin for Inventor to export for Infraworks (only available when Infraworks is installed).  In Infraworks, export the catalogue to use with Civil 3D.  The workflow is pretty painful and feels clunky (especially since Autocad already has a 3d-capable modeling system) but it’s there.  To go from Inventor to Infraworks watch the video here:  Inventor to Infraworks To go from Infraworks to Civil 3D catalogue a tutorial was provided by Civil 3d Plus that I’ve stored here: Infraworks to Civil 3D

27) Every once in a while I run into a pretty nasty bug with Civil 3D installations. Essentially, the pipe networks don’t work and it has to do with the msscript.ocx file.  Autodesks’ guide to fix it has it about 20% right.  In order to fix the bug, overwrite the files in the shared directory first, then register the 64bit version of the msscript.ocx file located in the syswow64 folder, not the 32.  https://knowledge.autodesk.com/support/autocad/learn-explore/caas/sfdcarticles/sfdcarticles/Error-Script-Control-msscript-ocx-when-creating-pipe-network.html