iOS移除约束教程:2014版轻松取消

前言

AutoCAD自从2010版本开始,就多了参数化约束的功能,这个功能在三维软件中是很常用的,而从事多年AutoCAD平面制图的人很少用到,对其功能不是很了解。与此同时,对于二次开发人员,操作约束的参考示例例子更是不多,本文抛砖引玉,简单介绍。


提示:首先截几个AutoCAD2014的图,然后上代码进行示例操作

一、操作约束的菜单

iOS 移除约束 2014约束怎么取消_autocad


autocad2014中的约束分为几何约束和标注约束

1.几何约束:它控制的是对象彼此之间的关系,比如相切、平行、垂直、共线等等。

2.标注约束:它控制的是对象的具体尺寸,比如距离、长度、半径值等等。

一般情况下,我们建议大家先使用几何约束确定图形的形状,再使用标注约束,确定图形的尺寸。

约束可以设置成可见,也可以设置成不可见,具体还有很多自定义设置,如下图:

iOS 移除约束 2014约束怎么取消_autocad_02


iOS 移除约束 2014约束怎么取消_约束_03

二、使用约束的意义

下述说明摘抄自网友:

由于传统的cad系统是面向具体的几何形状,属于交互式绘图,要想改变图形大小的尺寸,可能需要对原有的整个图形进行修改或重建,这就增加了设计人员的工作负担,大大降低了工作效率。
而使用参数化的图形,要绘制与该图结构相同,但是尺寸大小不同的图形时,只需根据需要更改对象的尺寸,整个图形将自动随尺寸参数而变化,但形状不变。参数化技术适合应用于绘制结构相似的图形而要绘制参数化图形,“约束”是不可少的要素,约束是应用于二维几何图形的一种关联和限制方法。

其实很多建模工作流都有异曲同工之妙,例如AutoCad的动态快、Revit的族参数化建模、ArchiCAD的GDL参数化建模等等。

三、遍历删除约束

登录后复制


//spaceId是当前workingDataSpace 的ID
Acad::ErrorStatus DeleteAllConstraints(const AcDbObjectId& spaceId)
{
	AcDbObjectId networkId = AcDbAssocNetwork::getInstanceFromObject(spaceId, true);

	if (networkId.isNull())
	{
		return Acad::eNullObjectId;
	}

	AcDbObjectPointer<AcDbAssocNetwork> pNetwork(networkId, kForRead);
	if (pNetwork.openStatus() != Acad::eOk)
	{
		return Acad::eNullObjectId;
	}

	const AcDbObjectIdArray& actionsInNetwork = pNetwork->getActions();

	for (int nCount = 0; nCount < actionsInNetwork.length(); ++nCount)
	{
		const AcDbObjectId& idAction = actionsInNetwork[nCount];
		if (idAction == AcDbObjectId::kNull)
			continue;

		if ( actionsInNetwork[nCount].objectClass() == NULL ||
			!actionsInNetwork[nCount].objectClass()->isDerivedFrom(
			AcDbAssoc2dConstraintGroup::desc()))
			continue;

		AcDbObjectPointer<AcDbAssoc2dConstraintGroup> pAction(idAction, kForWrite);
		if (pAction.openStatus() != Acad::eOk)
			continue;

		AcDbAssoc2dConstraintGroup* pConstGrp =	static_cast<AcDbAssoc2dConstraintGroup*>(pAction.object());
		if (!pConstGrp)
			continue;

		pConstGrp->erase();
	}

	return Acad::eOk;
}





登录后复制
## 2.关键说明

AcDbAssoc2dConstraintGroup:

所有的约束关系都保存在约束组(AcDbAssoc2dConstraintGroup)里面,怎样获得约束组即是关键所在。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空