ZeroTouch for Dynamo for Civil 3D

In the world of programming for Dynamo, when you create a package of custom nodes, it’s referred to as ZeroTouch. I don’t know where that comes from, but I’m sure someone out there knows. This post will cover how to setup a Visual Studio project for the minimum requirements to create your own ZeroTouch node package. This post will only deal with a single version of Civil 3D, but if you’d like to set up your project to be multi-version compatible, you can follow the steps in this blog post and make adjustments to these steps accordingly. The first part of this process is just like setting up a standard Autocad or Civil 3D project, so I will not show many screenshots. You can see the blog post I just referenced for more info on that.

I am using Visual Studio 2019 for this post, but you should be able to use any version that will work with your version of Civil 3D. Start by selecting the Create New Project option and select the Class Library (.NET Framework) template for your language of choice. I will be using C#, but I believe VB will also work. In the Configure your new project dialog, provide a name for the project, a location and solution name. Click the Create button once you’re done and you’ll be presented a blank project.

Configure your new project

The next step is to add your references. Add the standard Civil 3D and AutoCAD references: AcDbMgd, AcMgd, AcCoreMgd, AecBaseMgd and AeccDbMgd. Make sure to add the correct ones for your targeted Civil 3D, if you have multiple versions installed. Change the Copy Local setting on the references to False.

Edit the project Properties to change the Debug options. Toggle the Start action to “Start external program” and select your version of acad.exe. Edit your Start options and Command line arguments as you see fit. I make mine match the Civil 3D shortcut so that I am loading it as a typical user would.

At this point, you have a standard Civil 3D development project. In order to target Dynamo you will need to add the NuGet packages as references. Either right-click the References item in the Solution explorer or go to the Project pull-down and select “Manage NuGet packages…”

Right-click the References node or use the Project menu.

A new tab will open called the NuGet Package Manager. If it is not already current, select the Browse tab. There is a pull-down option called Package source, ensure it is pointed at nuget.org. In the search bar, type in “DynamoVisualProgramming”. You will get a list of possible NuGet packages. Install the Core, DynamoServices and ZeroTouchLibrary packages. You install the package by selecting the package, selecting the version you’d like to use (often you can use the Latest stable version) and clicking the Install button. A Preview Changes dialog may be displayed (depending on your settings) that will warn you the project is installing the selected package. You can click OK on that window. You may also get a File Conflict for a logo.png file. You can opt to overwrite or not, it won’t affect the project.

At this point, run your project to make sure it loads Civil 3D as intended. Once Civil 3D has opened, switch to the Manage tab and click the Dynamo button. Once Dynamo has loaded, create a new blank file. From the File menu, select Import Library and select your dll file in your projects Debug folder. If all went well, you should now see your ZeroTouch library under the Add-ons section on the left side of Dynamo. If you expand the library, you will see the structure matches the defaults that your project currently has.

The default class structure, in Dynamo.

By default, Dynamo organizes your library based on the internal structure. The project name, or dll file, will control the library name. Any namespaces will be the first level under that and each class in each namespace will be the second level. In each class, any methods and constructors will be the nodes you can insert into the Dynamo canvas. If you click the Class1 item, you will create a Class1.Class1 node with a single output.

Before closing down your debugging session, in the Settings menu, select the Manage Node and Package Path option. At the bottom of the list of paths you will see your recently loaded library file. Select the file and click the minus sign to the left. This will remove the file from future loads of Dynamo so that we can adjust our project to automatically copy the files to the default package location and not have any conflicts. Once you’ve removed the path, click Accept Changes and close down Dynamo and Civil 3D.

Back in Visual Studio, we’re going to add some Build Events in order to automatically copy all the necessary files to the default package location. In this way, Dynamo will auto-load the library each time it runs. Double click the Properties node in Solution Explorer. In the Build Events tab, paste the following code into the Post-build event section:

xcopy /Y "$(TargetDir)." "$(AppData)\Autodesk\C3D 2021\Dynamo\2.5\packages\ZeroTouch\bin\"
xcopy /Y "$(ProjectDir)pkg.json" "$(AppData)\Autodesk\C3D 2021\Dynamo\2.5\packages\ZeroTouch\"
xcopy /Y "${ProjectDir)ZeroTouch_DynamoCustomization.xml" "$(AppData)\Autodesk\C3D 2021\Dynamo\2.5\packages\ZeroTouch\bin\"

Let’s look at these three lines a little bit and try to understand what’s happening.

xcopy /Y "$(TargetDir)." "$(AppData)\Autodesk\C3D 2021\Dynamo\2.5\packages\ZeroTouch\bin\"

This line is going to copy everything in the “TargetDir”, which is your project’s bin\Debug folder, to the bin folder of your ZeroTouch package folder.

xcopy /Y "$(ProjectDir)pkg.json" "$(AppData)\Autodesk\C3D 2021\Dynamo\2.5\packages\ZeroTouch\"

This line is going to copy the pkg.json file (which we haven’t created yet) to the root folder of your package.

xcopy /Y "${ProjectDir)ZeroTouch_DynamoCustomization.xml" "$(AppData)\Autodesk\C3D 2021\Dynamo\2.5\packages\ZeroTouch\bin\"

This line is going to copy your DynamoCustomization file to the package bin folder. We haven’t created this file either, but it controls the naming convention that is displayed in the Dynamo library.

Now that we have the project setup to load into Civil 3D and Dynamo, let’s create the other files that Dynamo wants in order to read your library more effectively. Right click your project name in the Solution Explorer and select Add->New Item. Select a .json file type and name it pkg.json. If a json file type isn’t listed, you can select a text file and give it a json extension. Paste in the following content:

{
"license": "",
"file_hash": null,
"name": "ZeroTouch",
"version": "",
"description": "",
"group": "",
"keywords": null,
"dependencies": [],
"host_dependencies": [ "Civil 3D" ],
"contents": "",
"engine_version": "2.5.0.0",
"engine": "dynamo",
"engine_metadata": "",
"site_url": "",
"repository_url": "",
"contains_binaries": true,
"node_libraries": [
"ZeroTouch, Version=0.1.0, Culture=neutral, PublicKeyToken=null"
]
}

This file can also be generated by Dynamo by publishing your library, but I like to start with it to ensure my project is copying the data it needs as I go. Most of the data items listed can be filled in either manually or during the publishing process.

Next, Add another item. This will be a XML file. Name the file ZeroTouch_DynamoCustomization.xml and paste the following content into it:

<?xml version="1.0"?>
<doc>
<assembly>
<name>Zero Touch</name>
</assembly>
<namespaces>
<!--Remap Namespaces-->
<namespace name="ZeroTouch">
<category>My Zero Touch</category>
</namespace>
</namespaces>
<classes>
<!--Remap Class names-->
</classes>
</doc>

At this point, test the project again by starting to debug again. Once Civil 3D loads, start up Dynamo. Once Dynamo loads, you can check if your project auto-loaded as intended by going to the Packages menu and selecting Manager Packages. Your package should be listed and you can click the ellipses on the right to expand the data listed or to open the folder containing the library. If you create a new dynamo file, you will even see your library listed on the left. If everything went smoothly, you should even notice the library name was changed.

Library modified by the DynamoCustomization.xml file

The library was transformed by the ZeroTouch_DynamoCustomization.xml file to change the name of the ZeroTouch namespace to My Zero Touch. Using this method, you can rename any of your namespaces or classes after the fact.

This concludes setting up a ZeroTouch project for Civil 3D. We’ll look at creating ZeroTouch nodes and working with the Dynamo graphics in future posts.

Setting up a Visual Studio project for multiple Civil 3D versions

In the past, I would write my code for the version of Autodesk software I was using. Then when I updated my software, I would save my code project to a new folder, update the references and move on. In effect, the previous version of the code would go stagnant and all new development was only focused on the current version. This is okay, if you’re in a small environment with only one active version of software running, but once you grow into a bigger environment or you want to support multiple versions for whatever the reason (App Store/private sales/future proofing), then you’ll need to migrate (or start) your projects with that in mind.

This post is going to cover how to setup a brand new VS project to target Civil 3D versions 2019 thru 2021. When the project is done, it can easily be expanded for future versions with only a few steps. I will create this project in a local folder, but you could set it up in GitHub or another cloud service. That’s not going to be in the scope of this outline, and you should be able to find that elsewhere online if you would like to do that.

To start out, open up Visual Studio. I’m using version 2019 but you should be able to use as far back as 2015. Select the Create a new project option at the bottom right of the startup dialog.

Create a new project by selecting the appropriate button on the startup dialog

On the Create new project dialog, select the code base you prefer to use. I am using C#, but you can use Visual Basic too. In the template list on the right side of the window, select Shared Project. You can use the search bar at the top or scroll down until you find it in the list.

Select Shared Project for the code base you prefer

On the Configure new project page, I would recommend naming the project “Core”, as this is where the majority of your code will reside. The location is a local folder in my example but, again, this can be anywhere you’d like to start from. The solution name will be the overall code project name. When VS creates your project folders, it will name the root folder to match the solution and creates a sub-folder for the Core project.

Configure the new shared project
The resulting solution and project as shown in the VS Solution Explorer
The resulting folder structure created by VS

You will notice that the Core project doesn’t have any of the standard data that a new project usually has, such as Properties, References or config files. This is because the Shared Project is where you will write only your code that is then referenced by each version specific project in the overall solution.

Shared Projects let you write common code that is referenced by a number of different application projects. The code is compiled as part of each referencing project and can include compiler directives to help incorporate platform-specific functionality into the shared code base.

Microsoft

Now that we have the Core shared project created, let’s create the first version-specific project. From either the File menu or right-clicking the solution name in the solution explorer, select the New Project option. In the Create New Project dialog, select the Class Library (.NET Framework) option for your code language and press Next.

Create a new Class Library for your specific software version

In the Configure new project dialog, name the project. I use something to make it clear what software version the project should be designed for. Change the Solution option to Add to solution and set your .NET Framework. I left this at the default, which is the most current installed. Press the Next button.

Configure the new project as part of the existing solution
The VS Solution explorer after the project is created
The resulting folder structure

Your solution should now have two projects as shown in the images above. The most recent project, C3D2019, will be set as the current project (note the bold text for the project name), which means it will be the project run when you start debugging. With the new project created, you need to make some edits to the Properties before moving forward. Double click the Properties item under the project name in the Solution explorer. In the Properties tab, select the Build option and add a Conditional compilation symbol. I chose C3D2019 to correlate the symbol more easily in the code. This symbol will be used in your Core code to tell the compiler to only compile a section of code when compiling the C3D 2019 project. We’ll see how this works more clearly once we start writing code later on.

Add a conditional compilation symbol

Once you’ve added your conditional symbol, choose the Debug option on the left and set the Start Action to Start external program. Make sure you reference the version of software your project is intended for. Set your command line arguments. In the screenshot below, I used the default arguments provided for loading Civil 3D out of the box. You can change this to your specific settings if you are writing for a company environment. You want to make sure your testing in the environment that you intend your app to work in. Save and close the properties tab.

Set your debug options

Now you need to add your references. Right-click on References in the Solution explorer and select Add Reference. Under the Shared Projects, select your Core project. Under the Browse section, select the AcDbMgd.dll, AcMgd.dll, and AcCoreMgd.dll files for AutoCAD and the AecBaseMgd.dll and AeccDbMgd.dll files for Civil 3D. Make sure you select the ones for the version your project is targeting. Click OK and change the Copy Local setting for the .dll files to False. You can do this for all five at once by selecting them all and in the Properties panel (usually below the Solution Explorer), change the Copy Local value.

Reference your Shared Project
The minimum references needed for Civil 3D

At this point, I typically run the project to test that the settings are correct. If you press F5, or click the Start button, it should build the C3D2019 project and launch Civil 3D 2019. Once Civil 3D loads, you can use the Netload command to load in the newly created C3D2019.dll in your debug folder. At this point, there are no commands to run, so you can shut down the program. Either close Civil 3D or stop debugging by pressing the stop button or Shift+F5.

To add another Civil 3D version, follow the same steps of adding a new Class Library for each version you plan to target.

The Solution Explorer once all projects are created

From this point onward, you can start writing your code. When you create your new class files, you will do so in the Core shared project. This way, when you run or compile any of the other projects, it will automatically have that core data included. There will be times that you’ll have version specific lines of code. If you are working with some of the COM interfaces provided by Autodesk, many of them are explicitly versioned. For example, the Sheet Set Manager components. Each software release results in a version of the Interop library being iterated. In the Sheet Set example, the reference that is used for the 2019 release is the AcSmComponents22Lib. The 22 is incremented up in each version, so that 2020 is AcSmComponents23Lib and 2021 is AcSmComponents24Lib.

You can see how this can be a problem when trying to reuse the same code base but target specific versions. When writing your code, you can’t just add a ‘using’ statement for all the different versions, the compiler would throw a fit! You need a way to tell the compiler which one to use. That’s where the Conditional compiler statement comes in to play. You can use the preprocessor if statement (#if) to wrap your using statements and isolate the code to your specific version. Using the same Sheet Set example, here’s a look at what that code would look like:

#if C3D2019
using ACSMCOMPONENTS22Lib;
#elif C3D2020
using ACSMCOMPONENTS23Lib;
#elif C3D2021
using ACSMCOMPONENTS24Lib;
#endif

This would be placed with the using statements at the top of the class file, which is part of your Core shared project. To describe what is happening, when the compiler is readying the file, it will examine your Conditional compilation statement and if it matches the #if statement, it will compile the contents. If you need to update your code for another release of the software, all you’ll need to do is add in another #elif statement to wrap the new AcSmComponent library for that release.

You don’t have to use this compilation statement at all, but it is a great way to isolate version specific code. Most of the code you can write for an Autodesk product should be version-agnostic. There will be some minor changes to the APIs over time and you’ll have to make accommodations for that in those instances, but for the majority of your code, it’s just a ‘nice to have’ item that helps future proof your code.

With this project setup for multiple CAD versions, you can bring any existing code into your Core or start on your next big project. Hopefully this will help you manage your projects and reduce the copies you make for each version of software.

Register now for AU2020

So many things have changed this year, due to the COVID pandemic. And Autodesk University was definitely no exception. Earlier this year, the decision was made to make “AU2020” a fully digital event with a later revelation was that the event will also be free to attend.

Earlier this week, registration went live. If you have never been to AU before, this year is definitely the year for you. All class sessions will be on-demand, which means you won’t need to pre-register to attend. Once AU begins, you will be able to pick a class and start it whenever you like. All of the traditional live events will still happen, such as the Key Note speeches. There will even be live round-table and forum-style discussions. And, so that you don’t miss out on that key interaction with the presenter(s) of your favorite classes, there will be live Q&A ‘office hours’ scheduled so that you can ask all the questions you have.

While you’re registering, make sure to check out the almost 800 available class sessions. Don’t forget, our own Tom Richardson will be presenting a class called Don’t be a Block Head, Make it a Dynamic Experience, and I will be presenting a class called There’s more to the Sheet Set Manager than the Sheet. We both look forward to seeing you around the virtual halls of AU2020 this year!

2020 AUGI Salary Survey

Thank you to Melanie “Mistress of the Dorkness” Stone, AUGI Salary Survey Manager for supplying the below information to us. Please help out and visit the survey to provide anonymous data to AUGI.

Since 2002, AUGI has been collecting and publishing data annually from it’s members. Regarding salaries, job security, job satisfaction, education levels, markets served, hiring trends, etc.  In addition to the basic career questions, our survey ends with what we refer to as Hot Topic questions, usually with regard to hardware or other technology adoption.

This year, our final questions will be focusing on workload and technology issues spurred by the pandemic.  As always, if you have been laid off or put on reduced hours during the year, we ask that you respond to the salary questions with your last fulltime data to provide current industry valuations. There are questions dealing with workload and employment changes, after that point, to see how the industry is shifting throughout the year. 

https://www.surveymonkey.com/r/AUGI2020 This is the link to the current (anonymous) survey, and you can also find the published results in the AUGIWorld Magazine archives, or on the Salary Survey Archive page.  https://www.augi.com/surveys-polls/salary/survey-archives

Create a Button that Runs a Dynamo Script

One of the newest features of Civil 3D 2021 is the integration of Dynamo. Out-of-the box you can find the Dynamo tools on your Civil 3D Manage tab of the ribbon.

The default buttons, located on the Manage tab.
The Visual Programming panel is located on the Manage tab of the ribbon.

Clicking on the Dynamo button will take you to the Dynamo scripting environment, while clocking on Dynamo Player will take you to the Dynamo Player window.

The Dynamo player window.

In this window, you can change the folder to look for .dyn files (the native file type for dynamo graphs), open the currently selected folder in Windows Explorer or Refresh the current folder contents. This interface can be detrimental to the average user, if they don’t understand how and where your dynamo graphs are being stored. To get around this, you can create your own command buttons that can call a specific dynamo graph.

The CUI Command settings.
The command portion of the CUI dialog box.

When creating a new command in the CUI, insert “_AeccRunDynamoScript ” in the Macro line. Make sure to add a space after the command. After the space, add a path and dynamo file name, using the / path separator. Be sure to enclose the path in double quotes if there are any spaces. Add one more space at the end of the line.

With this new button, a user will not have to open a dialog to choose a script or even know where those files are stored.

Minimize burnout through Productivity.

In the AEC industry today, for an organization to continue to be competitive, they must grow.  Growth however is no longer a function of adding people organically, it’s through acquisition OR, I believe, by doing more (hint, productivity) with the people you have.  Increasing billings through more projects.  This leads to organizations pushing their team members to either work harder OR, hopefully, work smarter.

Unfortunately too many believe the only way to get more done is to work more and work harder.  This inevitably leads to burnout in the workplace and unfortunately is not always addressed in our industry. Different people respond to this pressure differently, but I think everyone would agree that it brings down the morale of team members and in the long run negatively affects the organization.

I believe that if organizations of all sizes focused more effort on initiatives that helped their team members be more productive through “proper” and focused training of the tools and software that the organizations utilize, and look at the use of more targeted technology they would see benefits that far outweighed the typical response to this need for growth. Productivity should be the paramount goal of any organization.

Productivity is defined as the effectiveness of productive effort, especially in industry, as measured in terms of the rate of output per unit of input. Learning to do a task that normally takes 30 minutes, in 15 minutes is being productive.

The problem lies in how to effectively train people to be productive, that is economically feasible for an organization and that results in actual productivity gains. I’m not going to pretend or lie and say I know the answer. I don’t have an answer of how it should be done or what is best, there is no magical answer, at least not that I’ve found. I can say that I’ve seen organizations that have successfully implemented small things and I have had success with a few methods I’ve tried over the years, things that, over time, have made big strides in increasing users productivity and in turn the organizations productivity. (now that everyone is an expert in Teams meetings and Zoom meetings virtual training is easy also!)

  • Assessments of users, teams, and groups to determine areas of improvement. You need to understand where you are. Just starting to throw training at users is not always beneficial and can be frustrating or a turn off for users.
  • Short targeted training sessions based on assessments, of only those that need a specific area of training, that are scheduled, required, and consistently done are most effective.
  • Consistent follow up with users.
  • Involvement of users in the process. Ask for input, have specific users present to other groups or to an entire office.
  • Consistent follow up with users.
  • Special training sessions, bring in a subject matter expert from another organization.
  • Consistent follow up with users.
  • Talk to vendors and have them bring in an SME for a specific tool, workflow etc…
  • Train a specific group of users that become trainers for other groups of users.
  • Consistent follow up with users.
  • Incentivise outside learning of users on their own. Reward them for training others.
  • Utilize online resources (there are a plethora of free resources)
  • Did I mention consistent follow up with users?

Do you see a pattern? I don’t know who first said it, but CONSISTENCY IS KING. You will find that, over time, users not only are more receptive, but they will look forward to and enjoy these training sessions. Buying them a few pizza’s now and then or some sandwiches also helps!

Another trick that I’ve seen done at some organizations, is changing it up and thinking outside of the box. Surprise your group every now and then with something of benefit that has nothing to do specifically with design or production. Maybe do an excel training, or how to effectively research on the internet, or maybe highlight (if you have willing participants) a specific team members talent for cycling or working out. The point is to make it an environment that fosters learning & engagement, which, in turn, leads to productivity.

AUTODESK proving my point!

Autodesk University 2020 – Call for proposals

There have been sweeping changes this year due to COVID-19, and even AU is not immune (pun intended). This year, Autodesk University will be held virtually. Which means that most of the sessions will be pre-recorded with scheduled “office hours” for live chats with many of the presenters.

If you have something you’d like to present, the call for proposals is now open, as well. You can click here to submit your proposal and you have until June 22, 2020. Community voting for proposals starts on June 1st through July 13th. If you submit a proposal, you should be informed of your selection in August.

Another change being made this year, AU will be introducing a new presentation format, called Articles. You can choose to write your presentation and have it published on the AU website, instead of giving a spoken presentation. For those of us that aren’t public speakers, this could be a great new way to express ourselves, our ideas and our knowledge to a wider group of people, outside of our immediate peer groups. The process for submitting an article is the same as for submitting a spoken presentation. If you have a topic you’d like to write about, check out the call for proposal website at https://www.autodesk.com/autodesk-university/conference/call-for-proposals.

See you, virtually, at AU this year!

Create Survey Points Groups in your Survey Database

One of the benefits of the survey database is having your point data outside of your drawing, where you can access and reference it from any working drawing. The flip-side to that is point group creation can be a little more painful than the process for in-drawing point groups. Typically, while working on the Survey tab and in a survey database (opened for editing), you would right click the the Survey Point Groups item and select the New… option. This gives you the New Survey Point Group dialog box, as shown below.

In this dialog box, you can give the group a name and a desciption. You can assign LandXML data as well, but this is not in the scope of this discussion. Below the Property data, you can see a list of all the points in your database. This is where most people go directly to. They see the Add to Group checkbox (on the left) and start going through the list checking the points they want to add.

If you notice, at the top of the dialog box, to the right of center, is this oddly placed button:

Tricky little Select Points button.

It’s hard to notice that it’s a button, since it is flush with the dialog box, and it’s in an odd place. You almost miss it if you’re not looking. This button will send you to the command line and give you a prompt for selecting the points you’d like to use.

Selection options are All, Numbers, Group, Selection.

You can then select All your points (but why would you?), a series of points based on Numbers (which can be written in ranges and group blocks, with commas separating each set, for example 300-350, 375-400), you can select an existing Point Group, or you can select points by picking them individually.

Once you’ve selected your points, you can click the OK button on the New Survey Point Group dialog box and the group will be added to the Survey Point Groups section in your survey database.

Free Friday: Xref Tools Extra

Doesn’t Everyone Like Free?

I like free. That’s why I decided to look into the free tools available on the Autodesk App Store. I was amazed at how many great tools were available there. Today I’ll be reviewing one of these free tools for this first Free Friday post.

Xref Tools Extra

This tool includes some features that I requested years ago. I only wish I had found it sooner. The feature in this toolset that most interests me is the ability to open an xref with the same visible window extent, layer state, and view rotation as the drawing that I currently have open. Add in the ability to transfer the current xref layer settings back into the original xref drawing, and you can see that this is a very powerful command.

After installing the Xref Tools Extra app and launching Civil 3D, the tools can be found in the XrefTools panel on the Plug-Ins ribbon in Civil 3D 2020 & 2021 or the Add-ins ribbon in Civil 3D 2019 and prior.

I’m going to cover the first command, XOPENX. It’s the yellow icon in the upper left corner of the XrefTools panel. The command launches a dialogue with some very useful options.

XOPEN Extra dialog box

The File Open section of the dialog (shown in red), gives you the options to:

  • Open as Read-Only
  • This option will open the selected xref in read only mode.
  • Open as another Read-Only drawing, if file is already opened
  • This option will open the selected xref in read only mode. If the drawing is already open, it will open the drawing a second time in the same session of CAD but in read only mode.
  • Keep Master drawing as active document
  • This option will open the selected xref (or switch to the drawing if already open) in the background but focus will stay on the current (Master) drawing.

The View and Layers section of the dialog (shown in purple), gives you the options to:

  • Apply View as set in Master drawing
  • After opening the selected xref drawing, this option will automatically set the view extent and rotation in the opened xref drawing to match the current view extent and rotation in the original (master) drawing.
  • Apply Layers properties as set in Master drawing
  • After opening the selected xref drawing, this option will set the layer state to match the layer state of the xref drawing as displayed in the original (master) drawing.

NOTE: You can individually choose which layer settings are applied to the xref once opened.

  • On
  • Freeze
  • Lock
  • Color
  • Linetype
  • Lineweight

The Display dialog with Nested Xrefs section of the dialog (shown in yellow), gives you the option to select a nested xref from a list of nested xrefs.

How the command works:

  1. Launch the XOPENX command using the ribbon or the command line.
  2. Select the options to be used for this instance of the XOPENX command then click OK.
  3. Once prompted, select an xref from the drawing.
  4. If an xref with xrefs is selected, you’ll be prompted to select an xref or nested xref from the list in the External References dialog then click OK.
  5. If prompted to confirm which drawing is opening, click Yes.
  6. If Apply Layer Properties was selected, read the LayerState alert then click OK.
  7. If linetypes applied in the source (Master) drawing are not available in the xref, you’ll be prompted with a list of linetypes that were missing in the xref. Click OK.

Now that you’ve seen the impressive XOPENX command, download Xref Tools Extra application and check out the other commands included in this tool set. Also stay tuned for the next Free Friday post.

Working from home amid a pandemic

As we’ve all, no doubt, had to adjust to the new normal of remotely working, social distancing and refraining from many of our favorite leisure pursuits and past-times, we are beginning to ask ourselves: When will this end?

I am not an expert in the matter and, I must admit, I don’t really follow the news very closely. My few sources for updated information every week have primarily been podcasts (I particularly like Science Vs, as it’s well cited and very ‘punny’), but I do occasionally venture to the CDC’s website to fact check what my colleagues have been telling me (especially when it’s some pseudo-science about holding your breath).

I started this post because I wanted to show my support to our community. I don’t really know what to say to that regard, I’m terrible at being empathetic or whatever. I know many of us are struggling with the isolation and the disconnection that the pandemic has brought, but we are all much stronger than we usually believe ourselves to be. Humankind has survived much worse for much longer, so we will make it through this. I know each individual situation may seem pretty bad, maybe even dire. If it is more than you think you can handle, reach out to me. I’m always available by Discord, email, text, phone or video call.

I feel confident in saying that the rest of the leadership team, along with myself, are here for you. If you need anything from us, do not hesitate to reach out. Don’t let this isolation get you down, because it will pass and one day we’ll all be out in groups again, hopefully with every one of us.

Design a site like this with WordPress.com
Get started