Тема: Как получить доступ к точкам привязки размеров, средствами VBA (AcadDimRotated)
Добрый день, уважаемые коллеги. Аналогичная тема уже рассматривалась.
http://forum.dwg.ru/showthread.php?t=66011
Подскажите есть ли способ получать точки привязки и назначать точки привязки
размеров. Кроме солянки, ранее предложенной в голову ничего не приходит.
Sub selectRotatedDimension() Dim returnObj As AcadEntity Dim temp, startPnt, endPnt, varCancel As Variant Dim control As Boolean On Error GoTo Error_Control control = False 'Программа выполняется до тех пор, пока не выбран нужный примитив или не нажата клавиша ESC Do Until control = True ThisDrawing.Utility.GetEntity returnObj, startPnt, vbCrLf & "Command: Выберите объект типа AcDbRotatedDimension:" If returnObj.ObjectName = "AcDbRotatedDimension" Then 'В командную строку передается LISP-выражение, возвращающее первую точку в WCS (код DXF - 13) ThisDrawing.SendCommand ("(cdr (assoc 13 (entget (handent " & """" & returnObj.Handle & """" & "))))" & vbCr) temp = Mid(CStr(ThisDrawing.GetVariable("lastprompt")), 2, Len(CStr(ThisDrawing.GetVariable("lastprompt"))) - 2) 'В переменную startPnt записывается массив с координатами первой точки startPnt = Split(temp, " ", , vbTextCompare) If IsArray(startPnt) Then MsgBox "Первая точка: " & startPnt(0) & ";" & startPnt(1) & ";" & startPnt(2) End If 'В командную строку передается LISP-выражение, возвращающее вторую точку в WCS (код DXF - 14) ThisDrawing.SendCommand ("(cdr (assoc 14 (entget (handent " & """" & returnObj.Handle & """" & "))))" & vbCr) temp = Mid(CStr(ThisDrawing.GetVariable("lastprompt")), 2, Len(CStr(ThisDrawing.GetVariable("lastprompt"))) - 2) 'В переменную endPnt записывается массив с координатами второй точки endPnt = Split(temp, " ", , vbTextCompare) If IsArray(endPnt) Then MsgBox "Вторая точка: " & endPnt(0) & ";" & endPnt(1) & ";" & endPnt(2) End If control = True Else MsgBox "Выбранный объект не является объектом типа AcDbRotatedDimension." End If Loop GoTo Exit_Here Error_Control: Select Case Err.Number Case -2147352567 varCancel = ThisDrawing.GetVariable("LASTPROMPT") If InStr(1, varCancel, "*Cancel*") <> 0 Then ThisDrawing.Utility.Prompt "Выполнение программы прервано." Err.Clear Resume Exit_Here Else Err.Clear Resume End If Case -2145320928 Err.Clear Resume Exit_Here Case Else MsgBox Err.Description & " " & Err.Number Err.Clear Resume Exit_Here End Select Exit_Here: Set returnObj = Nothing Set temp = Nothing Set startPnt = Nothing Set endPnt = Nothing Set varCancel = Nothing End Sub