.NET

Reply
Active Contributor
btmsoftware
Posts: 38
Registered: ‎09-06-2007
Message 1 of 8 (593 Views)
Accepted Solution

List CAD Standards in a DWG in VB.NET

593 Views, 7 Replies
04-25-2012 01:03 AM

Hi there,

 

I'm quite new to .NET in AutoCAD, usual story, boss need somebody to do something, no time for trainings (yet), etc...  so please, bare with me :smileywink:

 

Here is the story. in an Acad plug-in, I need to get the list of standards associated to the current drawing

 

So far, I've got:

Dim nod As DBDictionary = tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead)

Dim id As ObjectId = nod.Item("AcStStandard")

 

I do get the object ID of the AcstStandard dictinary. So far so good

 

but then ???

 

Can't seem to find an object type to do the tr.GetObject(id, OpenMode.ForRead)

 

There's stuff for layouts etc... but not for standards.


TIA

*Expert Elite*
Hallex
Posts: 1,569
Registered: ‎10-08-2008
Message 2 of 8 (580 Views)

Re: List CAD Standards in a DWG in VB.NET

04-25-2012 06:01 AM in reply to: btmsoftware

Something like this may helps

 

Dim nod As DBDictionary = tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead)

Dim id As ObjectId = nod.Item("AcStStandard")

Dim dict as DBDictionary= tr.Getobject(id, OpenMode.ForRead)

 

Not tested though....

 

~'J'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Active Contributor
btmsoftware
Posts: 38
Registered: ‎09-06-2007
Message 3 of 8 (554 Views)

Re: List CAD Standards in a DWG in VB.NET

04-27-2012 12:46 AM in reply to: Hallex

Did the trick, thanx a lot

*Expert Elite*
Hallex
Posts: 1,569
Registered: ‎10-08-2008
Message 4 of 8 (552 Views)

Re: List CAD Standards in a DWG in VB.NET

04-27-2012 01:17 AM in reply to: btmsoftware

You're welcome Cheers :smileyhappy:

 

~'J'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Active Contributor
btmsoftware
Posts: 38
Registered: ‎09-06-2007
Message 5 of 8 (550 Views)

Re: List CAD Standards in a DWG in VB.NET

04-27-2012 01:21 AM in reply to: Hallex

Actually, I've got another one, related

 

Once I've done that, I get an xRecord with the data with the file name. The thing is that it's the original file path when the CAD standard file was attached.

 

However, it can (and it does happen alot with my users) that the files are moved around (the support path are changed in this case).

 

AutoCAd can resolve the new path from the support paths, however, I couldn't find any method to get this resolved path, do you know of one or do I have to loop thru all the support path and find the one i nwhich my file is found (with the risk that there might be multiple files with the same name in different paths, bad practicve I know but users....... ;-)

*Expert Elite*
Hallex
Posts: 1,569
Registered: ‎10-08-2008
Message 6 of 8 (545 Views)

Re: List CAD Standards in a DWG in VB.NET

04-27-2012 04:38 AM in reply to: btmsoftware

Do you want to get template file?

If so try this quick code:

           Dim db As Database = HostApplicationServices.WorkingDatabase
            Dim newPath As String = HostApplicationServices.Current.FindFile("acadiso.dwt", db, FindFileHint.Default)
            MsgBox(newPath)

 

~'J'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Active Contributor
btmsoftware
Posts: 38
Registered: ‎09-06-2007
Message 7 of 8 (522 Views)

Re: List CAD Standards in a DWG in VB.NET

04-28-2012 11:07 PM in reply to: Hallex

Unfortunately, it gives me an eFilerError

 

thing is that the CAD standard file is not in any support path defined in the AutoCAD options, it is in the same path than the drawing itself.

 

I guess I´ll have to implement my own FindFile to include the drawing´s path in it. Thanx ofr the help anyways

 

Active Contributor
btmsoftware
Posts: 38
Registered: ‎09-06-2007
Message 8 of 8 (480 Views)

Re: List CAD Standards in a DWG in VB.NET

05-28-2012 11:57 PM in reply to: btmsoftware

Made my own stuff to look into the active drawing's path and in the support paths

 

Here it is, for those looking for a similar solution

 

' Takes a file name (without path) and returns the 1st dull file name (with path) in which the file is found
' Return empty string if not found

Private Function getPath(name As String) As String Dim Result As String = "" Dim sPath As String Try Console.WriteLine("Looking for " & name) ' Getting active drawing path sPath = New FileInfo(Application.DocumentManager.MdiActiveDocument.Name).Directory.FullName Console.WriteLine(" in " & sPath) sPath = Path.Combine(sPath, name) If File.Exists(sPath) Then Result = sPath Console.WriteLine(" Found") return Result Else Console.WriteLine(" Not found") End If ' Getting all support paths in an array Dim pathPrefs As AcadPreferencesFiles = Application.Preferences.Files Dim supportPaths() As String = pathPrefs.SupportPath.Split(";") For Each sPath In supportPaths Console.WriteLine(" in " & sPath) sPath = Path.Combine(sPath, name) If File.Exists(sPath) Then Result = sPath Console.WriteLine(" Found") Return Result Else Console.WriteLine(" Not found") End If Next Catch ex As Exception Result="" System.Windows.Forms.MessageBox.Show(ex.ToString, "My App", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Stop) End Try Return Result End Function

 

You are not logged in.

Log into access your profile, ask and answer questions, share ideas and more. Haven't signed up yet? Register

Announcements
Are you familiar with the Autodesk Expert Elites? The Expert Elite program is made up of customers that help other customers by sharing knowledge and exemplifying an engaging style of collaboration. To learn more, please visit our Expert Elite website.

Need installation help?

Start with some of our most frequented solutions to get help installing your software.

Ask the Community