明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2084|回复: 4

急救,VBA中,如何把一个闭合图形,向四周缩放

[复制链接]
发表于 2003-10-23 16:39:00 | 显示全部楼层 |阅读模式
急救,VBA中,如何把一个闭合图形,向四周缩放,比如说,圆中沿心,矩形沿中心,不规则的闭合图形也是沿中心缩放。

谢谢!
发表于 2003-10-23 16:43:00 | 显示全部楼层
用OFFSET试试~~~
发表于 2003-10-23 19:07:00 | 显示全部楼层
把对象变成面域后,找质心,然后删除面域,然后再把对象从质心来缩放。
发表于 2003-10-28 18:58:00 | 显示全部楼层
能给一段代码吗?
发表于 2003-10-28 19:56:00 | 显示全部楼层
  1. Sub ScaleEntFromCentro()
  2.     On Error Resume Next
  3.     Dim Ent As AcadEntity
  4.     Dim Pnt As Variant
  5.     ThisDrawing.Utility.GetEntity Ent, Pnt, "选择对象:"
  6.     Dim Ents(0) As AcadEntity
  7.     Set Ents(0) = Ent
  8.     Dim Regs As Variant
  9.     Dim Reg As AcadRegion
  10.     Regs = ThisDrawing.ModelSpace.AddRegion(Ents)
  11.     If Err Then
  12.         Err.Clear
  13.         ThisDrawing.Utility.Prompt "选中的对象不能找到合适的中心,程序不能继续进行。"
  14.         Exit Sub
  15.     End If
  16.     If IsArray(Regs) Then
  17.         Set Reg = Regs(0)
  18.         Dim Org As Variant
  19.         Org = Reg.Centroid
  20.         Reg.Delete
  21.         ThisDrawing.SendCommand "scale" & vbCr & axEnt2lspEnt(Ent) & vbCr & vbCr & axPoint2lspPoint(Org) & vbCr
  22.     Else
  23.         ThisDrawing.Utility.Prompt "没有选中闭合的对象,程序不能继续进行。"
  24.     End If
  25. End Sub

  26. Public Function axEnt2lspEnt(entObj As AcadEntity) As String
  27.     Dim entHandle As String
  28.     entHandle = entObj.Handle
  29.     axEnt2lspEnt = "(handent " & Chr(34) & entHandle & Chr(34) & ")"
  30. End Function

  31. Public Function axPoint2lspPoint(Pnt As Variant) As String
  32.     axPoint2lspPoint = Pnt(0) & "," & Pnt(1)
  33. End Function
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 12:54 , Processed in 0.161896 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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