<?xml encoding=”UTF-8″>By Augusto Goncalves
This could be done by manipulating the AutoCAD registry directly, or by using the AutoCAD Preferences ActiveX object. Note that if you make a change in the registry directly, those changes will not affect the current running AutoCAD session. However, the ActiveX Preferences object exports all the AutoCAD preferences properties through an interface that you can use in VBA / VB or C++ / MFC applications. Below is sample code snippets (in VB and C++) which appends a new path to the existing AutoCAD support path.
Below you can find a VB and C++ code sample.
<font color="#0000a0">Public</font> acadApp <font color="#0000a0">As</font> <font color="#0000a0">Object</font> <font color="green">' AcadApplication </font>
<font color="#0000a0">Public</font> acadPrefFiles <font color="#0000a0">As</font> <font color="#0000a0">Object</font> <font color="green">'AcadPreferencesFiles</font>
<font color="#0000a0">Sub</font> f_preferences()
<font color="#0000a0">On</font> <font color="#0000a0">Error</font> <font color="#0000a0">Resume</font> <font color="#0000a0">Next</font>
<font color="#0000a0">Set</font> acadApp = GetObject(, "AutoCAD.Application")
<font color="#0000a0">If</font> Err <font color="#0000a0">Then</font>
Err.Clear
<font color="#0000a0">Set</font> acadApp = CreateObject("AutoCAD.Application")
<font color="#0000a0">If</font> Err <font color="#0000a0">Then</font>
MsgBox Err.Description & " " & Err.Number
<font color="#0000a0">Exit</font> <font color="#0000a0">Sub</font>
<font color="#0000a0">End</font> <font color="#0000a0">If</font>
<font color="#0000a0">End</font> <font color="#0000a0">If</font>
<font color="#0000a0">On</font> <font color="#0000a0">Error</font> <font color="#0000a0">GoTo</font> 0
acadApp.Visible = <font color="#0000a0">True</font>
<font color="#0000a0">Set</font> acadPrefFiles = acadApp.Preferences.Files
<font color="#0000a0">Dim</font> strCurrentSuppPath <font color="#0000a0">As</font> <font color="#0000a0">String</font>
<font color="#008000"> ' set the current path to temporary variable</font>
strCurrentSuppPath = acadPrefFiles.SupportPath
<font color="#008000"> ' example: You want to add this </font>
<font color="#008000"> ' "c:test" path to the support path</font>
acadPrefFiles.SupportPath = strCurrentSuppPath & _
";" & "c:test"
<font color="#0000a0">End</font> <font color="#0000a0">Sub</font>
<font face="Courier New"><span><font color="#0000ff"><font>void</font></font></span><font color="#000000"> fSetSupportPath()</font></font>
{
IAcadApplicationPtr pApp = NULL;
IAcadPreferencesPtr pPref = NULL;
IAcadPreferencesFilesPtr pPrefFiles = NULL;
pApp = acedGetAcadWinApp()->GetIDispatch(TRUE);
pPref = pApp->Preferences;
pPrefFiles = pPref->Files;
_bstr_t strOldPath;
strOldPath = pPrefFiles->GetSupportPath();
//print old support path
acutPrintf(_T(“nOld Support path: %s”),
(ACHAR *)(_bstr_t)pPrefFiles->GetSupportPath());
//set the new support path
pPrefFiles->PutSupportPath(strOldPath + _bstr_t(“;c:\temp”));
}
catch(_com_error &es)
{
}

Leave a Reply