明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1056|回复: 0

求助:关于SelectByPolygon

[复制链接]
发表于 2011-4-23 01:51:00 | 显示全部楼层 |阅读模式
我想通过四点坐标建立选择集   为什么总是提示  模式或点列表错误啊  ?
  1. Private Sub CommandButton1_Click()
  2.   UserForm1.hide
  3.   Dim ssdmx As AcadSelectionSet, TDMX As Object, FTDMX(1) As Integer, FDDMX(1) As Variant
  4.   Dim ssgcd As AcadSelectionSet, Tgcd As Object, FTgcd(1) As Integer, FDgcd(1) As Variant
  5.   Dim Pxdmx1 As Double
  6.   Dim Pxdmx2 As Double
  7.   Dim Pydmx1 As Double
  8.   Dim Pydmx2 As Double
  9.   Dim V As Variant '断面线顶点坐标
  10.   Dim sin As Double
  11.   Dim cos As Double
  12.   Dim pfwx(12) As Double
  13.   Dim kx As Double
  14.   Dim ky As Double
  15.   
  16. ' FTDMX(0) = 0: FDDMX(0) = "LWPOLYLINE"
  17.   Set ssdmx = ThisDrawing.SelectionSets.Add("ssdmx")
  18.   ssdmx.SelectOnScreen 'FTDMX, FDDMX
  19.   If ssdmx.Count > 0 Then
  20.     V = ssdmx.Item(ssdmx.Count - 1).Coordinates '提取二维多段线顶点坐标(二维)
  21.     For I = 0 To 1
  22.       If I = 0 Then
  23.         Pxdmx1 = V(I * 2)
  24.         Pydmx1 = V(I * 2 + 1)
  25.       End If
  26.       If I = 1 Then
  27.         Pxdmx2 = V(I * 2)
  28.         Pydmx2 = V(I * 2 + 1)
  29.       End If
  30.     Next I
  31.   End If
  32.   ssdmx.Delete
  33.   If Pxdmx1 - Pxdmx2 = 0 Then
  34.     If Pydmx1 > Pydmx2 Then
  35.       kx = Pxdmx1
  36.       ky = Pydmx1
  37.       Pydmx1 = Pydmx2
  38.       Pydmx2 = ky
  39.       Pxdmx1 = Pxdmx2
  40.       Pxdmx2 = kx
  41.     End If
  42.     pfwx(0) = Pxdmx1 + Val(TextBox1.Text): pfwx(1) = Pydmx1: pfwx(2) = 0
  43.     pfwx(3) = Pxdmx2 + Val(TextBox1.Text): pfwx(4) = Pydmx2: pfwx(5) = 0
  44.     pfwx(6) = Pxdmx2 - Val(TextBox1.Text): pfwx(7) = Pydmx2: pfwx(8) = 0
  45.     pfwx(9) = Pxdmx1 - Val(TextBox1.Text): pfwx(10) = Pydmx1: pfwx(11) = 0
  46.   End If
  47.   If (Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2) = 0 Then
  48.     If Pxdmx1 > Pxdmx2 Then
  49.       kx = Pxdmx1
  50.       ky = Pydmx1
  51.       Pydmx1 = Pydmx2
  52.       Pydmx2 = ky
  53.       Pxdmx1 = Pxdmx2
  54.       Pxdmx2 = kx
  55.     End If
  56.     pfwx(0) = Pxdmx1: pfwx(1) = Pydmx1 - Val(TextBox1.Text): pfwx(2) = 0
  57.     pfwx(3) = Pxdmx2: pfwx(4) = Pydmx2 - Val(TextBox1.Text): pfwx(5) = 0
  58.     pfwx(6) = Pxdmx2: pfwx(7) = Pydmx2 + Val(TextBox1.Text): pfwx(8) = 0
  59.     pfwx(9) = Pxdmx1: pfwx(10) = Pydmx1 + Val(TextBox1.Text): pfwx(11) = 0
  60.   End If
  61.   If (Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2) > 0 Then
  62.     If Pxdmx1 > Pxdmx2 Then
  63.       kx = Pxdmx1
  64.       ky = Pydmx1
  65.       Pydmx1 = Pydmx2
  66.       Pydmx2 = ky
  67.       Pxdmx1 = Pxdmx2
  68.       Pxdmx2 = kx
  69.     End If
  70.     cos = (Pydmx1 - (Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2) * Pxdmx1) / (((Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2) * Pxdmx1 - Pydmx1) * (Pxdmx1 - Pxdmx2) / (Pydmx1 - Pydmx2))
  71.     sin = (((Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2) * Pxdmx1 - Pydmx1) * (Pxdmx1 - Pxdmx2) / (Pydmx1 - Pydmx2)) / (Pydmx1 - (Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2) * Pxdmx1)
  72.     pfwx(0) = Pxdmx1 + Val(TextBox1.Text) * cos: pfwx(1) = Pydmx1 - Val(TextBox1.Text) * sin: pfwx(2) = 0
  73.     pfwx(3) = Pxdmx2 + Val(TextBox1.Text) * cos: pfwx(4) = Pydmx2 - Val(TextBox1.Text) * sin: pfwx(5) = 0
  74.     pfwx(6) = Pxdmx2 - Val(TextBox1.Text) * cos: pfwx(7) = Pydmx2 + Val(TextBox1.Text) * sin: pfwx(8) = 0
  75.     pfwx(9) = Pxdmx1 - Val(TextBox1.Text) * cos: pfwx(10) = Pydmx1 + Val(TextBox1.Text) * sin: pfwx(11) = 0
  76.   End If
  77.   If (Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2) < 0 Then
  78.     If Pxdmx1 < Pxdmx2 Then
  79.       kx = Pxdmx1
  80.       ky = Pydmx1
  81.       Pydmx1 = Pydmx2
  82.       Pydmx2 = ky
  83.       Pxdmx1 = Pxdmx2
  84.       Pxdmx2 = kx
  85.     End If
  86.     sin = (Pydmx1 - ((Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2)) * Pxdmx1) / (((Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2) * Pxdmx1 - Pydmx1) * (Pxdmx1 - Pxdmx2) / (Pydmx1 - Pydmx2))
  87.     cos = (((Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2) * Pxdmx1 - Pydmx1) * (Pxdmx1 - Pxdmx2) / (Pydmx1 - Pydmx2)) / (Pydmx1 - ((Pydmx1 - Pydmx2) / (Pxdmx1 - Pxdmx2)) * Pxdmx1)
  88.     pfwx(0) = Pxdmx1 + Val(TextBox1.Text) * sin: pfwx(1) = Pydmx1 + Val(TextBox1.Text) * cos: pfwx(2) = 0
  89.     pfwx(3) = Pxdmx2 + Val(TextBox1.Text) * sin: pfwx(4) = Pydmx2 + Val(TextBox1.Text) * cos: pfwx(5) = 0
  90.     pfwx(6) = Pxdmx2 - Val(TextBox1.Text) * sin: pfwx(7) = Pydmx2 - Val(TextBox1.Text) * cos: pfwx(8) = 0
  91.     pfwx(9) = Pxdmx1 - Val(TextBox1.Text) * sin: pfwx(10) = Pydmx1 - Val(TextBox1.Text) * cos: pfwx(11) = 0
  92.    ' pfwx(12) = Pxdmx1 + Val(TextBox1.Text) * sin: pfwx(13) = Pydmx1 + Val(TextBox1.Text) * cos: pfwx(14) = 0
  93.   End If
  94.   FTgcd(0) = 8: FDgcd(0) = "gcd"
  95.   Set ssgcd = ThisDrawing.SelectionSets.Add("gcd")
  96.   ssgcd.SelectByPolygon acSelectionSetWindowPolygon, pfwx, FTgcd, FDgcd
  97.   If ssgcd.Count > 0 Then
  98.     For Each Tgcd In gcd
  99.       I = I + 1
  100.       Tgcd.Delete
  101.     Next
  102.   End If
  103. End sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 21:37 , Processed in 0.154719 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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