乐筑天下

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

封闭对象里选取一点直接求取面积的问题?

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2005-4-25 23:42:00 | 显示全部楼层 |阅读模式
&lt class=MsoPlainText>有以下的VBA代码,目的是在CAD图形的一个封闭对象里选取一点用来直接求取该封闭图形的面积:
&lt class=MsoPlainText>Sub Ar()
&lt class=MsoPlainText>Dim P0 As Variant                                                 '用户指定的图斑内点
&lt class=MsoPlainText>Dim PlineObj As AcadLWPolyline                                                                         '边界曲线
&lt class=MsoPlainText>Dim Area As Double                                                                                                                                                                         '面积
&lt class=MsoPlainText>Dim X() As Double, Y() As Double                                                         '坐标
&lt class=MsoPlainText>Dim Pn As Integer, i As Integer
&lt class=MsoPlainText>Dim PointTmp As Variant
&lt class=MsoPlainText&gt0 = ThisDrawing.Utility.GetPoint(, "请在图斑内指定一点")                                                                                         '得到图斑内一点
&lt class=MsoPlainText>ThisDrawing.SendCommand ("-boundary" & P0(0) & "," & P0(1) & "")                                 '创建边界
&lt class=MsoPlainText>        
&lt class=MsoPlainText>[U]Set PlineObj = ThisDrawing.ModelSpace.Item(ThisDrawing.ModelSpace.Count - 1)                                                         '边界线对象[/U]
&lt class=MsoPlainText>        
&lt class=MsoPlainText>Area = PlineObj.Area                                                                                                                                                                                                                         '面积
&lt class=MsoPlainText&gtn = (UBound(PlineObj.Coordinates) + 1) / 2                                         '点数
&lt class=MsoPlainText>ReDim X(1 To Pn), Y(1 To Pn)
&lt class=MsoPlainText>For i = 1 To Pn
&lt class=MsoPlainText>                         PointTmp = PlineObj.Coordinate(i - 1)
&lt class=MsoPlainText>                         X(i) = PointTmp(1)                                                                         'X坐标
&lt class=MsoPlainText>                         Y(i) = PointTmp(0)                                                                         'Y坐标
&lt class=MsoPlainText>Next i
&lt class=MsoPlainText>End Sub
&lt class=MsoPlainText>        
但每次运行总发生运行时错误13’类型不匹配(在'边界线对象行),请教大虾:究竟有什么不妥?会否和程序的版本有关?我用的是CAD2002迷你版。
回复

使用道具 举报

11

主题

51

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2005-4-26 12:30:00 | 显示全部楼层
出现错误的是这条语句:
ThisDrawing.SendCommand ("-boundary" & P0(0) & "," & P0(1) & "")                                 '创建边界
应当注意到SendCommand的定义格式为:object.SendCommand(Command as String)
应该修改为:
ThisDrawing.SendCommand "-boundary" & vbCr & CStr(P0(0)) & "," & CStr(P0(1)) & vbCr & vbCr
注意:在Command的尾部应当加两个vbCr字符。
回复

使用道具 举报

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2005-5-2 10:11:00 | 显示全部楼层
依然会有错误,每次逐行运行不会产生这个错误13’类型不匹配,但是总体运行时便会产生,这个是不是和sendcommand语句有关,根据设置断点等方法后发现,只有在完全退出程序后vba才能识别出刚才产生的多样线,(当然逐语句运行不会有错)。请各位高手解答,谢谢。
ps:sendcommand最好修改为
ThisDrawing.SendCommand "-boundary" & vbCr & "a" & vbCr & "o" &vbCr & "p" & vbCr & vbCr & CStr(P0(0)) & "," & CStr(P0(1)) & vbCr & vbCr
用来保证创建的是多样线,不然有可能创建的会是面域(默认选项不定)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-22 23:47 , Processed in 1.160943 second(s), 58 queries .

© 2020-2025 乐筑天下

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