как в sendcommand блокировать передачу управления проекту
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как в sendcommand блокировать передачу управления проекту

как в sendcommand блокировать передачу управления проекту

Ответ
Поиск в этой теме
Непрочитано 13.10.2005, 18:56 #1
как в sendcommand блокировать передачу управления проекту
disintegrator
 
Регистрация: 11.10.2005
Сообщений: 15

Хочу отрезать кусок блока по полилинии с помощью команды xclip.Точки полилинии хочу задат программно, вот текст:

ThisDrawing.SendCommand ("xclip ")
ThisDrawing.SendCommand ("100,100,0 ")
ThisDrawing.SendCommand ("200,200,0 ") ThisDrawing.SendCommand (vbCr)
ThisDrawing.SendCommand (vbCr)
ThisDrawing.SendCommand ("p")
For j = 1 To UBound(Mas(i).Coordinates) Step 2
!!!!!ThisDrawing.SendCommand (" " & LTrim(Str(Mas(i).Coordinates(j))) & "," & LTrim(Str(MasPolyLineRazr(i).Coordinates(j + 1))) & ",0 ")

При выполнении последнего оператора управление переходит Autocad и он хочет , чтобы я выбрал точки. Как этого избежать и задавать точки программно?
Просмотров: 2949
 
Непрочитано 13.10.2005, 23:49
#2
Arkady

AutoCad Development and Support
 
Регистрация: 21.08.2003
Israel
Сообщений: 183
Отправить сообщение для Arkady с помощью Skype™


Проверял в 2005 автокаде.

В твоем варианте ,я думаю, проблема здесь
Код:
[Выделить все]
Mas(i).Coordinates(j)
VBA(VB) не дает доступа к obj.Coordinates напрямую.Нужно так
Код:
[Выделить все]
Dim dCoords() As Double
dCoords = oObj2.Coordinates
Предлагаю два варианта: с выбором границы как полилинии и выборам списка точек.
Код:
[Выделить все]
Public Sub MyXClip1()
Dim oObj1 As Object
Dim oObj2 As Object
Dim vp As Variant
On Error Resume Next
Call ThisDrawing.Utility.GetEntity(oObj1, vp, "Select XRef object:")
If Err.Number <> 0 Then
   Err.Clear
   Exit Sub
End If
If Not TypeOf oObj1 Is AcadExternalReference Then
  Exit Sub
End If

Call ThisDrawing.Utility.GetEntity(oObj2, vp, "Select boundary object:")
If Err.Number <> 0 Then
   Err.Clear
   Exit Sub
End If
If Not TypeOf oObj2 Is AcadPolyline And Not TypeOf oObj2 Is AcadLWPolyline Then
  Exit Sub
End If
Dim cline As String
cline = "XCLIP " & "(handent " & Chr(34) & oObj1.Handle & Chr(34) & ")" & vbNewLine
cline = cline & "New S (handent " & Chr(34) & oObj2.Handle & Chr(34) & ")" & vbCr
ThisDrawing.SendCommand (cline)
End Sub
И второй
Код:
[Выделить все]
Public Sub MyXClip2()
Dim oObj1 As Object
Dim oObj2 As Object
Dim vp As Variant
On Error Resume Next
Call ThisDrawing.Utility.GetEntity(oObj1, vp, "Select XRef object:")
If Err.Number <> 0 Then
   Err.Clear
   Exit Sub
End If
If Not TypeOf oObj1 Is AcadExternalReference Then
  Exit Sub
End If

Call ThisDrawing.Utility.GetEntity(oObj2, vp, "Select boundary object:")
If Err.Number <> 0 Then
   Err.Clear
   Exit Sub
End If
If Not TypeOf oObj2 Is AcadPolyline And Not TypeOf oObj2 Is AcadLWPolyline Then
  Exit Sub
End If


Dim lCount As Long
Dim i As Integer
Dim iStep As Integer
Dim dCoords() As Double

If TypeOf oObj2 Is AcadPolyline Then
   iStep = 3
ElseIf TypeOf oObj2 Is AcadLWPolyline Then
   iStep = 2
End If
dCoords = oObj2.Coordinates
lCount = UBound(dCoords)

Dim cline As String
cline = "XCLIP " & "(handent " & Chr(34) & oObj1.Handle & Chr(34) & ")" & vbNewLine
cline = cline & "New P "
For i = 0 To lCount Step iStep
 cline = cline & Format(dCoords(i), "0.000") & "," & Format(dCoords(i + 1), "0.000") & vbCr
Next i
cline = cline & vbCr
ThisDrawing.SendCommand (cline)
End Sub
Arkady вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как в sendcommand блокировать передачу управления проекту