明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 912|回复: 6

AcDbDimension 标注学习整理相关,陆续更新添加

[复制链接]
发表于 2025-8-19 09:32:32 | 显示全部楼层 |阅读模式
本帖最后由 gzxl 于 2025-8-20 22:26 编辑

AcDbDimension 标注学习整理相关,陆续更新添加

  1. Acad::ErrorStatus es = Acad::eOk;
  2. AcGePoint3d ptPick;
  3. ads_name ename;
  4. if (acedEntSel(_T("选择一个标注: "), ename, asDblArray(ptPick)) != RTNORM)
  5.     return;
  6. // 获取对象ID
  7. AcDbObjectId objId = AcDbObjectId::kNull;
  8. es = acdbGetObjectId(objId, ename);
  9. if (es != Acad::eOk)
  10.   return;
  11. // 打开对象
  12. AcDbEntity *pEnt = NULL;
  13. es = acdbOpenAcDbEntity(pEnt, objId, AcDb::kForRead);
  14. if (es != Acad::eOk)
  15.   return;
  16. // 判断对象是否是标注实体
  17. AcDbDimension *pDim = AcDbDimension::cast(pEnt);
  18. // 关闭对象
  19. pEnt->close();
  20. if (pDim == NULL)
  21.   return;


第一个图元名称
  1. acutPrintf(_T("\n图元名: %8lx\n"), ename[0]);


获取句柄 (如: 2E6),DXF组码 5
  1.   AcDbHandle objHandle;
  2.   pEnt->getAcDbHandle(objHandle);
  3.   TCHAR handleStr[20];
  4.   objHandle.getIntoAsciiBuffer(handleStr);
  5.   acutPrintf(_T("\n句柄: %s\n"), handleStr);


获取类名
  1.   /*
  2.   AcDbRotatedDimension           线性标注
  3.   AcDbAlignedDimension           对齐线性标注
  4.   AcDbRadialDimension             半径标注
  5.   AcDbDiametricDimension         直径标注
  6.   AcDb2LineAngularDimension    两条线 (而不是三个点) 定义的角度标注
  7.   AcDb3PointAngularDimension   三个点 (而不是两条线) 定义的角度标注
  8.   AcDbOrdinateDimension          坐标标注
  9.   AcDbArcDimension                  弧长标注
  10.   AcDbRadialDimensionLarge      折弯标注
  11.   */
  12.   const TCHAR *pCname = pEnt->isA()->name();
  13.   acutPrintf(_T("\n类名: %s\n"), pCname);



获取引用的块表记录中的文本字符串名称(如: *D2),DXF组码 2
  1.   AcDbObjectId blockId = pDim->dimBlockId();
  2.   AcDbSymbolTableRecord* tblRec;
  3.   es = acdbOpenObject(tblRec, blockId, AcDb::kForRead);
  4.   const TCHAR* blockName;
  5.   tblRec->getName(blockName);
  6.   CString name = blockName;
  7.   tblRec->close();
  8.   acutPrintf(_T("\n引用的块表记录中的文本字符串名称:%s\n"), name);


获取标注所引用的块的相对位置点(WCS 坐标),DXF组码 12
  1.   AcGePoint3d blockPt = pDim->dimBlockPosition();
  2.   acutPrintf(_T("\n%.3f %.3f %.3f\n"), blockPt.x, blockPt.y, blockPt.z);


获取标注样式名(如: ISO-25),DXF组码 3
  1.   AcDbObjectId styleId = pDim->dimensionStyle();
  2.   AcDbDimStyleTableRecord *pDimStyleTableRec;
  3.   es = acdbOpenObject(pDimStyleTableRec, styleId, AcDb::kForRead);
  4.   const TCHAR* styleName;
  5.   pDimStyleTableRec->getName(styleName);
  6.   name = styleName;
  7.   pDimStyleTableRec->close();
  8.   acutPrintf(_T("\n标注样式名:%s\n"), name);


获取标注注释文本字符串,DXF组码 1
  1.   AcString sDimText;
  2.   pDim->dimensionText(sDimText);
  3.   LPCTSTR secName = sDimText.kwszPtr();
  4.   acutPrintf(_T("\n标注注释文本字符串: %s"), secName);


获取标注文字和箭头的排列方式 (原 AcDbDimension::dimfit 已被弃用)
  1.   系统变量 DIMATFIT
  2.       值               说明
  3.       0      将文字和箭头均放置于尺寸界线之外
  4.       1      先移动箭头,然后移动文字
  5.       2      先移动文字,然后移动箭头
  6.       3      移动文字和箭头中较合适的一个
  7.       int nDimatfit;
  8.       resbuf rbVar;
  9.       acedGetVar(_T("DIMATFIT"), &rbVar);
  10.       if (rbVar.restype == RTSHORT)
  11.       {
  12.           nDimatfit = rbVar.resval.rint;
  13.       }

获取标注文字的移动规则 (原 AcDbDimension::dimfit 已被弃用)
  1.   系统变量 DIMTMOVE
  2.       值               说明
  3.       0      尺寸线和标注文字一起移动
  4.       1      在移动标注文字时添加一条引线
  5.       2      允许标注文字自由移动而不用添加引线
  6.       int nDimtmove;
  7.       resbuf rbVar;
  8.       acedGetVar(_T("DIMTMOVE"), &rbVar);
  9.       if (rbVar.restype == RTSHORT)
  10.       {
  11.           nDimtmove = rbVar.resval.rint;
  12.       }


获取标注类型(角度标注除外)单位
  1.   /*
  2.       值        说明
  3.       1         科学
  4.       2         小数
  5.       3         工程
  6.       4      建筑(始终堆叠显示)
  7.       5      分数(始终堆叠显示)
  8.       6      Microsoft Windows
  9.   */
  10.   int nLunit = pDim->dimlunit();
  11.   acutPrintf(_T("\n标注单位类型: %d"), nLunit);


获取从 WCS 原点到标注所在平面的距离
  1.   double dElev = pDim->elevation();
  2.   acutPrintf(_T("\nWCS原点到标注所在平面的距离: %.3f"), dElev);


标注的第一个箭头是否被翻转,是则返回 true,否则返回 false
  1.   #define btoa(x) ((x) ? _T("true") : _T("false"))
  2.   bool bArrowFirst = pDim->getArrowFirstIsFlipped();
  3.   acutPrintf(_T("\n标注的第一个箭头是否被翻转: %s"), btoa(bArrowFirst));


标注的第二个箭头是否被翻转,是则返回 true,否则返回 false
  1.   #define btoa(x) ((x) ? _T("true") : _T("false"))
  2.   bool bArrowSecond = pDim->getArrowSecondIsFlipped();
  3.   acutPrintf(_T("\n标注的第二个箭头是否被翻转: %s"), btoa(bArrowSecond));


尺寸线的线型,(如: ACAD_ISO02W100)
  1. AcDbObjectId linetypeId = pDim->dimLineLinetype();
  2. if (linetypeId != AcDbObjectId::kNull)
  3. {
  4.     AcDbLinetypeTableRecord *pDimLinetypeTableRec = NULL;
  5.     es = acdbOpenObject(pDimLinetypeTableRec, linetypeId, AcDb::kForRead);
  6.     const TCHAR* asLinetypeName;
  7.     pDimLinetypeTableRec->getName(asLinetypeName);
  8.     pDimLinetypeTableRec->close();
  9.     name = asLinetypeName;
  10.     //acutPrintf(_T("\n尺寸线的线型: %s"), name);
  11. }


尺寸界线1的线型,(如: ACAD_ISO02W100)
  1. AcDbObjectId dimExt1Id = pDim->dimExt1Linetype();
  2. if (dimExt1Id != AcDbObjectId::kNull)
  3. {
  4.     AcDbLinetypeTableRecord *pDimLinetypeTableRec = NULL;
  5.     es = acdbOpenObject(pDimLinetypeTableRec, dimExt1Id, AcDb::kForRead);
  6.     const TCHAR* asLinetypeName;
  7.     pDimLinetypeTableRec->getName(asLinetypeName);
  8.     pDimLinetypeTableRec->close();
  9.     name = asLinetypeName;
  10.     //acutPrintf(_T("\n尺寸界线1的线型: %s"), name);
  11. }


尺寸界线2的线型,(如: DASHED)
  1. AcDbObjectId dimExt2Id = pDim->dimExt2Linetype();
  2. if (dimExt2Id != AcDbObjectId::kNull)
  3. {
  4.     AcDbLinetypeTableRecord *pDimLinetypeTableRec = NULL;
  5.     es = acdbOpenObject(pDimLinetypeTableRec, dimExt2Id, AcDb::kForRead);
  6.     const TCHAR* asLinetypeName;
  7.     pDimLinetypeTableRec->getName(asLinetypeName);
  8.     pDimLinetypeTableRec->close();
  9.     name = asLinetypeName;
  10.     //acutPrintf(_T("\n尺寸界线2的线型: %s"), name);
  11. }



线性标注的水平旋转值 (以弧度为单位),DXF 组码 51
线性标注拉伸方向 (默认值=0, 0, 1), DXF 组码 210
  1. CString strClassName;
  2. strClassName.Format(_T("%s"), pCname);
  3. if (strClassName.CompareNoCase(_T("AcDbRotatedDimension")) == 0)
  4. {
  5.     double dHorizRot = pDim->horizontalRotation();
  6.     acutPrintf(_T("\n标注的水平旋转值(弧度): %.6f"), dHorizRot);
  7.     AcGeVector3d vec = pDim->normal();
  8.     acutPrintf(_T("\n拉伸方向(单位法向量): %d %d %d"), (int)vec.x, (int)vec.y, (int)vec.z);
  9. }



返回线性标注的定义点(在WCS坐标中),DXF 组码 10
返回线性标注的倾斜角,DXF 组码 52
返回线性标注的旋转角度,DXF 组码 50
  1. if (pEnt->isKindOf(AcDbRotatedDimension::desc()))
  2. {
  3.     AcDbRotatedDimension *pRotDim = AcDbRotatedDimension::cast(pEnt);
  4.     // 线性标注的定义点(在WCS坐标中),DXF 组码 10
  5.     AcGePoint3d linePt = pRotDim->dimLinePoint();
  6.     //acutPrintf(_T("\n线性标注的定义点: %.3f,%.3f"), linePt.x, linePt.y);
  7.     // 线性标注的倾斜角,DXF 组码 52
  8.     double dOblique = pRotDim->oblique();
  9.     //acutPrintf(_T("\n倾斜角: %.3f"), dOblique);
  10.     // 线性标注的旋转角度,DXF 组码 50
  11.     double dRotation = pRotDim->rotation();
  12.     //acutPrintf(_T("\n旋转角度: %.3f"), dRotation);
  13.     pRotDim->close();
  14. }






回复

使用道具 举报

发表于 2025-8-19 09:56:41 | 显示全部楼层
本帖最后由 cable2004 于 2025-8-19 10:08 编辑
  1. 设置文字高度 : setDimtxt();

  2. 设置文字位置 : setDimgap();

  3. 设置箭头大小 : setDimasz();

  4. 设置标注精度 : setDimdec();

  5. 设置小数保留位数 : setDimtdec();

  6. 设置尺寸界限超出尺寸线距离 : setDimexe();

  7. 设置文字处于标注线上方还是下方 : setDimtad();[2为下方,1为上方]


  1. //创建对齐标注
  2. //(1)第一条尺寸边界线的起点(2)第二条尺寸边界线的起点(3)通过尺寸线的一点(4)标注文字(5)样式。
  3. AcDbObjectId CreateDimAligned(const AcGePoint3d& pt1, const AcGePoint3d& pt2, const AcGePoint3d& ptLine, const char* dimText, AcDbObjectId dimStyle)
  4. {
  5.     AcDbAlignedDimension *pDim = new AcDbAlignedDimension(pt1, pt2,
  6.     ptLine, dimText, dimStyle);
  7.     return PostToModelSpace(pDim);
  8. }

  9. //创建对齐标注
  10. //重载函数,允许输入 vecOffset 作为标注文字位置的偏移量
  11. AcDbObjectId CreateDimAligned(const AcGePoint3d& pt1, const AcGePoint3d& pt2, const AcGePoint3d& ptLine, const AcGeVector3d& vecOffset, const TCHAR* dimText)
  12. {
  13.     AcDbAlignedDimension *pDim = new AcDbAlignedDimension(pt1, pt2, ptLine, dimText, AcDbObjectId::kNull);
  14.     AcDbObjectId dimensionId;
  15.     dimensionId = PostToModelSpace(pDim);
  16.     // 打开已经创建的标注,对文字的位置进行修改
  17.     AcDbEntity *pEnt;
  18.     Acad::ErrorStatus es;
  19.     es = acdbOpenAcDbEntity(pEnt, dimensionId, AcDb::kForWrite);
  20.     AcDbAlignedDimension *pDimension = AcDbAlignedDimension::cast(pEnt);

  21.     if (pDimension != NULL)
  22.     {
  23.         // 移动文字位置前,需先指定尺寸线的变化情况(这里指定为:
  24.         // 尺寸线不动,在文字和尺寸线之间加箭头)
  25.         pDimension->setDimtmove(1);
  26.         // 根据偏移向量修正文字插入点的位置
  27.         AcGePoint3d ptText = pDimension->textPosition();
  28.         ptText = ptText + vecOffset;
  29.         pDimension->setTextPosition(ptText);
  30.     }

  31.     pEnt->close();
  32.     return dimensionId;
  33. }

  34. //创建转角标注
  35. //(1)标注的旋转角度、(2)第一条尺寸边界线的起点、(3)第二条尺寸边界线的起点、(4)通过尺寸线的一点、(5)标注文字 (6)样式。
  36. AcDbObjectId CreateDimRotated(const AcGePoint3d& pt1, const AcGePoint3d& pt2, const AcGePoint3d& ptLine, double rotation, const TCHAR* dimText, AcDbObjectId dimStyle)
  37. {
  38.     AcDbRotatedDimension *pDim = new AcDbRotatedDimension(rotation, pt1, pt2, ptLine, dimText, dimStyle);
  39.     return PostToModelSpace(pDim);
  40. }


  41. //创建半径标注
  42. //(1)标注曲线的中心点、(2)引线附着的坐标、(3)引线长度、(4)标注文字(5)样式  
  43. AcDbObjectId CreateDimRadial(const AcGePoint3d& ptCenter, const AcGePoint3d& ptChord, double leaderLength, const TCHAR* dimText, AcDbObjectId dimStyle)
  44. {
  45.     AcDbRadialDimension *pDim = new AcDbRadialDimension(ptCenter, ptChord, leaderLength, dimText, dimStyle);
  46.     return PostToModelSpace(pDim);
  47. }

  48. //创建半径标注
  49. //重载函数,(圆心、半径、标注尺寸线的旋转角度和引线长度)
  50. AcDbObjectId CreateDimRadial(const AcGePoint3d& ptCenter, double radius, double angle, double leaderLength)
  51. {
  52.     CGeometryOper m_geometryOper;
  53.     AcGePoint3d ptChord = m_geometryOper.PolarPoint(ptCenter, angle, radius);

  54.     return CreateDimRadial(ptCenter, ptChord, leaderLength);
  55. }


  56. //根据相对极坐标来确定一个点的位置
  57. AcGePoint3d PolarPoint(const AcGePoint3d& pt, double angle, double distance)
  58. {
  59.     ads_point ptForm, ptTo;
  60.     ptForm[X] = pt.x;
  61.     ptForm[Y] = pt.y;
  62.     ptForm[Z] = pt.z;
  63.     //acutPolar: 计算某个角度上距离某个点一定距离的点
  64.     acutPolar(ptForm, angle, distance, ptTo);
  65.     return asPnt3d(ptTo);
  66. }

  67. //根据相对直角坐标来计算一个点的位置
  68. AcGePoint3d RelativePoint(const AcGePoint3d& pt, double x, double y)
  69. {
  70.     AcGePoint3d ptReturn(pt.x + x, pt.y + y, pt.z);
  71.     return ptReturn;
  72. }





  73. //创建直径标注
  74. //(1)+(2)标注直径的两个端点、(3)引线长度、(4)标注文字(5)样式
  75. AcDbObjectId CreateDimDiametric(const AcGePoint3d& ptChord1, const AcGePoint3d& ptChord2, double leaderLength, const TCHAR* dimText, AcDbObjectId dimStyle)
  76. {
  77.     AcDbDiametricDimension *pDim = new AcDbDiametricDimension(ptChord1, ptChord2, leaderLength, dimText, dimStyle);
  78.     return PostToModelSpace(pDim);
  79. }


  80. //创建直径标注
  81. //重载函数,(圆心、半径、标注尺寸线的旋转角度和引线长度)
  82. AcDbObjectId CreateDimDiametric(const AcGePoint3d& ptCenter, double radius, double angle, double leaderLength)
  83. {
  84.     CGeometryOper m_geometryOper;
  85.     // 计算标注通过点的位置
  86.     AcGePoint3d ptChord1, ptChord2;
  87.     ptChord1 = m_geometryOper.PolarPoint(ptCenter, angle, radius);
  88.     ptChord2 = m_geometryOper.PolarPoint(ptCenter, angle + m_geometryOper.PI(), radius);

  89.     return CreateDimDiametric(ptChord1, ptChord2, leaderLength);
  90. }


  91. //创建二维角度标注
  92. //根据两条直线的关系创建一个函数
  93. AcDbObjectId CreateDim2LineAngular(const AcGePoint3d& ptStart1, const AcGePoint3d& ptEnd1, const AcGePoint3d& ptStart2, const AcGePoint3d& ptEnd2, const AcGePoint3d& ptArc, const TCHAR* dimText, AcDbObjectId dimStyle)
  94. {
  95.     AcDb2LineAngularDimension *pDim = new AcDb2LineAngularDimension(ptStart1, ptEnd1, ptStart2, ptEnd2, ptArc, dimText, dimStyle);
  96.     return PostToModelSpace(pDim);
  97. }

  98. //创建坐标标注
  99. //(1)是否是 X 轴标注(布尔类型变量)、(2)标注箭头的起始位置、(3)标注箭头的终止位置、(4)标注文字、(5)样式
  100. AcDbObjectId CreateDimOrdinate(Adesk::Boolean xAxis, const AcGePoint3d& ptStart, const AcGePoint3d& ptEnd, const TCHAR* dimText, AcDbObjectId dimStyle)
  101. {
  102.     AcDbOrdinateDimension *pDim = new AcDbOrdinateDimension(xAxis, ptStart, ptEnd, dimText, dimStyle);
  103.     return PostToModelSpace(pDim);
  104. }


  105. //创建三维角度标注
  106. //重载函数,(顶点、起始点、终止点和标注尺寸线通过点)
  107. AcDbObjectId CreateDim3PtAngular(const AcGePoint3d& ptCenter, const AcGePoint3d& ptEnd1, const AcGePoint3d& ptEnd2, const AcGePoint3d& ptArc, const TCHAR* dimText, AcDbObjectId dimStyle)
  108. {
  109.     AcDb3PointAngularDimension *pDim = new AcDb3PointAngularDimension(ptCenter, ptEnd1, ptEnd2, ptArc, dimText, dimStyle);
  110.     return PostToModelSpace(pDim);
  111. }

  112. //创建坐标标注
  113. //重载函数,能够同时创建一个点的 X、Y 坐标标注
  114. AcDbObjectIdArray CreateDimOrdinate(const AcGePoint3d& ptDef, const AcGePoint3d& ptTextX, const AcGePoint3d& ptTextY)
  115. {
  116.     AcDbObjectId dimId;
  117.     AcDbObjectIdArray dimIds;
  118.     dimId = CreateDimOrdinate(Adesk::kTrue, ptDef, ptTextX);
  119.     dimIds.append(dimId);
  120.     dimId = CreateDimOrdinate(Adesk::kFalse, ptDef, ptTextY);
  121.     dimIds.append(dimId);
  122.     return dimIds;
  123. }


  124. //创建坐标标注
  125. //重载函数,能够根据点的偏移位置来创建坐标标注
  126. AcDbObjectIdArray CreateDimOrdinate(const AcGePoint3d& ptDef, const AcGeVector3d& vecOffsetX, const AcGeVector3d& vecOffsetY)
  127. {
  128.     AcGePoint3d ptTextX = ptDef + vecOffsetX;
  129.     AcGePoint3d ptTextY = ptDef + vecOffsetY;

  130.     return CreateDimOrdinate(ptDef, ptTextX, ptTextY);
  131. }





  132. static void MidasMyGroupMyCreateDimAligned()
  133.     {
  134.         CGeometryOper m_geometryOper;
  135.         // 指定起始点位置
  136.         AcGePoint3d pt1(200, 160, 0);
  137.         AcGePoint3d pt2= m_geometryOper.RelativePoint(pt1, -40, 0);
  138.         AcGePoint3d pt3 = m_geometryOper.PolarPoint(pt2, 7 * m_geometryOper.PI() / 6, 20);
  139.         AcGePoint3d pt4 = m_geometryOper.RelativePoint(pt3, 6, -10);
  140.         AcGePoint3d pt5 = m_geometryOper.RelativePoint(pt1, 0, -20);
  141.         // 绘制外轮廓线
  142.         CreateLine(pt1, pt2);
  143.         CreateLine(pt2, pt3);
  144.         CreateLine(pt3, pt4);
  145.         CreateLine(pt4, pt5);
  146.         CreateLine(pt5, pt1);
  147.         // 绘制圆形
  148.         AcGePoint3d ptCenter1, ptCenter2;
  149.         ptCenter1 = m_geometryOper.RelativePoint(pt3, 16, 0);
  150.         ptCenter2 = m_geometryOper.RelativePoint(ptCenter1, 25, 0);
  151.         CreateCircle(ptCenter1, 3);
  152.         CreateCircle(ptCenter2, 4);

  153.         AcGePoint3d ptTemp1, ptTemp2;
  154.         // 水平标注
  155.         ptTemp1 = m_geometryOper.RelativePoint(pt1, -20, 3);
  156.         CreateDimRotated(pt1, pt2, ptTemp1, 0);
  157.         // 垂直标注
  158.         ptTemp1 = m_geometryOper.RelativePoint(pt1, 4, 10);
  159.         CreateDimRotated(pt1, pt5, ptTemp1,
  160.             m_geometryOper.PI() / 2);
  161.         // 转角标注
  162.         ptTemp1 = m_geometryOper.RelativePoint(pt3, -3, -6);
  163.         CreateDimRotated(pt3, pt4, ptTemp1, 7 * m_geometryOper.PI() / 4);
  164.         // 对齐标注
  165.         ptTemp1 = m_geometryOper.RelativePoint(pt2, -3, 4);
  166.         CreateDimAligned(pt2, pt3, ptTemp1, AcGeVector3d(4, 10, 0), _T("new position"));
  167.         // 角度标注
  168.         ptTemp1 = m_geometryOper.RelativePoint(pt5, -5, 5);
  169.         CreateDim3PtAngular(pt5, pt1, pt4, ptTemp1);
  170.         // 半径标注
  171.         ptTemp1 = m_geometryOper.PolarPoint(ptCenter1, m_geometryOper.PI() / 4, 3);
  172.         CreateDimRadial(ptCenter1, ptTemp1, -3);
  173.         // 直径标注
  174.         ptTemp1 = m_geometryOper.PolarPoint(ptCenter2,
  175.             m_geometryOper.PI() / 4, 4);
  176.         ptTemp2 = m_geometryOper.PolarPoint(ptCenter2,
  177.             m_geometryOper.PI() / 4, -4);
  178.         CreateDimDiametric(ptTemp1, ptTemp2, 0);
  179.         // 坐标标注
  180.         CreateDimOrdinate(ptCenter2, AcGeVector3d(0, -10, 0),
  181.             AcGeVector3d(10, 0, 0));
  182.     }



评分

参与人数 1明经币 +1 收起 理由
gzxl + 1 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2025-8-19 10:13:01 | 显示全部楼层
感谢大佬们的分享!
回复 支持 反对

使用道具 举报

发表于 2025-8-19 10:22:56 | 显示全部楼层

优秀资料,感谢大佬们的分享!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-19 10:46:39 | 显示全部楼层
下手好快啊,我忘记留二楼、三楼咧。
一楼“获取”、二楼“设置”、三楼“demo”
回复 支持 反对

使用道具 举报

发表于 2025-8-19 10:52:20 | 显示全部楼层
gzxl 发表于 2025-8-19 10:46
下手好快啊,我忘记留二楼、三楼咧。
一楼“获取”、二楼“设置”、三楼“demo”

只会抄代码,抄了好多,紧随大师步伐!
回复 支持 反对

使用道具 举报

发表于 2025-9-1 14:15:04 | 显示全部楼层
这种帖子可以多发,很有收藏价值,省的自己用的时候还得翻
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-10-6 01:42 , Processed in 0.200599 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表