• AutoCAD模型空间多视口之叠加视口应用


    模型空间的视口和图纸空间的视口一样可以叠加

    叠加玩法ARX代码

    		//复制重叠模型空间当前视口
    		AcDbDatabase *pDb=curDoc()->database();
    		if (NULL == pDb)
    		{
    			acutPrintf(_T("
    获取数据库指针失败!"));
    			return;
    		}
    		AcDbViewportTablePointer pTbl(pDb,AcDb::kForWrite);
    		Acad::ErrorStatus es= pTbl.openStatus();
    		if (Acad::eOk != es)
    		{
    			acutPrintf(_T("
    错误码= %s"),acadErrorStatusText(es));
    			return;
    		}
    		AcDbObjectId recordId;
    		//获取激活视口记录Id
    		es = pTbl->getAt(_T("*Active"),recordId);
    		if (Acad::eOk != es)
    		{
    			acutPrintf(_T("
    错误码= %s"),acadErrorStatusText(es));
    			return;
    		}
    		//智能指针打开
    		AcDbViewportTableRecordPointer pRcd(recordId,AcDb::kForRead);
    		es = pRcd.openStatus();
    		if (Acad::eOk != es)
    		{
    			acutPrintf(_T("
    错误码= %s"),acadErrorStatusText(es));
    			return;
    		}
    		//克隆激活视口记录
    		AcDbViewportTableRecord *pNewRcd=AcDbViewportTableRecord::cast(pRcd->clone());
    		if (NULL == pNewRcd)
    		{
    			acutPrintf(_T("
    克隆激活视口记录失败!"));
    			return;
    		}
    		//添加到视口表
    		es = pTbl->add(pNewRcd);
    		if (Acad::eOk != es)
    		{
    			delete pNewRcd;
    			acutPrintf(_T("
    错误码= %s"),acadErrorStatusText(es));
    			return;
    		}
    		pRcd->close();
    		//必须,clone的实体是写状态,需要close,便于acedVportTableRecords2Vports更新访问
    		pNewRcd->close();
    		//必须,AcDbViewportTable的实体是写状态,需要close,便于acedVportTableRecords2Vports更新访问
    		pTbl->close();
    		//更新视口表记录到视口
    		es =acedVportTableRecords2Vports();
    		if (Acad::eOk != es)
    		{
    			acutPrintf(_T("
    错误码= %s"),acadErrorStatusText(es));
    			return;
    		}
    

    实际效果

    这样的方式是相当于模型空间的显示区域都有一个视口同时在显示。可以通过cvport命令来切换当前激活的视口。

  • 相关阅读:
    第六章 条件处理
    VS2019配置MKL教程(Windows)
    攻防世界--srm-50
    攻防世界--The_Maya_Society
    攻防世界--re1-100
    BUUCTF--findit
    凯撒加密与解密实现
    BUUCTF--rsa
    正则表达式
    PyQuery详解
  • 原文地址:https://www.cnblogs.com/edata/p/15501017.html
Copyright © 2020-2023  润新知