//-----------------------------------------------------------------------------
//----- acrxEntryPoint.cpp
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#include "resource.h"
#include <acedCmdNF.h>
//-----------------------------------------------------------------------------
#define szRDS _RXST("")
//-----------------------------------------------------------------------------
//----- ObjectARX EntryPoint
class CArxProject8App : public AcRxArxApp {
public:
CArxProject8App () : AcRxArxApp () {}
virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
AcRx::AppRetCode retCode = AcRxArxApp::On_kInitAppMsg (pkt) ;
return (retCode) ;
}
virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
AcRx::AppRetCode retCode = AcRxArxApp::On_kUnloadAppMsg (pkt) ;
return (retCode) ;
}
virtual void RegisterServerComponents () { }
static void RivilisMyLine () {
AcGePoint3dArray pts;
ads_point pt;
// Запрашиваем поочередно точки для команды
while (acedGetPoint((pts.length() == 0) ? NULL : asDblArray(pts.last()),
L"\nУкажите очередную точку: ", pt) == RTNORM) {
pts.append(asPnt3d(pt));
}
// Готовим список для команды
resbuf *cmdbuf = acutBuildList(RTSTR, L"_LINE", RTNONE);
for (int i = 0; i < pts.length(); i++)
{
AddToResbufList(cmdbuf,
acutBuildList(
RTSTR, L"_none", // Убираем привязки
RT3DPOINT, asDblArray(pts[i]), // Задаём очередную точку
RTNONE)
);
}
cmdbuf = AddToResbufList(cmdbuf,
acutBuildList(RTSTR, L"", RTNONE)); // Завершение команды
acedCmdS(cmdbuf);
acutRelRb(cmdbuf);
}
// Функция добавляет к списку новый хвост
static resbuf *AddToResbufList(
resbuf *head, // Голова списка
resbuf *tail // Новый хвост списка
)
{
if (head == NULL) return tail;
resbuf *rb = head;
while (rb->rbnext) rb = rb->rbnext;
rb->rbnext = tail;
return head;
}
} ;
//-----------------------------------------------------------------------------
IMPLEMENT_ARX_ENTRYPOINT(CArxProject8App)
ACED_ARXCOMMAND_ENTRY_AUTO(CArxProject8App, Rivilis, MyLine, MyLine, ACRX_CMD_MODAL, NULL)