明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1112|回复: 2

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

[复制链接]
发表于 2012-6-14 13:17:31 | 显示全部楼层 |阅读模式
  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,求各路大神帮助,多谢
发表于 2012-9-11 09:01:28 | 显示全部楼层
矩形,多边形,pline的objectname都是lwpolyline,椭圆是ellipse,可以通过lisp的(entget (car (entsel)))查看,组码为0的是也!
发表于 2012-9-11 13:47:33 | 显示全部楼层
ObjectID在64位元系统会产生错误讯息,建议改由Handle来纪录图元资讯...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 16:48 , Processed in 0.160463 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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