Тема: Как получить информацию, которую выдаёт команда list о графических объектах?

Мне нужна информация которую выдаёт команда list о графических объектах.
В частности координаты точек полилинии. Эта информация выдаётся в командный файл постепенно. Объектов может быть несколько сотен и поэтому долго вытаскивать эту информацию.
Хорошо было бы перенаправлять всё в файл.

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

Я непонятно спросил?

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

Недавно делал что-то подобное:

Option Explicit
' Для замкнутых облегченных полилиний
Sub WriteCoorsToTextFile()
Dim oSset As AcadSelectionSet
Dim oPoly As AcadLWPolyline
Dim oEntity As AcadEntity
Dim coorArr As Variant
Dim ftype(1) As Integer
Dim fdata(1) As Variant
On Error GoTo Something_Wrong_Here
  For Each oSset In ThisDrawing.SelectionSets
  If oSset.Name = "$Parcels$" Then
  oSset.Delete
  End If
  Next
  Set oSset = ThisDrawing.SelectionSets.Add("$Parcels$")
ftype(0) = 0: ftype(1) = 70
fdata(0) = "LWPOLYLINE": fdata(1) = 1
oSset.SelectOnScreen ftype, fdata
Dim tmpArr() As Variant
Dim I, j, m As Long
Dim fName, inpStr As String
Dim fDesc As Integer
fDesc = FreeFile
fName = InputBox("Enter file name without extension", "File Name")
fName = ThisDrawing.Path & "\" & fName & ".txt"
Open fName For Output As fDesc
j = 1
m = 1
For Each oEntity In oSset
Set oPoly = oEntity
coorArr = Get_LWPlineVertices(oPoly)
inpStr = "* Area of polyline" & j & " * " & Format(oPoly.Area, "0.0000")
Print #fDesc, inpStr
For I = 0 To UBound(coorArr, 1)
inpStr = Str(m) & Chr(32) & Str(coorArr(I, 0)) & "," & Str(coorArr(I, 1))
Print #fDesc, inpStr
m = m + 1
Next I
j = j + 1
Next oEntity
Close #fDesc
ThisDrawing.SelectionSets.Item("$Parcels$").Delete
Something_Wrong_Here:
MsgBox Err.Description
End Sub
Public Function Get_LWPlineVertices(oPoly As AcadLWPolyline) As Variant
Dim oCoords As Variant
Dim vCnt, vxcnt, iCnt, jCnt As Integer
oCoords = oPoly.Coordinates
vCnt = 0
vxcnt = (UBound(oCoords) - 1) / 2
ReDim ptArray(0 To vxcnt, 0 To 1)
For iCnt = 0 To vxcnt
For jCnt = 0 To 1
ptArray(iCnt, jCnt) = oCoords(vCnt)
vCnt = vCnt + 1
Next jCnt
Next iCnt
Get_LWPlineVertices = ptArray
End Function

____________________________
Переделай по обстоятельствам
Fatty
~'J'~

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

Неужели нельзя просто перенаправить в текстовый файл всё то, что выдаёт команда list?

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> olegator
Можно. Но не в VBA.

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> olegator
На VBA не выйдет согласен, копай в сторону ARX/C++
~'J'~

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

1. В VBA нельзя, что сделать? Перенаправить поток или сохранить в текстовом файле?
2. Может быть Lisp умеет это делать?

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

Только ObjectARX.

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

3. Какой метод какого объекта вызывается командой list?

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> olegator
Никакой. В ObjectARX вызывается метод list(), в VBA/LISP - ничего!

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

По этой ссылке есть код VBA Excel для переноса координат полилинии из AutoCAD в Excel:
http://www.cad.dp.ua/stats/a_vba/conten … portVerts1
Но только координаты получаются какие-то не те.

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

И выше по той же ссылке:
Сохранение координат полилинии в текстовом файле

Только почему-то не работает

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> olegator
Не знаю у меня все что по ссылке работает
(и моя естественно тоже)
Возможная причины либо не указана библиотека
в соответствии с твоей версией автокада,
(в ссылке указана для А2000)б либо у тебя
стоит кривая библиотека commdlg.dll и commdlg.ocx
И если для Экселя то еще нужно подгружать
библиотеку Microsoft Office Excel.10 Object Library (свою версию Экселя)
Напомню что библиотеки подгружаются в редакторе
VBA: Tools->References-> там ищи что нужно
~'J'~

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

Сохранение координат полилинии в текстовом файле
Этот вариант у меня получилось запустить. Но только координаты получаются не такие, если полилинию начертить в произвольной плоскости.
Только если мировая система координат. Тогда координаты совпадают с тем что на чертеже.

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> Fatty
На VBA не выйдет согласен, копай в сторону ARX/C++
Можно ли вместо С++ использовать другие языки программирования. Например Java.

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> olegator
Посмотри в Help: TranslateCoordinates method
~'J'~

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> olegator
На этот счет ничего не слышал
~'J'~

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> olegator
В данном случае нельзя.

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> Fatty
Посмотри в Help: TranslateCoordinates method
Не нашёл такое.

Re: Как получить информацию, которую выдаёт команда list о графических объектах?

> olegator
Плохо искал. Поиском в Help'е по строке ThisDrawing.Utility.TranslateCoordinates найдешь пример использования.