乐筑天下

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

(求助)为什么不支持质心属性

[复制链接]

6

主题

11

帖子

1

银币

初来乍到

Rank: 1

铜币
35
发表于 2006-4-5 10:37:00 | 显示全部楼层 |阅读模式
我编了一段程序,想求面积最大的面域的质心,代码如下:
Public Sub zx()
    Dim pt As Variant
    Dim spt1 As String
    Dim spt2 As String
    spt1 = 0 & "," & 0
    spt2 = 400 & "," & 400
    Dim n As Variant
    '创建面域
    Dim ssetobj As AcadSelectionSet
    Dim i As Integer
'清空选择集中已有的选择集,避免重名
  If ThisDrawing.SelectionSets.count > 0 Then
    For i = 0 To ThisDrawing.SelectionSets.count - 1
      ThisDrawing.SelectionSets.Item(i).Clear
      ThisDrawing.SelectionSets.Item(i).Delete
   Next
End If
   ThisDrawing.SendCommand "region" & vbCr & spt1 & vbCr & spt2 & vbCr & vbCr
    Set ssetobj = ThisDrawing.SelectionSets.Add("ss")
   
    Dim FType(0) As Integer
    Dim FData(0) As Variant
    FType(0) = 0
    FData(0) = "region"
    Dim FilterType As Variant
    Dim FilterData As Variant
    FilterType = FType
    FilterData = FData
    ssetobj.Select acSelectionSetAll, , , FilterType, FilterData
    k = ssetobj.count
    MsgBox k
    Dim area As Double
    Dim maxarea As Double
    maxarea = 1
    Dim pregion As AcadRegion
    Dim centriod As Variant
   
    For i = 0 To ssetobj.count - 1
      area = ssetobj.Item(i).area
       If maxarea
加红的一段代码中,把centriod 改成area或perimeter都可以,但改成centriod时,系统提示
"对象不支持该属性或方法"
为什么系统支持面积和周长属性,而不支持质心属性呢?
我是初学者,请各位高手帮帮忙?提提意见也好!
回复

使用道具 举报

6

主题

11

帖子

1

银币

初来乍到

Rank: 1

铜币
35
发表于 2006-4-5 14:16:00 | 显示全部楼层
不好意思,其是的centriod 应改成centroid
回复

使用道具 举报

6

主题

11

帖子

1

银币

初来乍到

Rank: 1

铜币
35
发表于 2006-4-5 14:21:00 | 显示全部楼层
调出来了,以下是可运行的代码:

Public Sub zx()
    Dim pt As Variant
    Dim spt1 As String
    Dim spt2 As String
    spt1 = 0 & "," & 0
    spt2 = 400 & "," & 400
    Dim n As Variant
    '创建面域
    Dim ssetobj As AcadSelectionSet
    Dim i As Integer
'清空选择集中已有的选择集,避免重名
  If ThisDrawing.SelectionSets.count > 0 Then
    For i = 0 To ThisDrawing.SelectionSets.count - 1
      ThisDrawing.SelectionSets.Item(i).Clear
      ThisDrawing.SelectionSets.Item(i).Delete
   Next
End If
   ThisDrawing.SendCommand "region" & vbCr & spt1 & vbCr & spt2 & vbCr & vbCr
    Set ssetobj = ThisDrawing.SelectionSets.Add("ss")
   
    Dim FType(0) As Integer
    Dim FData(0) As Variant
    FType(0) = 0
    FData(0) = "region"
    Dim FilterType As Variant
    Dim FilterData As Variant
    FilterType = FType
    FilterData = FData
    ssetobj.Select acSelectionSetAll, , , FilterType, FilterData
    k = ssetobj.count
    MsgBox k
    Dim area As Double
    Dim maxarea As Double
    maxarea = 1
    Dim pregion As AcadRegion
    Dim centroid As Variant
    Dim x As Double
    Dim y As Double
   
    For i = 0 To ssetobj.count - 1
      area = ssetobj.Item(i).area
       If maxarea
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 11:39 , Processed in 0.721976 second(s), 58 queries .

© 2020-2025 乐筑天下

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