乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 36|回复: 2

文本旋转

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2005-11-2 13:34:21 | 显示全部楼层 |阅读模式

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

0

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
7
发表于 2005-11-2 13:52:06 | 显示全部楼层
现在没有时间把它弄得很漂亮,也许在午餐的时候,但是这个
  1. Option Explicit
  2. Public Sub FIX_ROTATION()
  3.     Dim objSelected As Object
  4.     Dim objTxt As AcadText
  5.     Dim objMTxt As AcadMText
  6.     Dim objSelSet As AcadSelectionSet
  7.     Dim dblRotDec As Double
  8.     Dim dblRotRad As Double
  9.     On Error GoTo ErrControl
  10.     Dim N As Integer
  11.     Dim pi
  12.    
  13.     pi = 4 * Atn(1)
  14.     If ThisDrawing.SelectionSets.Count > 0 Then
  15.         For N = 0 To ThisDrawing.SelectionSets.Count - 1
  16.             If ThisDrawing.SelectionSets.Item(N).Name = "FIXTEXT" Then
  17.                 ThisDrawing.SelectionSets("FIXTEXT").Delete
  18.             End If
  19.         Next N
  20.     End If
  21.     Set objSelSet = ThisDrawing.SelectionSets.Add("FIXTEXT")
  22.     objSelSet.SelectOnScreen
  23.     'objSelSet.Select acSelectionSetAll
  24.     For Each objSelected In objSelSet
  25.         If TypeOf objSelected Is AcadText Then
  26.             Set objTxt = objSelected
  27.             dblRotRad = objTxt.Rotation
  28.             dblRotDec = (dblRotRad * 180) / pi
  29.             If dblRotDec > 180 Then
  30.               dblRotDec = dblRotDec - 180
  31.             End If
  32.             If dblRotDec > 45 And dblRotDec  0 Then
  33.         For Each objSelSet In ThisDrawing.SelectionSets
  34.             If objSelSet.Name = "FIXTEXT" Then
  35.                 objSelSet.Delete
  36.                 Exit For
  37.             End If
  38.         Next objSelSet
  39.     End If
  40.     intGrp(0) = -4: intGrp(1) = 0: intGrp(2) = 0: intGrp(3) = -4
  41.     varDat(0) = ""
  42.     Set objSelSet = ThisDrawing.SelectionSets.Add("FIXTEXT")
  43.     objSelSet.SelectOnScreen intGrp, varDat
  44.     For Each objSelected In objSelSet
  45.         If TypeOf objSelected Is AcadText Then
  46.             Set objTxt = objSelected
  47.             dblRot = objTxt.Rotation
  48.             objTxt.Rotation = Angulator(dblRot)
  49.         Else
  50.             Set objMTxt = objSelected
  51.             dblRot = objMTxt.Rotation
  52.             objMTxt.Rotation = Angulator(dblRot)
  53.         End If
  54.     Next
  55.     ThisDrawing.SelectionSets.Item("FIXTEXT").Delete
  56.     ThisDrawing.Application.Update
  57. Exit_Here:
  58.     Exit Sub
  59. ErrControl:
  60.     MsgBox Err.Description
  61.     ThisDrawing.SelectionSets.Item("FIXTEXT").Delete
  62. End Sub
  63. Function Angulator(dblRotRad As Double) As Double
  64.     Dim dblRotDec As Double
  65.     Dim PI As Double
  66.     PI = 4 * Atn(1)
  67.     dblRotDec = (dblRotRad * 180) / PI
  68.     If dblRotDec > 180 Then
  69.       dblRotDec = dblRotDec - 180
  70.     End If
  71.     If dblRotDec > 45 And dblRotDec < 135 Then
  72.       Angulator = (90 * PI) / 180
  73.     Else
  74.       Angulator = 0
  75.     End If
  76. End Function

回复

使用道具 举报

0

主题

11

帖子

5

银币

初来乍到

Rank: 1

铜币
12
发表于 2005-11-2 14:17:31 | 显示全部楼层
没问题。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 17:41 , Processed in 1.295743 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表