BlackBox Posted February 1, 2015 Posted February 1, 2015 Hey guys, sorry it's taken me so long to get back to this. It's been a grueling 60-70 hour past four weeks! Too much to respond directly to each, so to hit a few bullet points from what I've read.... Firstly, thank you CADTutor for your willingness to facilitate. You've always been a gracious host, and fostered a pleasant, and helpful community, and for that I thank you. To the comment on C3D offerings getting so few results, that is due to both the number of C3D users here (few compared to other forums), and even smaller number who develop for C3D here. The lack of response does not necessarily indicate the quality or effort that went into your offering, just that we need to attract more 'consumers' of such content. Autodesk Exchange is a world unto itself. A free app shall always sell better than a paid app. That said, offering at least one free app is a simple way of demonstrating the quality of your work from which others may then justify the purchase of your paid work. It's good to offer both, and up until now AE has been straight forward; you submit your work, they review and then publish. Each version release you're encouraged to submit an update. What's been missing until recently is the publisher's ability to quickly change price, modify content (they used to butcher the description formatting, URLs, etc; I still have some that I need to correct), which has changed. Now they're even introducing the ability to dole out concessions, etc. which is great. What happens if Autodesk decides to add a similar new feature that you've been offering same already (formally through AE, if not informally online)? This is a loaded topic, which I am not fully able to discuss at this time due to current beta NDA. If you're participating in beta, then you already know my thoughts on this. Now, I'm not privy to Sean's PM, but if like to think I have a good idea based on his comments thus far. I too would like to participate where I can, be it posting my 'please try this' new apps or app updates, or perhaps writing some content for those who might be interested in a first time offering, and don't know how to get started with .NET API, etc (Lee's already got LISP cornered! Haha)... Point is, I think there's potential here, and it will lend to the free market of ideas. Now, if you'll excuse me gents, the captivating Mrs. BlackBox looks like she could use some company sunbathing on our patio. *tips hat* Cheers Quote
SEANT Posted February 1, 2015 Author Posted February 1, 2015 Hey BB, I hoped you would become a participant. The Autodesk Exchange is still fairly young, all battles stories from the trenches will be useful information for those of us ready to join the fray. Quote
BlackBox Posted February 1, 2015 Posted February 1, 2015 Hey BB, I hoped you would become a participant. The Autodesk Exchange is still fairly young, all battles stories from the trenches will be useful information for those of us ready to join the fray. That is kind of you to say, Sean. Autodesk Exchange has been good to me, but is not without its troubles too. I'll certainly offer what I can by way of my personal experiences with publishing apps, as well as some observations made during beta once released from my NDA. There's also a small contingent of useful resources, tools, and memberships that others may find interesting or otherwise of value, like ArxDbg, MgdDbg, Visual Studio versions/configuration, etc who's umbrella extends into other forums here too (particularly .NET; which is currently combined with VBA forum, and may become more confusing?). Cheers Quote
Tyke Posted February 1, 2015 Posted February 1, 2015 Thanks Sean and BB, I can't offer a lot here but it's good to see that the two best members here have decided to join in. Your thoughts meet mine precisely. Keep up the good work. Ben Quote
BlackBox Posted February 1, 2015 Posted February 1, 2015 (edited) Thanks Sean and BB, I can't offer a lot here but it's good to see that the two best members here have decided to join in. Your thoughts meet mine precisely. Keep up the good work. Ben Methinks it would be in poor taste for me to accept the immense compliment you have paid me (Sean is entirely deserving, of course!), so instead allow me to simply say that I would not be where I am today, without the patience, and wisdom of those kind enough to have helped me along the way. [Edit] - "There are two ways of spreading light, to be the candle or the mirror that reflects it."- Edith Wharton Thank you, my friend. Cheers Edited February 2, 2015 by BlackBox Quote
BIGAL Posted February 2, 2015 Posted February 2, 2015 Seant just had a quick look and in the housing project there was around 90+ individual menu options doing all sorts of things, of note not general Autocad stuff. The one thing that I see missing from discussions here is the theme what actual industry are you aiming at ? Do you have a list of where its at module wise and a wish list this being important for outside ideas ? Quote
SEANT Posted February 2, 2015 Author Posted February 2, 2015 . . . . I can't offer a lot here . . . . I definitely don't believe that. As a young, and brand new forum, your contribution is exactly what's needed. Seant just had a quick look and in the housing project there was around 90+ individual menu options doing all sorts of things, of note not general Autocad stuff. The one thing that I see missing from discussions here is the theme what actual industry are you aiming at ? Do you have a list of where its at module wise and a wish list this being important for outside ideas ? I'd like to see that new forum hosting all sorts of threads related to the developmental process. From idea inception, to long term licensing issues. Threads could be created by users with ideas on what they'd like to see - Programmers querying users if they see value in there latest automation idea. The other, more language specific forums are great places to discuss the finer details of the routine. This new forum would be more macroscopic - its quite possible that lines of code never find their way into a thread. Quote
BIGAL Posted February 2, 2015 Posted February 2, 2015 Just threw together some ideas I have not included specific programs that are unique to a specific cad user CIV3D Simpler point style display method using a dialouge - BIGAL -completed Lable individualCIV3D points as text -BIGAL - height completed Rotation of individual CIV3D points - BIGAL - Completed Simpler surface display method using toolbars - BIGAL - completed Wish list CIV3D Simpler point style editing - BIGAL - small start General Civil design Autocad Add 2 levels modify text - BIGAL - completed Carpark layouts line work - BIGAL - completed Channel flow pipe and open drain flow calculator - BIGAL -completed Chevron lines for islands -BIGAL - completed Convert Civilcad to better Autocad dwg style - BIGAL -complete Cross fall lable % & 1in - BIGAL - completed Driveway create for intersecting with kerbing - BIGAL - completed Draw Pipe ends - BIGAL - completed Pram crossing for intersecting with kerbing - BIGAL - completed Simple pit - BIGAL -completed Text to xyz convert text to 3d point - BIGAL - completed Vehicle check looks for intersection/scraping - BIGAL -complete Wish list civil design Cross sections from excel Long sections from excel General Autocad Copy layout to another layout Goto as implied go to a specific layout by number - BIGAL - completed Plot layouts numerous methods - BIGAL - completed Move title blocks to 0,0 model & layouts - BIGAL -completed Point number bubble alpha & numeric - BIGAL - completed Quote
SEANT Posted February 3, 2015 Author Posted February 3, 2015 BigAl, looks like you have a nice suite of tools there. Given those, what do you think would be the best way to interact with a potential customer base? I suppose a post, in the Civil 3D forum, listing those tools, and stating your desire to develop them further. Perhaps that post in Civil 3D & LDD would contain a link to yet another posting in the Application Beta Testing forum. What part would that forum play? Obviously, nothing is written in stone. Not even written in damp clay. Maybe for a beta phase a suite is subdivided to better test every individual command.? Perhaps try to determine all the Acad versions supported. (I would be looking into that I don't have many versions of AutoCAD still loaded). Certainly it makes sense to address any issues listed by the testers. Maybe the post would poll customers for what they were willing to pay. I suspect that last issue will be a tricky part. I’d love to see the Application Beta Testing forum be the central area for customer/developer and developer/developer discussions on that topic. My general sense is that users (employee) will have a tough time getting the employers to put up significant cash. Could a price be set that the employee would pay themselves, to make their workday easier? Maybe some other method of generating cash for the developer? Could make for an interesting discussion. Quote
BIGAL Posted February 3, 2015 Posted February 3, 2015 Re software development we did a beta version for a particular task it was 10 minutes versus ours 10 seconds. The stumble point was they wanted more, happy to do and then the crunch we want to work all versions we have including pirate copies as an Autocad dealer at time no way! So it stale mated. Anywayot a couple of years later cold calling potential clients the matter of this program came up and the new company had bought out the old company, they proudly boasted about an old program that saved them so much time, my answer yeah I know I wrote it and we were never paid. The lesson from this is even beta software lock it up in some way and time bomb it. Another issue never trust anyone I found one of the staff here had a copy of a program, I never gave it to him one of my direct staff had forwarded something that was not meant to leave our unit, talk about 6 degrees of freedom. Quote
SEANT Posted February 4, 2015 Author Posted February 4, 2015 Damn, that's sound pretty ugly. It was a good pickup on your end to equate their use of pirated software to a customer that would not honor their contracts. It would suck to have found that out after several more months of program development. Quote
CADTutor Posted February 9, 2015 Posted February 9, 2015 Just moved this thread to the Application Beta Testing forum since it contains relevant information. Quote
SEANT Posted February 9, 2015 Author Posted February 9, 2015 Thanks, David. Here is where this thread belongs. Quote
Jeff H Posted May 19, 2015 Posted May 19, 2015 I wish this would pickup more traction and would be very useful. The only thing I could think off adding would be to testing add-in loader, remover etc..... type tool that loaded first then copied or deleted whatever files needed. User had UI to select to update, remove, etc... Quote
SEANT Posted May 20, 2015 Author Posted May 20, 2015 I wish this would pickup more traction and would be very useful. The only thing I could think off adding would be to testing add-in loader, remover etc..... type tool that loaded first then copied or deleted whatever files needed. User had UI to select to update, remove, etc... That’s interesting. A ‘Version Coordination’ program for long term beta development. Am I reading that correctly? That deserves some though. Substituting Dlls without the need for uninstall/reinstall would make the process easier on the tester. If the process could smoothed out and simplified, the general angst associated with using non-polished software would be diminished. Quote
Jeff H Posted May 20, 2015 Posted May 20, 2015 Here is something that I use at office and needs some additional functionality added but is not what was explained above but somewhat in same neighborhood. Quick summary is this goes plug-in folder and reads .loadconfig which tells it what directories to go and look for a .loaddata file. The .loadata file tells it what files to copy to its folder or overwrite if newer, then netload which dll's. So gives you chance to update files before netloaded and could be refactored to go online on exit to get updates, and delete from plug-in and update folder if user decides to remove. The .loadconfig file tells the loader where the .loaddata loaddata file <?xml version="1.0" encoding="utf-8" ?> <AddInLoaderData CopySubDirectories ="false" ExtensionFilter =".dll|.cuix|.mnr"> <LoadFiles> <LoadFile>HpadCad.App.dll</LoadFile> <LoadFile>HpadCad.SSM.dll</LoadFile> </LoadFiles> </AddInLoaderData> The xml file above basically tells it not to copy subdirectories, what extension a file must have to copy, and which files to netload. public class Loader { static readonly string loadDataFileName = "HpadCadAddInLoaderData.loadData"; static readonly string loadConfigFileName = "HpadCadAddinLoader.loadconfig"; private Dictionary<FileSystemInfo, SystemException> exceps = new Dictionary<FileSystemInfo, SystemException>(); private readonly Editor _ed; private readonly DirectoryInfo _netLoaderDirectoryPath; internal DirectoryInfo NetLoaderDirectoryPath { get { return _netLoaderDirectoryPath; } } public Loader() { _netLoaderDirectoryPath = new DirectoryInfo(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); } public void Load() { try { Copy(); } finally { foreach (var systemException in exceps) { //Ed.WriteMessage("\n{0} had {1]", systemException.Key.FullName, systemException.Value.Message); } } } private void Copy() { FileInfo loadconfigFile = GetFilePathFromAddinLoaderDirectory(loadConfigFileName); if (!loadconfigFile.Exists) { return; } var xconfigDoc = XElement.Load(loadconfigFile.FullName); var updateDirectoryAttribute = xconfigDoc.Attribute("UpdateDirectory"); if (updateDirectoryAttribute == null) { return; } var updateDirectory = ExpandDirectoryPath(updateDirectoryAttribute.Value); if (!updateDirectory.Exists) { return; } FileInfo updateDataFile = CombineFileNameAndDirectoryPath(loadDataFileName, updateDirectory); if (!updateDataFile.Exists) { return; } var xDataDoc = XElement.Load(updateDataFile.FullName); var copySubsAttribute = xDataDoc.Attribute("CopySubDirectories"); bool copySubs = false; if (copySubsAttribute != null) { copySubs = Convert.ToBoolean(copySubsAttribute.Value); } var extensionFiltersAttribute = xDataDoc.Attribute("ExtensionFilter"); var extensionFilters = new HashSet<string>(); if (extensionFiltersAttribute != null) { var filter = extensionFiltersAttribute.Value; if (!String.IsNullOrWhiteSpace(filter)) { extensionFilters = new HashSet<string>(filter.Split('|'), StringComparer.OrdinalIgnoreCase); } } exceps = CopyFiles(updateDirectory, NetLoaderDirectoryPath, extensionFilters, copySubs); foreach (var loadFile in xDataDoc.Descendants("LoadFile")) { var assemblyFI = GetFilePathFromAddinLoaderDirectory(loadFile.Value); Assembly.LoadFrom(assemblyFI.FullName); } } private Dictionary<FileSystemInfo, SystemException> CopyFiles(DirectoryInfo sourceDirectory, DirectoryInfo destinationDirectory, ICollection<string> extensionFilters, bool copySubDirectories) { var exceptions = new Dictionary<FileSystemInfo, SystemException>(); return CopyFiles(sourceDirectory, destinationDirectory, extensionFilters, copySubDirectories, exceptions); } private Dictionary<FileSystemInfo, SystemException> CopyFiles(DirectoryInfo sourceDirectory, DirectoryInfo destinationDirectory, ICollection<string> extensionFilters, bool copySubDirectories, Dictionary<FileSystemInfo, SystemException> exceptions) { if (!destinationDirectory.Exists) { try { destinationDirectory.Create(); } catch (IOException ex) { exceptions.Add(destinationDirectory, ex); } catch (SecurityException se) { exceptions.Add(destinationDirectory, se); } } foreach (var fi in sourceDirectory.GetFilteredFiles(extensionFilters)) { FileInfo newFile = new FileInfo(Path.Combine(destinationDirectory.FullName, fi.Name)); if (!newFile.Exists) { try { fi.CopyTo(newFile.FullName); } catch (IOException ex) { exceptions.Add(newFile, ex); } catch (SecurityException se) { exceptions.Add(newFile, se); } } else if (fi.LastWriteTimeUtc > newFile.LastWriteTimeUtc) { try { fi.CopyTo(newFile.FullName, true); } catch (IOException ex) { exceptions.Add(newFile, ex); } catch (SecurityException se) { exceptions.Add(newFile, se); } } } if (copySubDirectories) { foreach (var subDi in sourceDirectory.EnumerateDirectories()) { var tempDI = new DirectoryInfo(Path.Combine(destinationDirectory.FullName, subDi.Name)); CopyFiles(subDi, tempDI, extensionFilters, true, exceptions); } } return exceptions; } private DirectoryInfo ExpandDirectoryPath(string unExpandedPath) { return new DirectoryInfo(Environment.ExpandEnvironmentVariables(unExpandedPath)); } private FileInfo GetFilePathFromAddinLoaderDirectory(string fileName) { return new FileInfo(Path.Combine(NetLoaderDirectoryPath.FullName, fileName)); } private FileInfo CombineFileNameAndDirectoryPath(string fileName, string directoryName) { return new FileInfo(Path.Combine(directoryName, fileName)); } private FileInfo CombineFileNameAndDirectoryPath(string fileName, DirectoryInfo directoryInfo) { return CombineFileNameAndDirectoryPath(fileName, directoryInfo.FullName); } } Oh yeah will need this one public static class DirectoryInfoExtensions { internal static IEnumerable<FileInfo> GetFilteredFiles(this DirectoryInfo sourceDirectory, ICollection<string> extensions) { if (extensions.Count == 0) { return sourceDirectory.EnumerateFiles(); } return sourceDirectory.EnumerateFiles().Where(fi => extensions.Contains(fi.Extension)); } } What this allows me to do is to add a build to the solution that output folder is on the network and next time user starts autocad they will get latest build unless they have another instance running then will get it when that start next with no other instances locking files Quote
SEANT Posted May 21, 2015 Author Posted May 21, 2015 Thanks Jeff. I'll be sure to look into everything you posted above. A nice, natural progression, though not something I had previously considered. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.