guoshun 发表于 2017-7-2 15:14:48

用Arx在下列类中怎样定义一个带有形参的Lisp函数

例如要i把 int sp3 (struct resbuf *rb) 定义成autolisp函数。

//----- ObjectARX EntryPoint
class CwcadApp : public AcRxArxApp {

public:
        CwcadApp() : AcRxArxApp() {}

        virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt) {
                // TODO: Load dependencies here

                // You *must* call On_kInitAppMsg here
                AcRx::AppRetCode retCode = AcRxArxApp::On_kInitAppMsg(pkt);

                // TODO: Add your initialization code here

                return (retCode);
        }

        virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt) {
                // TODO: Add your code here

                // You *must* call On_kUnloadAppMsg here
                AcRx::AppRetCode retCode = AcRxArxApp::On_kUnloadAppMsg(pkt);

                // TODO: Unload dependencies here

                return (retCode);
        }

        virtual void RegisterServerComponents() {
        }

       
        // Modal Command with localized name
        // ACED_ARXCOMMAND_ENTRY_AUTO(CwcadApp, gsMyGroup, MyCommand, MyCommandLocal, ACRX_CMD_MODAL)
        static void gsMyGroupMyCommand() {
                // Put your command code here

        }

        // Modal Command with pickfirst selection
        // ACED_ARXCOMMAND_ENTRY_AUTO(CwcadApp, gsMyGroup, MyPickFirst, MyPickFirstLocal, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET)
        static void gsMyGroupMyPickFirst() {
                ads_name result;
                int iRet = acedSSGet(ACRX_T("_I"), NULL, NULL, NULL, result);
                if (iRet == RTNORM)
                {
                        // There are selected entities
                        // Put your command using pickfirst set code here
                }
                else
                {
                        // There are no selected entities
                        // Put your command code here
                }
        }

        // Application Session Command with localized name
        // ACED_ARXCOMMAND_ENTRY_AUTO(CwcadApp, gsMyGroup, MySessionCmd, MySessionCmdLocal, ACRX_CMD_MODAL | ACRX_CMD_SESSION)
        static void gsMyGroupMySessionCmd() {
                // Put your command code here
        }

       
        // ACED_ADSFUNCTION_ENTRY_AUTO(CwcadApp, MyLispFunction, false)
        static int ads_MyLispFunction() {
                //struct resbuf *args =acedGetArgs () ;

                // Put your command code here

                //acutRelRb (args) ;

                // Return a value to the AutoCAD Lisp Interpreter
                // acedRetNil, acedRetT, acedRetVoid, acedRetInt, acedRetReal, acedRetStr, acedRetPoint, acedRetName, acedRetList, acedRetVal

                return (RTNORM);
        }
        static void gsMyGroupProjPathCfg(void) {//项目及程序路径
                CProjectPath dlg;
                dlg.DoModal();
        };
       
};

//-----------------------------------------------------------------------------
IMPLEMENT_ARX_ENTRYPOINT(CwcadApp)

ACED_ARXCOMMAND_ENTRY_AUTO(CwcadApp, gsMyGroup, MyCommand, MyCommandLocal, ACRX_CMD_MODAL, NULL)
ACED_ARXCOMMAND_ENTRY_AUTO(CwcadApp, gsMyGroup, MyPickFirst, MyPickFirstLocal, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET, NULL)
ACED_ARXCOMMAND_ENTRY_AUTO(CwcadApp, gsMyGroup, MySessionCmd, MySessionCmdLocal, ACRX_CMD_MODAL | ACRX_CMD_SESSION, NULL)
ACED_ADSSYMBOL_ENTRY_AUTO(CwcadApp, MyLispFunction, false)
ACED_ARXCOMMAND_ENTRY_AUTO(CwcadApp, gsMyGroup, ProjPathCfg, PrjPath, ACRX_CMD_MODAL, NULL) //项目及及程序路径

guoshun 发表于 2017-7-2 16:14:43

问题已解决

linyangxiaodong 发表于 2025-9-10 22:10:21

怎么解决的,还不会。
页: [1]
查看完整版本: 用Arx在下列类中怎样定义一个带有形参的Lisp函数