找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 496|回复: 4

[求助]:vb获取cad 的面域的信息

[复制链接]
发表于 2006-2-11 22:33:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请问如何用vb获取cad 的面域的的各种特性..谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-2-12 13:28:23 | 显示全部楼层
面域,由线、圆、弧、椭圆弧及样条曲线组成的带边界平面。

VBA 类名:
AcadRegion

创建方法:
ModelSpace.AddRegion
PaperSpace.AddRegion
Block.AddRegion

访问途径:
ModelSpace.Item
PaperSpace.Item
Block.Item
SelectionSet.Item
Group.Item


在面域中的每一对象保留着其图层、线型和颜色。AutoCAD 在将它们转换为面域后删除了原始对象,默认情况下面域不填充。

用户可用 Explode 方法分解面域为单独的边界。 Boolean 方法允许用户将实体或面域与其它实体或面域进行交集、并集和差集来创建复合的三维实体或面域。

要创建面域,可使用 AddRegion 方法。要编辑或查询面域,可使用以下方法和属性: 方法

ArrayPolar

ArrayRectangular

Boolean[布尔值]

Copy

Delete

Explode

GetBoundingBox

GetExtensionDictionary

GetXData

Highlight

IntersectWith

Mirror

Mirror3D

Move

Rotate

Rotate3D

ScaleEntity

SetXData

TransformBy

Update
属性

Application

Area

Centroid

Document

Handle

HasExtensionDictionary

Hyperlinks

Layer

Linetype

LinetypeScale

Lineweight

MomentOfInertia

Normal

ObjectID

ObjectName

OwnerID

Perimeter

PlotStyleName

PrincipalDirections

PrincipalMoments

ProductOfInertia

RadiiOfGyration

TrueColor

Visible
事件

Modified
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 20:14:15 | 显示全部楼层
经下为我用VB写的程序

Private Sub Command1_Click()   '调用CAD,所有调用CAD,都必须用它
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
   Err.Clear
   Set acadApp = CreateObject("AutoCAD.Application")
   If Err Then
      MsgBox Err.Description
      Exit Sub
   End If
End If
acadApp.Visible = True
Set Preference = acadApp.Preference
Set acaddoc = acadApp.ActiveDocument
Set MoSpace = acaddoc.ModelSpace
Set Paspace = acaddoc.PaperSpace
End Sub


Private Sub Command2_Click()
Dim I As Integer

For I = 0 To MoSpace.Count - 1
If MoSpace(I).EntityType = AcadRegion Then
      MsgBox "acregion was selected!!"
      End If
      Next I
End Sub
运行后出现"AcadRegion"变量没有定义的错误.请问如何解决?
在线守候!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-12 20:53:47 | 显示全部楼层
If MoSpace(I).objectname = "AcadRegion" Then
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 21:24:12 | 显示全部楼层
Option Explicit
Dim acadApp As Object
Dim Preference As Object
Dim acaddoc As Object
Dim Paspace As Object
Dim MoSpace As Object

Private Sub Command1_Click()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
   Err.Clear
   Set acadApp = CreateObject("AutoCAD.Application")
   If Err Then
      MsgBox Err.Description
      Exit Sub
   End If
End If
acadApp.Visible = True
Set Preference = acadApp.Preference
Set acaddoc = acadApp.ActiveDocument
Set MoSpace = acaddoc.ModelSpace
Set Paspace = acaddoc.PaperSpace


Dim I As Integer

For I = 0 To MoSpace.Count - 1
If MoSpace(I).ObjectName = "AcadRegion" Then
      MsgBox "acregion was selected!!"
      End If
      Next I
End Sub

我在cad 中选中了一个然后点command1,,为什么没出现msgbox提示

版主能不能帮我修改一下这些代码.使得我在cad中选中一个面域后,
点 command1.  text控件的内容等于该面域的面积??????谢谢!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 02:51 , Processed in 0.313024 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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