UserControl1.ctl
上传用户:yayuwl
上传日期:2022-03-18
资源大小:8952k
文件大小:8k
源码类别:

CAD

开发平台:

VBA

  1. VERSION 5.00
  2. Begin VB.UserControl UserControl1 
  3.    ClientHeight    =   3420
  4.    ClientLeft      =   0
  5.    ClientTop       =   0
  6.    ClientWidth     =   2535
  7.    ScaleHeight     =   3420
  8.    ScaleWidth      =   2535
  9.    Begin VB.CommandButton Command1 
  10.       Height          =   300
  11.       Left            =   2115
  12.       Picture         =   "UserControl1.ctx":0000
  13.       Style           =   1  'Graphical
  14.       TabIndex        =   15
  15.       Top             =   120
  16.       Width           =   300
  17.    End
  18.    Begin VB.Frame Frame2 
  19.       Caption         =   "属性数据"
  20.       Height          =   975
  21.       Left            =   120
  22.       TabIndex        =   9
  23.       Top             =   2280
  24.       Width           =   2295
  25.       Begin VB.TextBox Text6 
  26.          Height          =   300
  27.          Left            =   1080
  28.          TabIndex        =   11
  29.          Top             =   600
  30.          Width           =   1095
  31.       End
  32.       Begin VB.TextBox Text5 
  33.          Height          =   300
  34.          Left            =   1080
  35.          TabIndex        =   10
  36.          Top             =   240
  37.          Width           =   1095
  38.       End
  39.       Begin VB.Label Label6 
  40.          Caption         =   "地址:"
  41.          Height          =   200
  42.          Left            =   120
  43.          TabIndex        =   13
  44.          Top             =   650
  45.          Width           =   735
  46.       End
  47.       Begin VB.Label Label5 
  48.          Caption         =   "编号:"
  49.          Height          =   200
  50.          Left            =   120
  51.          TabIndex        =   12
  52.          Top             =   290
  53.          Width           =   735
  54.       End
  55.    End
  56.    Begin VB.Frame Frame1 
  57.       Caption         =   "图形数据"
  58.       Height          =   1695
  59.       Left            =   120
  60.       TabIndex        =   0
  61.       Top             =   480
  62.       Width           =   2295
  63.       Begin VB.TextBox Text4 
  64.          Height          =   300
  65.          Left            =   1080
  66.          TabIndex        =   8
  67.          Top             =   1320
  68.          Width           =   1095
  69.       End
  70.       Begin VB.TextBox Text1 
  71.          Height          =   300
  72.          Left            =   1080
  73.          TabIndex        =   5
  74.          Top             =   240
  75.          Width           =   1095
  76.       End
  77.       Begin VB.TextBox Text3 
  78.          Height          =   300
  79.          Left            =   1080
  80.          TabIndex        =   4
  81.          Top             =   960
  82.          Width           =   1095
  83.       End
  84.       Begin VB.TextBox Text2 
  85.          Height          =   300
  86.          Left            =   1080
  87.          TabIndex        =   3
  88.          Top             =   600
  89.          Width           =   1095
  90.       End
  91.       Begin VB.Label Label4 
  92.          Caption         =   "半径(&R):"
  93.          Height          =   195
  94.          Left            =   120
  95.          TabIndex        =   7
  96.          Top             =   1365
  97.          Width           =   735
  98.       End
  99.       Begin VB.Label Label1 
  100.          Caption         =   "X(&X)坐标:"
  101.          Height          =   200
  102.          Left            =   120
  103.          TabIndex        =   6
  104.          Top             =   290
  105.          Width           =   735
  106.       End
  107.       Begin VB.Label Label3 
  108.          Caption         =   "Z(&Z)坐标:"
  109.          Height          =   200
  110.          Left            =   120
  111.          TabIndex        =   2
  112.          Top             =   1010
  113.          Width           =   735
  114.       End
  115.       Begin VB.Label Label2 
  116.          Caption         =   "Y(&Y)坐标:"
  117.          Height          =   200
  118.          Left            =   120
  119.          TabIndex        =   1
  120.          Top             =   650
  121.          Width           =   735
  122.       End
  123.    End
  124.    Begin VB.Label Label7 
  125.       Caption         =   "选择对象(&O):"
  126.       Height          =   195
  127.       Left            =   120
  128.       TabIndex        =   14
  129.       Top             =   173
  130.       Width           =   735
  131.    End
  132. End
  133. Attribute VB_Name = "UserControl1"
  134. Attribute VB_GlobalNameSpace = False
  135. Attribute VB_Creatable = True
  136. Attribute VB_PredeclaredId = False
  137. Attribute VB_Exposed = True
  138. Option Explicit
  139. Dim dockContainer As AcadDockableContainer
  140. Implements IRetrieveDockableContainer
  141. Dim AcadApp As Object
  142. Dim EntObj As Object
  143. Private Sub Command1_Click()
  144.     Dim pPt As Variant
  145.     Dim xdt As Variant
  146.     Dim xdv As Variant
  147.     
  148.     On Error GoTo ErrTrap
  149.     ' 选择对象
  150.     AcadApp.ActiveDocument.Utility.GetEntity EntObj, pPt
  151.     ' 判断对象的类型是否是圆
  152.     If StrComp(EntObj.objectname, "AcDbCircle", vbTextCompare) = 0 Then
  153.         ' 返回圆心
  154.         pPt = EntObj.Center
  155.         Text1.Text = Round(pPt(0), 4)
  156.         Text2.Text = Round(pPt(1), 4)
  157.         Text3.Text = Round(pPt(2), 4)
  158.         ' 返回半径
  159.         Text4.Text = Round(EntObj.Radius, 4)
  160.         Text5.Text = ""
  161.         Text6.Text = ""
  162.         ' 返回扩展数据
  163.         EntObj.GetXData "电杆", xdt, xdv
  164.         If UBound(xdt) = 2 Then
  165.             Text5.Text = xdv(1)
  166.             Text6.Text = xdv(2)
  167.         End If
  168.     End If
  169.     Exit Sub
  170. ErrTrap:
  171.     ' 没有选中对象时,ACAD在系统变量ERRNO中记录。
  172.     If AcadApp.ActiveDocument.GetVariable("ERRNO") = 7 Then
  173.         Resume
  174.     End If
  175. End Sub
  176. Private Sub IRetrieveDockableContainer_SetDockContainer(ByVal newVal As AC_CONT.IAcadDockableContainer)
  177.     Set dockContainer = newVal
  178.     ' 设置可停靠窗体的标题
  179.     dockContainer.Caption = "对象数据"
  180.     dockContainer.EnableDockPositions = acDockLeft + acDockRight
  181.     
  182.     ' 设置可停靠窗体的大小
  183.     Dim rect(0 To 3) As Integer
  184.     rect(0) = 0
  185.     rect(1) = 0
  186.     rect(2) = 180
  187.     rect(3) = 240
  188.     dockContainer.SetPreferredDockPosition acFloating, rect
  189. End Sub
  190. Private Sub UserControl_Initialize()
  191.     Set AcadApp = GetObject(, "AutoCAD.Application")
  192.     Set EntObj = Nothing
  193. End Sub
  194. Private Sub Text1_LostFocus()
  195.     Dim pPt(0 To 2) As Double
  196.     On Error Resume Next
  197.     ' 改变圆的位置
  198.     pPt(0) = Text1.Text
  199.     pPt(1) = Text2.Text
  200.     pPt(2) = Text3.Text
  201.     EntObj.Center = pPt
  202.     EntObj.Update
  203. End Sub
  204. Private Sub Text2_LostFocus()
  205.     Dim pPt(0 To 2) As Double
  206.     On Error Resume Next
  207.     ' 改变圆的位置
  208.     pPt(0) = Text1.Text
  209.     pPt(1) = Text2.Text
  210.     pPt(2) = Text3.Text
  211.     EntObj.Center = pPt
  212.     EntObj.Update
  213. End Sub
  214. Private Sub Text3_LostFocus()
  215.     Dim pPt(0 To 2) As Double
  216.     On Error Resume Next
  217.     ' 改变圆的位置
  218.     pPt(0) = Text1.Text
  219.     pPt(1) = Text2.Text
  220.     pPt(2) = Text3.Text
  221.     EntObj.Center = pPt
  222.     EntObj.Update
  223. End Sub
  224. Private Sub Text4_LostFocus()
  225.     On Error Resume Next
  226.     ' 改变圆的大小
  227.     EntObj.Radius = Text4.Text
  228.     EntObj.Update
  229. End Sub
  230. Private Sub Text5_LostFocus()
  231.     Dim xdt(0 To 2) As Integer
  232.     Dim xdv(0 To 2) As Variant
  233.     
  234.     On Error Resume Next
  235.     ' 设置扩展数据
  236.     xdt(0) = 1001
  237.     xdv(0) = "电杆"
  238.     xdt(1) = 1000
  239.     xdv(1) = Text5.Text
  240.     xdt(2) = 1000
  241.     xdv(2) = Text6.Text
  242.     EntObj.SetXData xdt, xdv
  243. End Sub
  244. Private Sub Text6_LostFocus()
  245.     Dim xdt(0 To 2) As Integer
  246.     Dim xdv(0 To 2) As Variant
  247.     
  248.     On Error Resume Next
  249.     ' 设置扩展数据
  250.     xdt(0) = 1001
  251.     xdv(0) = "电杆"
  252.     xdt(1) = 1000
  253.     xdv(1) = Text5.Text
  254.     xdt(2) = 1000
  255.     xdv(2) = Text6.Text
  256.     EntObj.SetXData xdt, xdv
  257. End Sub
  258. Private Sub UserControl_Resize()
  259.     ' 调整控件大小和位置
  260.     If UserControl.Width < 2500 Then UserControl.Width = 2500
  261.     If UserControl.Height < 3400 Then UserControl.Height = 3400
  262.     
  263.     Frame1.Width = UserControl.Width - 240
  264.     Command1.Left = Frame1.Left + Frame1.Width - Command1.Width
  265.     Text1.Width = Frame1.Width - 1200
  266.     Text2.Width = Frame1.Width - 1200
  267.     Text3.Width = Frame1.Width - 1200
  268.     Text4.Width = Frame1.Width - 1200
  269.     Frame2.Width = UserControl.Width - 240
  270.     Text5.Width = Frame2.Width - 1200
  271.     Text6.Width = Frame2.Width - 1200
  272. End Sub