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.

Tell me about...

Copying Code Examples from the progeCAD Developer Reference