关闭当前视图中的修剪平面
我正在尝试关闭当前视图的剪裁平面。如果我将我的视图设置为我在打开剪裁时创建的命名视图,然后选择一个标准视图,它仍然显示“打开”剪裁平面。如果我在“视图”对话框->视图设置中查看,我可以看到即使在我运行了这段代码之后,裁剪平面仍然是打开的。我是否需要其他方法来获取当前视图,或者我是否需要其他方法来关闭剪辑?蒂亚,米克。
static void DCSDCSARX3dunclip(void)
{
// function to turn the clip planes off after being
// in a clipped view. Use current view to change settings
AcDbViewTable* pVt;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pVt, AcDb::kForWrite);
if (!pVt->has("Current"))
{
AcDbViewTableRecord* pVtrec = new AcDbViewTableRecord;
pVt->getAt("Current", *&pVtrec,AcDb::kForWrite,false);
pVtrec->setFrontClipEnabled(false);
pVtrec->setBackClipEnabled(false);
pVtrec->close();
pVt->close();
acutPrintf("\nDone:");
}
else
{
pVt->close();
acutPrintf("\nFailed to turn off clipping, try again:");
}
}
**** Hidden Message ***** 您是在图层模型1中显示视图,还是在图层模型0的视口中显示视图? 我使用了上面的一些代码来获得tilemode等,然后设置剪切平面为假,没有去。然后我用acedSetCurrentView()做了同样的尝试,但是它完全改变了视图,尽管它关闭了裁剪平面??
也许我必须为标准视图设置自己的工具栏? 我忙不起来...这里。。。在我所做的工作类型中,从未使用过或需要实现过这样的东西......
[工作类型:清洁街道上的车窗..... ]
一个dwg我对我的帮助超过1000字.... 好的,这里有一个dwg,附有一个带有剪裁平面的命名视图。将视图设置为当前视图,然后选择一个iso视图将其恢复,您将看到裁剪平面裁剪出一些细节。
将下面的代码复制并粘贴到一个新的arx命令中,尝试取消对acedSetCurrentView的注释,看看会发生什么。
谢谢。
// function to turn the clip planes off after being
// in a clipped view. Use current view to change settings
AcDbViewTable* pVt;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pVt, AcDb::kForWrite);
if (!pVt->has("CURRENT"))
{
AcDbViewTableRecord* pVtrec = new AcDbViewTableRecord;
pVt->getAt("CURRENT", *&pVtrec,AcDb::kForWrite,false);
struct resbuf rb;
acedGetVar("TILEMODE", &rb);
int tilemode = rb.resval.rint;
acedGetVar("CVPORT", &rb);
int cvport = rb.resval.rint;
// Paperspace flag
bool paperspace = ((tilemode == 0) && (cvport == 1)) ? Adesk::kTrue : Adesk::kFalse;
pVtrec->setIsPaperspaceView(paperspace);
if (Adesk::kFalse == paperspace)
{
pVtrec->setFrontClipEnabled(false);
pVtrec->setBackClipEnabled(false);
acutPrintf("\nDone:");
}
else
{
acutPrintf("\nCan't turn off clipping planes in paperspace!");
}
//acedSetCurrentView(pVtrec,NULL);//close();
pVt->close();
}
else
{
pVt->close();
acutPrintf("\nFailed to turn off clipping, try again:");
}
不...它总是去计划视图...奇怪。
我在想,也许AcDbViewport对象的属性优先于AcDbViewTableRecord的属性。
我会仔细看看,看看能不能弄明白。 在我使用的另一个应用程序中,你可以设置一个带有裁剪平面的视图,如果你使用std isoviews返回并查看整个drg,它会做同样的事情,唯一恢复正常的方法是使用他们预定义的视图工具,然后如果你想使用std工具。也许我也需要这样做,但只需创建模型范围的标准平面图?
我真的很惊讶,您有一个全局函数来“设置”当前视图,而不是“获取”当前视图。 米克;
我使用不同的视图名称进行了测试,但没有转到平面视图...
不工作....假警报...
页:
[1]
2