This is Fenton Webb's Typepad Profile.
Join Typepad and start following Fenton Webb's activity
Join Now!
Already a member? Sign In
Fenton Webb
San Francisco
Recent Activity
Transactions allow you to open the same object for write, multiple times. Normal open for write does not allow this, you get an eWasOpenForWrite error message. Layered rollbacks are when you nest Transactions, you can undo a pending transaction without affecting the encapsulating transation
Correct, you should consider this fact when coding this way
Hey Steve yes, there was a reason for it. C was a prototype version of AutoCAD which was released as a preview, but not yet rolled into the main line.
The Export to FBX will only work if the drawing loaded can actually be exported as FBX. try the same commands in normal AutoCAD with the same DWG file
Hey Blackbox! sorry, I was on vacation yesterday. I can see that the CUIX copies can be annoying. The reason they are copied is so that users can edit them. if something isn't being cleaned up on bundle uninstall, then that's something that needs to be addressed. However, I do believe that 2013/2014 versions do a better job of cleaning up, and even the latest sp of 2012 does also - have you checked? Feel free to open a DevHelp online request to discuss/solve these issues.
Toggle Commented Jun 12, 2013 on Autodesk Autoloader White Paper at AutoCAD DevBlog
Hey Blackbox! the Autoloader does not implement any custom code, it merely brings together existing APIs together to standardize their access. What you are seeing with the copying is a standard per-user way that AutoCAD deals with those who change their UI. AutoCAD should remove all references of partial CUIXs within a bundle when the bundle is removed. if it's not, please log a DevHelp and we'll get to it ASAP. Also, please do tell how you would prefer it to work, bearing in mind the above, and I'll gladly present it to engineering for review... #WaitingForIdeas
Toggle Commented Jun 10, 2013 on Autodesk Autoloader White Paper at AutoCAD DevBlog
that was me, not Stephen by the way - he was logged into my machine by accident :-)
Toggle Commented Jun 7, 2013 on Autodesk Autoloader White Paper at AutoCAD DevBlog
for your second comment, you don't need to call acdbModifyPointCloudDataView() as the filter is already applied. My call to onModified will queue the graphics refresh at the next asynchronous graphics update.
Hey Xerion yes, you are right, the snapping will be disabled. To get round the problem, simply close the point cloud after the acdbResetPointCloudDataView() then reopen before acdbModifyPointCloudDataView()
Hi Christian as I have mentioned before in my Tools for the Job (starting at Part 3 Performance http://adndevblog.typepad.com/autocad/2012/07/the-right-tools-for-the-job-autocad-part-3.html) don't use StartTransaction() for utility functions. The overhead for calling StartTransaction() is huge, instead, use StartOpenCloseTransaction() My personal preference is to use Open/Close directly.
Hey Christian Actually, in this case it's probably over kill - that code was left over from the code that I ported this sample from. Apologies there... That said, yes, all ObjectID's remain 'alive' in the DB even after being erased. That's because the operation can be undone, redone, and undone again - so it's much more efficient to store an 'erased' flag rather than the whole object in the undo filer
Hey Loic! you are absolutely right, regenAbort() informs you when you should not waste anymore time creating your geometry. Thanks for the reminder, it seems you got a lot out of this one which is nice to hear
Hey Craig! the problem with being efficient is that it usually exposes you to the lower level parts of the API. The .NET API wraps the ObjectARX API, and that low level exposure is bringing up ObjectARX class names such as AcDbBlockReference. You can use the RXClass object to extract the ObjectARX class name of a .NET equivalent so that you bypass this problem - e.g. something like: RXClass blockRefRX = RXClass.GetClass(typeof(BlockReference));
this is better http://adndevblog.typepad.com/autocad/2013/04/autoloader-example-for-invoking-a-startup-command-in-autocad.html
Toggle Commented Apr 22, 2013 on Modify Ribbon at AutoCAD DevBlog
removing the less than and greater than signs (sigh) Components Description="Any CPU DLLs" RuntimeRequirements OS="Win32|Win64" Platform="AutoCAD|AutoCAD*" SeriesMin="R19.0" SeriesMax="R19.0" / ComponentEntry AppName="MyDotNetApp" Version="1.0.0" ModuleName="./Contents/Windows/R19.0/MyApp.dll" Commands Command Local="_MyAppStartupCmd" Global="MyAppStartupCmd" StartupCommand="True" / /Commands /ComponentEntry
Toggle Commented Apr 22, 2013 on Modify Ribbon at AutoCAD DevBlog
Hey BlackBox, you should not modify the Ribbon from initialize()... that function is called too early in the startup if called to load on startup. Best is to use the StartupCommand attribute on the Command element... This will call your own initialize command when AutoCAD has fully initialized. e.g.
Toggle Commented Apr 22, 2013 on Modify Ribbon at AutoCAD DevBlog
OK, got ya. There's always a Model Space selection filter remember... http://exchange.autodesk.com/autocadarchitecture/enu/online-help/ARCHDESK/2012/ENU/pages/WS1a9193826455f5ff2566ffd511ff6f8c7ca-4067.htm
Hey Tony! appreciate your reply. The thing is, if it's an object in AutoCAD, you normally use ObjectID or Handle to compare if they are the "same object" you see... You can't rely on the memory address, because sometimes the memory manager moves the object, that's one of the reasons why we have an transaction/open close mechanism.
Hey Tony! it's long thread here, so let me ask you - are we talking about simple object comparison now? if not, please ignore this post, if so... ...then you are right, if( a.UnmanagedObject == b.UnmanagedObject) {...} **is** much faster. However, what is the comparison you are trying to do exactly? You are comparing 2 memory addresses as being the same - Yes, it's the same physical object - but what does that achieve? More likely is that you want to compare the data between 2 objects as being the same, not the address that they reside in memory. Generally speaking, the Equals operator compares if the 2 objects have the same data, not that they are the same address in memory, testing the UnmanagedObject is of no use. I haven't checked the details of the boxing/unboxing that you talk about but it's probably related to the .NET property handling. Correct, how the equals operator works is down to the implementer.
it's in the inc folder of the ObjectARX SDK.
Hi Loic no problem. One last thing, if you use DrawJigs, then the same rule applies. If you use AcEdJig, then you should check inputPending() for long iterations in your code - otherwise it's handled by AutoCAD automatically.
Hi Mono you don't add vbLf to a typedvalue string, you create new typed values... e.g rb.Add(New TypedValue(5005, "_.AECTOACAD"); rb.Add(New TypedValue(5005, "_bind"); rb.Add(New TypedValue(5005, "_no"); rb.Add(New TypedValue(5005, AecToAcadFileName); acedCmd(rb.UnmanagedObject);
Hi Loic yes, it's true!! You can also check inputPending() for AutoCAD side user interaction checking.
Image
by Fenton Webb I was totally stunned with awe when an engineer at Autodesk showed me the AutoCAD 2014 Easter Egg that they had implemented as a nice surprise for everyone, basically geared to show off the latest 3D graphics engine. After some rather convoluted keystrokes and mouse movements (it... Continue reading
Posted Apr 1, 2013 at AutoCAD DevBlog
Hey Spider there is a lack of documentation because the design is not yet finalized. Also, as you mention, there is no schema as yet, the idea being to allow developers to utilize the same XML package for their own App settings. Finally, you should check out this link http://adndevblog.typepad.com/autocad/2013/01/autodesk-autoloader-white-paper.html