admin 发表于 2024-3-14 20:10:35

[每日一码] 如何得到当前CAD打印设备列表及其他打印设置内容

#include "dblayout.h"
#include "acaplmgr.h"
#include "dbplotsetval.h"
#include "dbplotsettings.h"


// This is command 'MPLOTS'
void mplotzzmplots()
{
    AcApLayoutManager *pLayMan = NULL;
    pLayMan = (AcApLayoutManager *) acdbHostApplicationServices()->layoutManager();

    //get the active layout
    AcDbLayout *pLayout = pLayMan->findLayoutNamed(pLayMan->findActiveLayout(TRUE),TRUE);

    AcDbPlotSettings* pPlotSetting = (AcDbPlotSettings*)pLayout;
    char* mediaName;
    pPlotSetting->getCanonicalMediaName(mediaName);
    acutPrintf(" Media Name:%s", mediaName);

    char* styleSheetName;
    pPlotSetting->getCurrentStyleSheet(styleSheetName);
    acutPrintf(" StyleSheet Name:%s", styleSheetName);

    char* plotCfgname;
    pPlotSetting->getPlotCfgName(plotCfgname);          // Output pointer to name of configured system or PC3 plot device
    acutPrintf(" PlotCfg Name:%s", plotCfgname);

    //get the PlotSettingsValidator
    AcDbPlotSettingsValidator *pPSV =NULL;
    pPSV = acdbHostApplicationServices()->plotSettingsValidator();
    //refresh the Plot Config list
    pPSV->refreshLists(pLayout);

    //get all the Plot Configurations
    AcArray< const char * > mDeviceList;
    pPSV->plotDeviceList(mDeviceList);

    acutPrintf(" Plot Configuration List :");
    int nLength = mDeviceList.length();

    char* localeName;
    pPSV->getLocaleMediaName(pLayout, 0, localeName);
    acutPrintf(" Cur Midia Name:%s", localeName);

    pPlotSetting->close();
    pLayout->close();

    return;
    for(int nCtr = 0;nCtr < nLength; nCtr++)
    {
            acutPrintf("%i) - %s",(nCtr + 1), mDeviceList.at(nCtr));
    }

    //get the user input for listing the Media Names
    int nSel;
    int mRes =RTNONE;

    while(RTNORM != mRes)
    {
            acedInitGet((RSG采用NONULL + RSG采用NONEG + RSG采用NOZERO),NULL);
            mRes = acedGetInt(" Select the Plot Configuration number to list the Media names: ", &nSel);
            if (nSel > nLength)
            {
                  acutPrintf(" Enter a number between 1 to %i",nLength);
                  mRes = RTNONE;
            }
    }

    //select the selected Plot configuration
    pPSV->setPlotCfgName(pLayout,mDeviceList.at(--nSel));
    //list all the paper sizes in the given Plot configuration
    AcArray< const char * > mMediaList;
    const char *pLocaleName;
    pPSV->canonicalMediaNameList(pLayout,mMediaList);

    acutPrintf(" Media list for Plot Configuration - %s:",mDeviceList.at(nSel));

    nLength = mMediaList.length();
    for(nCtr = 0;nCtr < nLength; nCtr++)
    {
            //get the localename
            pPSV->getLocaleMediaName(pLayout,mMediaList.at(nCtr),pLocaleName);
            acutPrintf("%i)    Name:%s   Locale Name: %s ",(nCtr + 1),mMediaList.at(nCtr),pLocaleName);
    }
    mRes =RTNONE;
    while(RTNORM != mRes)
    {
            acedInitGet((RSG采用NONULL + RSG采用NONEG + RSG采用NOZERO),NULL);
            mRes = acedGetInt(" Select the Media by entering the number: ", &nSel);
            if (nSel > nLength)
            {
                  acutPrintf(" Enter a number between 1 to %i",nLength);
                  mRes = RTNONE;
            }
    }
    //set selected Media for the layout
    pPSV->setCanonicalMediaName(pLayout,mMediaList.at(--nSel));
    pLayout->close();
}
页: [1]
查看完整版本: [每日一码] 如何得到当前CAD打印设备列表及其他打印设置内容