乐筑天下

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

关于图形属性,向各路大神求教~

[复制链接]

6

主题

10

帖子

3

银币

初来乍到

Rank: 1

铜币
34
发表于 2012-6-14 13:17:00 | 显示全部楼层 |阅读模式
  1.     For Each obj In ThisDrawing.ModelSpace
  2.                    Select Case obj.ObjectName
  3.              Case "AcDbLine":
  4.                 rst.Open "SELECT id FROM line", cn, adOpenForwardOnly, adLockReadOnly, adCmdText
  5.                 pt1 = obj.StartPoint
  6.                 pt2 = obj.EndPoint
  7.                
  8.                 If Not FindObj(rst, obj.ObjectID) Then      ' 新建的直线的处理
  9.                     cmd.CommandText = "INSERT INTO line(id,X1,Y1,X2,Y2) VALUES(" & _
  10.                         "'" & obj.ObjectID & "'," & pt1(0) & "," & pt1(1) & "," & pt2(0) & "," & pt2(1) & ");"
  11.                 Else                                        ' 修改的直线的处理
  12.                     cmd.CommandText = "UPDATE line SET X1=" & pt1(0) & ",Y1=" & pt1(1) & ",X2=" & _
  13.                         pt2(0) & ",Y2=" & pt2(1) & " WHERE id='" & obj.ObjectID & "';"
  14.                 End If
  15.                
  16.                 cmd.Execute
  17.                 rst.Close
  18.             Case "AcDbCircle":
  19.                 rst.Open "SELECT id FROM circle", cn, adOpenForwardOnly, adLockReadOnly, adCmdText
  20.                 pt1 = obj.Center
  21.                
  22.                 If Not FindObj(rst, obj.ObjectID) Then
  23.                     cmd.CommandText = "INSERT INTO circle(id,CenX,CenY,Rad) VALUES(" & _
  24.                         "'" & obj.ObjectID & "'," & pt1(0) & "," & pt1(1) & "," & obj.Radius & ");"
  25.                 Else
  26.                     cmd.CommandText = "UPDATE circle SET CenX=" & pt1(0) & ",CenY=" & pt1(1) & _
  27.                         ",Rad=" & obj.Radius & " WHERE id='" & obj.ObjectID & "';"
  28.                 End If
  29.                
  30.                 cmd.Execute
  31.                 rst.Close
  32.             Case "AcDbArc":
  33.                 rst.Open "SELECT id FROM arc", cn, adOpenForwardOnly, adLockReadOnly, adCmdText
  34.                 pt1 = obj.Center
  35.                
  36.                 If Not FindObj(rst, obj.ObjectID) Then
  37.                     cmd.CommandText = "INSERT INTO arc(id,CenX,CenY,Rad,StartAng,EndAng) VALUES(" & _
  38.                         "'" & obj.ObjectID & "'," & pt1(0) & "," & pt1(1) & "," & obj.Radius & "," & _
  39.                         obj.StartAngle & "," & obj.EndAngle & ");"
  40.                 Else
  41.                     cmd.CommandText = "UPDATE arc SET CenX=" & pt1(0) & ",CenY=" & pt1(1) & _
  42.                         ",Rad=" & obj.Radius & ",StartAng=" & obj.StartAngle & ",EndAng=" & _
  43.                         obj.EndAngle & " WHERE id='" & obj.ObjectID & "';"
  44.                 End If
  45.                
  46.                 cmd.Execute
  47.                 rst.Close

例如上面代码。。。我想知道多边形、椭圆 的obj.ObjectName?还有如何确定他们位置,例如圆是用X,Y坐标和obj.Radius 就能描述出来呢,那多边形、椭圆呢 用什么 确定位置 obj.什么和obj.什么??最好有个跟我上面代码类似的。。。小弟初学VBA,求各路大神帮助,多谢
回复

使用道具 举报

6

主题

59

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2012-9-11 09:01:00 | 显示全部楼层
矩形,多边形,pline的objectname都是lwpolyline,椭圆是ellipse,可以通过lisp的(entget (car (entsel)))查看,组码为0的是也!
回复

使用道具 举报

0

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
16
发表于 2012-9-11 13:47:00 | 显示全部楼层
ObjectID在64位元系统会产生错误讯息,建议改由Handle来纪录图元资讯...
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-30 02:24 , Processed in 1.126403 second(s), 59 queries .

© 2020-2025 乐筑天下

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