明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: laoliu09

尺寸界线修剪的问题?

  [复制链接]
 楼主| 发表于 2005-4-24 11:57:00 | 显示全部楼层
对,DimRotated好像没有extline1point和entline2point点,不知道为什么?
 楼主| 发表于 2005-4-24 22:06:00 | 显示全部楼层
哪岂不是用vba很难办到?看来我只能用我现在的老办法了,我的方法是:往对齐标注写扩展数据,当然是自己建的标注了,记下文本在尺寸线上或尺寸线下("up" or "down"),这样就可以修剪了,跟lisp一样,但如果文本从尺寸线上移到尺寸线下或从尺寸线下移到尺寸线上,那就出问题了,因为标注里的扩展数据没变,如果可以在移动文本的同时修改扩展数据就好了,可以用modify事件,但怎么判断文本是移到尺寸线上,还是移到尺寸线下呢?这好像有点难度!哎!学海无边啊!
发表于 2005-4-24 23:07:00 | 显示全部楼层
  1. '单选标注对象获取对齐及转角标注中的各点坐标
  2. Sub FixSingleDim()
  3.        Dim Ent As AcadEntity
  4.        Dim Pnt As Variant
  5.        Dim DimPoints As Variant
  6.        '选择对象
  7.        ThisDrawing.Utility.GetEntity Ent, Pnt, vbCr & "选择要要获取坐标的标注对象:"
  8.        If Ent.ObjectName Like "AcDb*Dimension" Then
  9.                DimPoints = GetDimLinePoint(Ent)
  10.                Dim i As Integer
  11.                For i = 0 To UBound(DimPoints)
  12.                        Debug.Print DimPoints(i)
  13.                Next
  14.        End If
  15. End Sub'获取对齐标注及转角标注的尺寸界线原点及标注点的函数
  16. '返回格式:三组三维坐标,分别与DXF组码的13,14,10组码对应。
  17. '前两个坐标对应于对象模型中的ExtLine1Point,ExtLine2Point,第三个坐标在对象模型中没有。
  18. '作者:明经通道 mccad
  19. Function GetDimLinePoint(Dimension As AcadDimension) As Variant
  20.        '在复制标注对象前先保存当前图形中的块数量
  21.        Dim BlockCount As Long
  22.        BlockCount = ThisDrawing.Blocks.Count
  23.        '复制需要锁定文字内容的标注对象
  24.        Dim CopyDimension As AcadDimension
  25.        Set CopyDimension = Dimension.Copy
  26.        '检查块数量是否增加,而且新增加的块名前缀是否为"*D"
  27.        Dim NewBlockCount As Long
  28.        NewBlockCount = ThisDrawing.Blocks.Count
  29.        If NewBlockCount = BlockCount + 1 And Left(ThisDrawing.Blocks(BlockCount).Name, 2) = "*D" Then
  30.                '遍历块中的对象,取得定义的点
  31.                Dim EntityInBlock As AcadEntity
  32.                Dim DimPnt As Variant
  33.                Dim DimPoints() As Double
  34.                Dim i As Integer
  35.                For Each EntityInBlock In ThisDrawing.Blocks(BlockCount)
  36.                        If EntityInBlock.ObjectName = "AcDbPoint" Then
  37.                                i = i + 1
  38.                                DimPnt = EntityInBlock.Coordinates
  39.                                ReDim Preserve DimPoints(i * 3 - 1)
  40.                                DimPoints(i * 3 - 3) = DimPnt(0)
  41.                                DimPoints(i * 3 - 2) = DimPnt(1)
  42.                                DimPoints(i * 3 - 1) = DimPnt(2)
  43.                        End If
  44.                Next
  45.        End If
  46.        '删除复制的标注对象
  47.        CopyDimension.Delete
  48.        GetDimLinePoint = DimPoints
  49. End Function
 楼主| 发表于 2005-4-25 12:00:00 | 显示全部楼层
太谢谢郑老师了,原来标注对象里还隐藏了一个标注点,我翻遍对象模型也找不到啊,这正是我一直以来最想得到的点,好了,我的修剪尺寸界线的问题可以过一段落了,现在可以编出跟lisp一样的功能了,再次感谢郑老师的指导!
发表于 2010-6-10 11:35:00 | 显示全部楼层
看不懂,太深了。
 
 
欢迎光临七天E店    http://7-days.taobao.com
 
发表于 2011-9-6 13:33:04 | 显示全部楼层
界线的修正确是麻烦的。主要是尺寸线的两端点不好读取。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:34 , Processed in 0.167239 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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