.NET

Reply
Valued Contributor
CommCorp
Posts: 97
Registered: ‎03-19-2007
Message 1 of 3 (5,176 Views)
Accepted Solution

VB.NET: Deleting Custom Properties using SheetSet Manager API in VB.NET

5176 Views, 2 Replies
10-29-2013 06:45 AM

I currently use code similar to Lee Ambrosius's 2009 AU handout that shows how to set/create custom properties.  It can be seen here http://adndevblog.typepad.com/autocad/2013/09/using-sheetset-manager-api-in-vbnet.html, search for the header 'Adding Sheet Set and Sheet Properties'.

 

I have now accumulated numerous unused custom properties in my sheet set.  I haven't been able to find a way to delete these additional custom properties.

 

Because I use multiple subsets with multiple sheets for printing, I would rather not have to go through all the sheets, store all the custom properties I need, destroy all the existing custom properties, and then re-create just the ones I need.

 

Any suggestions on how to delete individual custom properties would be helpful.

 

MEP 2012 with VB.NET

 

Thanks

ADN Support Specialist
Balaji_Ram
Posts: 660
Registered: ‎03-21-2011
Message 2 of 3 (5,142 Views)

Re: VB.NET: Deleting Custom Properties using SheetSet Manager API in VB.NET

10-30-2013 10:35 PM in reply to: CommCorp

Hi John,

 

Can you please try using "IAcSmCustomPropertyBag.SetProperty" and pass a null custom property value ?

 

Here is a sample code to remove a few custom properties

 

        sheetSetMgr = New AcSmSheetSetMgr

        Dim iterDb As IAcSmEnumDatabase
        iterDb = sheetSetMgr.GetDatabaseEnumerator

        Dim ItemDb As IAcSmPersist
        ItemDb = iterDb.Next

        sheetdb = ItemDb

        LockDatabase()

        Dim cBag As IAcSmCustomPropertyBag
        cBag = sheetdb.GetSheetSet().GetCustomPropertyBag()

        Dim enumeratorProperty As IAcSmEnumProperty
        enumeratorProperty = cBag.GetPropertyEnumerator()
        enumeratorProperty.Reset()

        Dim name As String = ""
        Dim customPropertyValue As AcSmCustomPropertyValue = Nothing

        enumeratorProperty.Next(name, customPropertyValue)

        Dim customPropNames As System.Collections.Specialized.StringCollection
        customPropNames = New System.Collections.Specialized.StringCollection
        customPropNames.Add("Test3")
        customPropNames.Add("Test6")

        Do While Not customPropertyValue Is Nothing

            If customPropertyValue.GetFlags() = PropertyFlags.CUSTOM_SHEETSET_PROP And customPropNames.Contains(name) Then
                cBag.SetProperty(name, Nothing)
            End If

            enumeratorProperty.Next(name, customPropertyValue)
        Loop

        UnlockDatabase()

 

Regards,



Balaji
Developer Technical Services
Autodesk Developer Network

Valued Contributor
CommCorp
Posts: 97
Registered: ‎03-19-2007
Message 3 of 3 (5,129 Views)

Re: VB.NET: Deleting Custom Properties using SheetSet Manager API in VB.NET

10-31-2013 05:28 AM in reply to: Balaji_Ram

Using the statement 'cBag.SetProperty(name, Nothing)' did the trick.

 

Thank You

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