文章目录

  • 前言
  • 一、操作约束的菜单
  • 二、使用约束的意义
    • 下述说明摘抄自网友:
  • 三、遍历删除约束
  • 总结

前言

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


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

一、操作约束的菜单


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

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

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

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

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

二、使用约束的意义

下述说明摘抄自网友:

由于传统的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)里面,怎样获得约束组即是关键所在。

总结

ARX二次开发 遍历删除所有的约束相关推荐

  1. C++ ARX二次开发-BREP库

    一.本节课程 C++ ARX二次开发-BREP库 二.本节要讲解的知识点 通过两个命令来演示BREP库的使用:获取圆柱体中圆柱面的特征参数:获取任何三维实体的边的采样曲线. 三.具体内容 1.思路:组 ...

  2. c++ Arx二次开发创建椭圆和样条曲线

    一.本节课程 c++ Arx二次开发创建椭圆和样条曲线 二.本节要讲解的知识点 1.如何应用C++ ARX二次开发创建椭圆(对AcDbEllipse类的构造函数的直接封装和根据外接矩形来创建椭圆) 2 ...

  3. C++ ARX二次开发视图

    一.本节课程 C++ ARX二次开发视图 二.本节要讲解的知识点 C++ ARX开发中视图的获取.设置等知识 三.具体内容 1.AcDbViewTableRecord 来表示AUTOCAD中的视图.如 ...

  4. C++ ARX二次开发-创建三维实体

    二.本节课程 C++ ARX二次开发-创建三维实体 二.本节要讲解的知识点 1.arx提供的三类创建三维实体的方法:创建标准形状的实体.拉伸面域创建实体.旋转面域创建实体的例子. 2.布尔运算的使用例 ...

  5. C++ ARX二次开发视图、视口、UCS

    视频课程由yunyou.ke.qq.com提供 一.本节课程 C++ ARX二次开发视图.视口.UCS 二.本节要讲解的知识点 1.C++ ARX开发中视图的获取.设置等知识 2.C++ARX开发中视 ...

  6. SolidWorks二次开发 遍历树节点

    各位Solidworks二次开发小伙伴,趁着年还没过玩,祝大家新年快乐,掐指一算 , 明天就是元宵节了. 各位是不是应该送我点什么? 说错了,是我送来送点东西给大家. 最近在看api帮助时发现了一个知 ...

  7. C# Solidworks二次开发:删除螺纹孔

    今天讲的是一个如何删除一个零件上的螺纹孔. 开发逻辑如下:选中有螺纹孔的零件上表面,获取想要的零件特征.遍历这个零件获取所有features,在循环中获取所有特征的name.判断name中是否存在&q ...

  8. CATIA V6二次开发——遍历UDF下的元素及参数

    在UDF实例化的过程中往往将UDF实例化至几何图形集或者几何体中,每个UDF可能不止输出一个对象和参数,那么如何获取UDF附带输出的元素和参数,代码如下: //获取几何图形集下的UDF //方法一:利 ...

  9. 【CAD arx二次开发】通过Wizard向导新建项目编译遇到的问题汇总

    报了大量的缺少引用错误 这个情况是因为安装VS的时候没有安装SDK8.1,需要打开VS的installer安装器安装SDK8.1 选择好后点修改即可. 较小类型检查 C1189 #error: /RT ...

  10. CATIA CAA二次开发专题(六)---约束关系分析

    在二次开发过程中,有时需要获取产品树中的约束关系信息,以进行部件关系分析.下列程序片段,可以获取并显示产品 树的约束信息.这里,只给出主程序. #include "CATBaseUnknow ...

最新文章

  1. 2021年大数据ELK(五):Elasticsearch中的核心概念
  2. msdn关于Visual C++ 编译器选项的说明
  3. Visual C#之核心语言
  4. 如何利用扩展欧几里得算法求解不定方程_客户端不用的算法系列:从头条笔试题认识扩展欧几里得算法...
  5. Python 3.5.2 TypeError: a bytes-like object is required, not 'str’问题解决方案
  6. jquery实现的视差滚动教程(视差大背景效果)
  7. Jsp+Ssh+Mysql+Redis实现的Java Web订餐点餐
  8. 全球首发!惯性导航导论(剑桥大学)第四部分
  9. 取代Cookie失败,Google上线FLoC反遭“围攻”!
  10. 学NLP不懂这个项目?快别去秋招了,你HOLD不住的!
  11. 虚拟化--062 vsphere workstation bios启动
  12. android loginDemo +WebService用户登录验证
  13. c++ 网络编程课设入门超详细教程 ---目录
  14. iframe标签用法详解
  15. 最小二乘法概念和代码示例
  16. mini2440 LED设备驱动开发源代码(宋宝华框架)
  17. zsh中git快捷键
  18. 苹果4S手机IOS6.1.3系统《微信6.2》登录失败解决办法!100%成功!小白也会用!
  19. 手机蓝牙和蓝牙模块进行通信
  20. FFMPEG的.Net封装,FFmpeg.NET

热门文章

  1. python云计算1_python云计算服务器
  2. CiscoCUCM配置网关协议
  3. html缎带按钮,6款丝带蝴蝶结系法图解_乌托家家居网
  4. 全国大学生数学建模2016年A题系泊系统的设计论文与代码
  5. mysql学生管理系统背景_学生基本系统管理
  6. 蚂蚁课堂笔记之 spring详解
  7. Fortran入门——菜鸟级基础语法
  8. Visual Studio 2017入门教程丨如何运行一个Fortran程序
  9. Allwinner(全志)V5 SPI Flash Support List
  10. SVN安装-Subversive Plug-In 和Subversive SVN Connectors