Programming Overview of SDS (Solutions Development System)
SDS is an acronym for Solutions Development System, a C/C++ language interface compatible with the ADS® (AutoCAD® Development System) interface found in other CAD systems. SDS provides hooks into progeCAD, allowing you to create custom applications.
SDS communicates with the user and progeCAD via LISP (akin to the way that ADS works with AutoLISP® and other CAD systems). However, SDS greatly augments the capabilities found in LISP with a much more powerful command base that can also access the operating system. This allows you to create even more sophisticated custom solutions. And, because SDS applications are compiled, they are typically faster than LISP applications.
Migrating to SDS for progeCAD 7
SDS for progeCAD 7 is not binary compatible with SDS for progeCAD 6.x versions. For details, see Migrating SDS to progeCAD 7.
Prefixes to SDS Functions
If you're familiar with ADS, note that one primary difference between ADS and SDS is that most SDS functions have an sds_ prefix (except for special dialog-related SDS functions, which have the dlg_ prefix), whereas ADS functions have a variety of prefixes, such as ads_, acad_, and acrx_.
Functions Unique to SDS
SDS offers several additional capabilities beyond those available in ADS.
SDS Functions
Function | Description |
---|---|
sds_name_clear | Clears the entity name or selection set. |
sds_name_equal | Checks if two entity names or selection sets are equal. |
sds_name_nil | Checks if the entity name or selection set has been cleared. |
sds_name_set | Copies one entity name or selection set to another. |
sds_point_set | Copies a point from one variable to another. |
sds_progresspercent | Displays the percentage done in a progress bar. |
sds_progressstart | Starts the progress bar. |
sds_progressstop | Ends the progress bar. |
sds_readaliasfile | Loads the PGP file into progeCAD. |
sds_sendmessage | Sends a message to the progeCAD command line. |
sds_swapscreen | Flips the off-screen device context to the display. |
ADS Functions Not Supported by SDS
The following ADS functions are not supported by SDS: ads_arxload, ads_arxloaded, ads_arxunload, ads_ssgetx, ads_ssGetKwordCallbackPtr, ads_ssGetOtherCallbackPtr, adsw_acadMainWnd, and adsw_acadDocWnd.
Selection Modes
progeCAD supports the following selection modes:
progeCAD selection modes
Mode | Meaning |
---|---|
NULL | (none) Single pick point |
"B" | Box |
"C" | Crossing |
"CC" | Crossing Circle |
"CP" | Crossing Polygon |
"F" | Fence |
"I" | Implied |
"L" | Last |
"O" | Outside |
"OC" | Outside Circle |
"OP" | Outside Polygon |
"P" | Previous |
"PO" | Point |
"W" | Window |
"WC" | Window Circle |
"WP" | Window Polygon |
"X" | All |
Selection Modes Not Supported by progeCAD
progeCAD does not support the following selection modes found in other CAD systems: "G", ":?", ":D", ":E", ":N", ":S", ".", "#", "A", and "M".
SDS Return Codes
SDS functions return these request type codes:
Request | Code | Meaning |
---|---|---|
RSRSLT | 1 | Result is returned. |
RSERR | 3 | Error in evaluation; no result is returned. |
RQSAVE | 14 | progeCAD is saving the drawing. |
RQEND | 15 | progeCAD is exiting. |
RQQUIT | 16 | progeCAD is quitting. |
RQCFG | 22 | progeCAD is returning from the Config command. |
RQXLOAD | 100 | Load external functions. |
RQXUNLD | 101 | Unload the application. |
RQSUBR | 102 | External subroutine request. |
RQHUP | 105 | progeCAD is disconnected from the application. |
RQXHELP | 118 | Define help for the function. |
RTERROR | -5001 | An error has occurred. |
RTCAN | -5002 | User canceled the command by pressing Esc. |
RTREJ | -5003 | progeCAD rejected the request, probably due to invalid format. |
RTFAIL | -5004 | Link failure between SDS and progeCAD. |
RTKWORD | -5005 | Keyword returned from getxxx routine. |
RTNORM | 5100 | Request succeeded. |
Result buffer codes
Request | Code | Meaning |
---|---|---|
RTNONE | 5000 | No result. |
RTREAL | 5001 | Real number. |
RTPOINT | 5002 | 2-D point (x,y-coordinate). |
RTSHORT | 5003 | Short integer. |
RTANG | 5004 | Angle. |
RTSTR | 5005 | String. |
RTENAME | 5006 | Entity name. |
RTPICKS | 5007 | Pick set. |
RTORINT | 5008 | Orientation. |
RT3DPOINT | 5009 | 3-D point (x,y,z coordinate). |
RTLONG | 5010 | Long integer. |
RTVOID | 5014 | Blank symbol. |
RTLB | 5016 | Begin list. |
RTLE | 5017 | End of list. |
RTDOTE | 5018 | Dotted pair. |
RTNIL | 5019 | Nil |
RTDXF0 | 5020 | DXF code 0 (used only by sds_buildlist). |
RTT | 5021 | T (true) atom. |
RTRESBUF | 5023 | Result buffer. |