明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 795|回复: 3

[基础] 如何获得类型为polyline的闭合二维多段线的面积

[复制链接]
发表于 2015-4-12 00:10 | 显示全部楼层 |阅读模式
我在用vla-get-area方法获取时,提示“错误: Automation 错误。 类无效”,然后用(vlax-dump-Object vla)查了下,信息如下:
; IAcadLWPolyline: AutoCAD Lightweight Polyline 接口
;特性值:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00b5e51c>
;   Area (RO) = AutoCAD.Application: 类无效
;   Closed = AutoCAD.Application: 类无效
;   ConstantWidth = AutoCAD.Application: 类无效
;   Coordinate = ...不显示带索引的内容...
;   Coordinates = AutoCAD.Application: 类无效
;   Document (RO) = #<VLA-OBJECT IAcadDocument 01e226b0>
;   Elevation = AutoCAD.Application: 类无效
;   Handle (RO) = "43C"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 03720e34>
;   Layer = "JZD"
;   Length (RO) = AutoCAD.Application: 类无效
;   Linetype = "CONTINUOUS"
;   LinetypeGeneration = AutoCAD.Application: 类无效
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Normal = AutoCAD.Application: 类无效
;   ObjectID (RO) = 2130115616
;   ObjectName (RO) = "AcDb2dPolyline"
;   OwnerID (RO) = 2130107584
;   PlotStyleName = "ByLayer"
;   Thickness = AutoCAD.Application: 类无效
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 03720d20>
;   Visible = -1
T
area特性确实是无效的,那这种情况下该如何获取其面积呢?还望高手们指教下!



"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2015-4-12 21:35 | 显示全部楼层
各位版主帮帮忙啊,这个没法搞定吗?
发表于 2015-4-13 08:49 | 显示全部楼层
  1. Option Explicit


  2. Public Sub SelectSinglePLine(returnObj As AcadPolyline, _
  3.     basePnt As Variant, _
  4.     blnESC As Boolean)
  5.    
  6.     On Error Resume Next
  7.     'If ThisDrawing.GetVariable("cmdactive") Then ThisDrawing.SendCommand "(command)" & vbCrLf
  8.     ' The following example waits for a selection from the user
  9. RETRY:
  10.     ThisDrawing.Utility.GetEntity returnObj, basePnt, "请选择任意一条多线段:"
  11.    
  12.     'Debug.Print Err.Number, Err.Description
  13.     If Err.Number = -2147352567 Then
  14.         blnESC = True
  15.         Exit Sub
  16.     End If
  17.    
  18.     If Err <> 0 Then
  19.         Err.Clear
  20.         GoTo RETRY
  21.     Else
  22.         returnObj.Highlight True
  23.         'MsgBox "The object type is: " & returnObj.EntityName, , "GetEntity 示例"
  24.         ' returnObj.Update
  25.     End If
  26.    
  27. End Sub


  28. Public Sub ss()
  29. Dim returnObj As AcadPolyline, basePnt As Variant, blnESC As Boolean
  30. SelectSinglePLine returnObj, basePnt, blnESC
  31. Debug.Print returnObj.Area
  32. End Sub

我用vba测试,没有任何问题呀
 楼主| 发表于 2015-4-14 11:26 | 显示全部楼层
zzyong00 发表于 2015-4-13 08:49
我用vba测试,没有任何问题呀

vba没用过,不太清楚,但是vlisp确实获取不了。不知为何
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 13:42 , Processed in 0.378963 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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