明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3220|回复: 10

半径标注?

[复制链接]
发表于 2004-3-23 20:33:00 | 显示全部楼层 |阅读模式
用这个方法进行半径标注


RetVal = object.AddDimRadial(Center, ChordPoint, LeaderLength)


可是得到的标注都在圆弧外侧,如何才能让生成的标注在圆货圆弧的里侧???


谢谢
发表于 2004-3-23 20:45:00 | 显示全部楼层
LeaderLength 用负值就可以在里面标了。
 楼主| 发表于 2004-3-24 14:49:00 | 显示全部楼层
但是当负值的大于圆弧或圆的半径,标注就会标到另一半圆弧上了,如何解决?
发表于 2004-3-24 18:04:00 | 显示全部楼层
晕,这个值你还计算不出来。


你可以通过求Center和ChordPoint的距离的一半的负值就可以了。
 楼主| 发表于 2004-3-24 19:19:00 | 显示全部楼层
但是我的标注要随着比例的增大,标注的尺寸线要随之变大,尺寸标注就要大于半径,再这种情况下,如果都"通过求Center和ChordPoint的距离的一半的负值就可以了"


就把尺寸线的长度固定死了???
 楼主| 发表于 2004-3-24 19:25:00 | 显示全部楼层
我的程序如下:
Sub 半径标注()
Dim myss As AcadSelectionSet
Dim gpcode(0 To 1) As Integer
Dim datavalue(0 To 1) As Variant
Dim groupcode, datacode As Variant
Dim dimObj As AcadDimRadial '用于创建半径标注
Dim center As Variant '用于设定圆心坐标
Dim chordPoint(0 To 2) As Double '用于设定标注点
Dim pickPoint As Variant '选择图元对象时的拾取点
Dim leaderLen As Double '设定引线的长度
Dim entObj As AcadArc
Dim i As Integer
Dim ag As Double
Do While ThisDrawing.SelectionSets.Count <> 0
ThisDrawing.SelectionSets.Item(0).Delete
Loop
Scl = ThisDrawing.GetVariable("userr1")
If Scl = 0 Then Scl = 500
gpcode(0) = 0: datavalue(0) = "Arc"
gpcode(1) = 8: datavalue(1) = "ROAD1D"
groupcode = gpcode: datacode = datavalue
Set myss = ThisDrawing.SelectionSets.Add("ms6")
ThisDrawing.Utility.Prompt "请选择要标注道路转角弧线:" & vbCrLf & _
"注意:本程序设定选择只对'ROAD1D'层上的道路有效!" '& vbCr
Call myss.SelectOnScreen(groupcode, datacode)
If myss.Count <> 0 Then
For i = 0 To myss.Count - 1
Set entObj = myss.Item(i)
If entObj.EndAngle < entObj.StartAngle Then
ag = entObj.StartAngle + (entObj.EndAngle + 3.1415629 * 2 - entObj.StartAngle) / 2
Else
ag = entObj.StartAngle + (entObj.EndAngle - entObj.StartAngle) / 2
End If
pickPoint = ThisDrawing.Utility.PolarPoint(entObj.center, ag, entObj.Radius)
chordPoint(0) = pickPoint(0): chordPoint(1) = pickPoint(1)
leaderLen = -20*scl/500 'SCL :比例尺,规定比例尺=500时 leaderLen = -20
center = entObj.center
Set dimObj = ThisDrawing.ModelSpace.AddDimRadial(center, chordPoint, leaderLen)
dimObj.UnitsFormat = acDimLDecimal
dimObj.DecimalSeparator = "."
dimObj.TextHeight = 2
dimObj.Fit = acTextAndArrows dimObj.CenterType = acCenterNone

Next i
End If
End Sub
发表于 2004-3-24 21:41:00 | 显示全部楼层
你还是来个例图吧,我还是没搞懂你的要求。
发表于 2004-3-24 21:48:00 | 显示全部楼层
会不会是系统变量的问题。或者标注样式的问题。我认为你要先保证你手动可以出来你说的效果,然后在用程序来实现它。
 楼主| 发表于 2004-3-25 13:21:00 | 显示全部楼层



明总各位大虾,再次麻烦你们了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-3-25 19:52:00 | 显示全部楼层
你说的这一段跟半径标注没有关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 04:24 , Processed in 0.157491 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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