The Autodesk Public Symbol Server (http://symbols.autodesk.com) now contains the symbol files for AutoCAD® 2014. If you are not familiar with AutoCAD symbols or the public symbol server, this blog post by Kean might help.
It is common knowledge that Autodesk has invested heavily into building meaningful cloud services for the last three years. We have several popular cloud services like AutoCAD WS and those that fall under the umbrella of Autodesk 360.
But today, I will blog about an exciting new applications that Autodesk has been working on for some time and is not very well known even within the organization but for a few CEO staff and the crack developer team building it in secret, because of its potential to change the way engineering projects are managed for ever.
Before I dive into the details of the project, let me ask you what is your biggest frustration when you try to manage a large scale engineering project like that Construction of a Dam, Designing and implementing a Manufacturing Assembly line?
I would bet some serious money that more often than not, it is the lack of ability to predict what could go wrong. The more complex and more time consuming the project, the greater the probability that something could seriously go wrong and cost the project time and money. Up until now, there was no way to mitigate or completely eliminate the chance of going wrong. It can be controlled to a certain extent by employing experienced project managers and advanced project simulation environments.
Well, now you have a much better choice as Autodesk has once again risen to the challenge! Autodesk has reached beyond cloud platforms into the stratosphere to bring you a prediction model that not only predicts to an accuracy of 99.99999999% the chance of something going wrong but also visually illustrates what will go wrong.
I am happy to announce the Autodesk Orbital Movement Epoch Notification System (Autodesk OMENS for short ). This is a cloud based system that *predicts* how long your projects would take and what will go wrong with a great degree of accuracy:
For this Autodesk uses technology that is very much at the frontier of research. The concept is simple enough. Physics shows that the faster an object travels, the slower the time is for that object. This is called Time Dilation and has been a well researched issue since Einstein. What is not as well known though is that there are real world examples of time dilation that is actually being applied in what is today a very common occurrence: GPS Satellites. Satellites travel at incredible speeds and time for a satellite actually is slower than it is on Earth.
Some smart Autodesk engineers (cannot name them for legal reasons) hit upon a novel use of the time dilation phenomenon. We are aware that satellites can measure (with great accuracies) features on earth. Combine that with time dilation and we have a very accurate predictor.
Since time is slower on a satellite and moves faster on earth, a satellite receives images of a time that is yet to pass on the satellite’s clock. i.e., the satellite is essentially looking into the future. The faster the satellite moves, the further it can look into the future. However, if the satellite has to look at a the location of a single project all the time, it has to be geostationary. At the current locations of a standard geostationary satellites however, the time dilation is a fraction of a second. So if we want the satellite to look, at days, weeks, months or even years ahead, the satellite has to orbit further away from earth and will need to power themselves and not depend on earth’s gravity to power them.
This again poses another problem. The further the satellite from the earth, the greater the optics has to be to watch a project on Earth. So Autodesk is working with several research organizations right now building state of the art research optic equipment and a propulsion mechanism like warp drive to speed up the satellites to the speeds we need.
As you can imagine, these technologies are very bleeding edge and proprietary and so I cannot reveal a lot more at this stage. However, I can say that we have had some successful trial runs and have satellites in orbit (a joint venture between, Autodesk and certain public-private organizations) for the last few months that can predict the events that would occur a day in advance. Though this might not seem like much right now, it is a start and we hope to deploy more satellites in the near future that could predict events a couple of months in advance. The plan is to provide the OEMNS service for free with limited predictability (a couple of days in advance) and provide the full capabilities as a part of Autodesk’s subscription services.
We hope to be able to demonstrate this at AU this year. However, it is very likely we will invite a limited set of third party users to try out the service before then.
The trials should start in a few weeks. If you are interested in participating in these trial runs, please leave a comment below with your email ID/contact details and we will contact you shortly.
Have you downloaded and installed AutoCAD 2014 yet? If you did, you will notice a new set of security features in AutoCAD that will not let you load custom applications that are not in a secure, trusted path. This behavior is controlled with SECURELOAD and TRUSTEDPATHS settings. The easiest thing to do would be to install your applications as Application bundles as the bundle paths are automatically treated as trusted paths.
If this is not an option for you, you could try digitally signing your application. For this you will need a digital certificate from a well know certificate authority. AutoCAD 2014 will load digitally signed applications even if they are not in a trusted path.
One note for .NET developers. Digitally signing your application is different from strong naming your applications. Here is a very informative FAQ on the differences.
This problem only occurs when we have multiple projects in a VS 2010 solution with a mix of C++ and .NET projects in the solution. Specifically, if we have a .NET project as an active project and we configure the debugger to launch AutoCAD, the debugger will launch AutoCAD from the active .NET project. The exception occurs only when the debugger is launched from a .NET project. It does not occur if the debugger is launched from the C++ projects.
The exception will look something like "Managed Debugging Assistant 'PInvokeStackImbalance' has detected a problem in..."
According to Microsoft, this issue occurs because of changes in interoperability services in .NET 4.0 compared to previous version (.NET 3.5). Specifically, this behavior results from an effort "To improve performance in interoperability with unmanaged code, incorrect calling conventions in a platform invoke now cause the application to fail. In previous versions, the marshaling layer resolved these errors up the stack".
According to Microsoft, here are the recommendations when this exception occurs:
Debugging your applications in Microsoft Visual Studio 2010 will alert you to these errors so you can correct them.
If you have binaries that cannot be updated, you can include the <NetFx40_PInvokeStackResilience> element in your application's configuration file to enable calling errors to be resolved up the stack as in earlier versions. However, this may affect the performance of your application.
For more information, please take a look at the documentation for "Platform invoke" feature under "Interoperability" section in the following link:
This is possible using the B-Rep API. The code snippet below illustrates how you can find the intersections of a linear entity ( LINE, XLINE or RAY ) with an entity represented using ACIS (that is a SOLID, REGION, or BODY).
// This is command 'INTSOLID'
AcDbEntity * pEnt;
AcDbEntity * pLinearEnt;
ads_name en ;
ads_point pt ;
// User picks a line
if ( acedEntSel (_T("\nSelect a line: "), en, pt) != RTNORM )
You might have noticed that on occasion the "acdbHostApplicationServices()->workingDatabase()->getFilename( pFileName )" returns the name of the temporary save file rather than the name of actual file that is open. This is as designed.
AcDbDatabase::originalFileName() function retrieves the file name under which the drawing is originally opened. In addition, AcApDocument::fileName() function also can retrieve the actual file full path.
The LWPOLYLINE (or light weight polyline) will typically have multiple coordinates and it is not easy to modify these vertices. What is the easiest way to access specific coordinates in a LWPOLYLINE and modify it?
The following lisp code demonstrates an easy way. The lisp code snippet increments the Y values of the LWPOLYLINE vertices by 5 units:
(defun Test (e ed / i vt)
(setq i 0)
(repeat (length ed)
(if(=(car(nth i ed))10);if item is a vertex
(setq vt (cdr(nth i ed))); get vertex values
(setq X (car vt)); get the x value
(setq Y (cadr vt)); get the y value
(setq Y (+5 Y)); increment the Y value by 5 units
; replace the old y value with the new y value
(setq vt (subst Y (nth1 vt) vt))
; update the entity definition with new vertex information
Consider this: You have a .NET routine that takes some time to complete. While this routine runs, you decide you have had enough of the waiting and would like to stop this routine and return to the command prompt when the user presses the ESCAPE key. Is there a way to do this?
The HostApplicationServices.UserBreak method allows the application to check the escape key and take the appropriate action.
The code below shows this approach. A long process is started in a simple loop that calls thread sleep. On each iteration the code checks the current HostApplicationServices to see if the escape key was pressed. If it was pressed the code throws an exception where the program can finish gracefully.
Using AcDbDatabase::readDwgFile(), you read several drawings into memory. With ads_entget() you try to get a resbuf of some DXF-values. But for most databases it returns NULL, while returning the correct value for some random databases. If ads-functions can be used on in-memory drawings, how do you direct the function to the correct drawing?
The short answer is, you cannot.
Some ADS functions might work with objects in other databases in some circumstances, but that is not by design. Therefore, you should not rely on of ADS style functions in such a case.
If you want to work on objects in databases that are not loaded into the AutoCAD editor, then you cannot safely use the ADS functions; you'll need to usenon-ads functions such as the methods in the various AcDb classes.