Тема: Таблицы в Автокад 2008

При нарисовании таблицы в окне "Вставка таблицы" есть пункт "Задание стилей ячеек"  с выбором опций для ячеек первой, второй и остальных строк ( для каждой строки ячеек значение: либо "данные", либо "заголовок", либо "название").
Кто знает, скажите пожалуйста, как в реализовать настройку этих пунктов в VBA ?

Re: Таблицы в Автокад 2008

> KyCOK
Не помню где это скачал, пробуй

Option Explicit
Public Sub TableStyleCreate(styleName As String, txtStyleName As String, _
                     txtHeight As Double)
'' author unknown
Dim oDict As AcadDictionary
Dim oStyle As AcadTableStyle
Set oDict = ThisDrawing.Dictionaries("Acad_TableStyle")
On Error Resume Next
Set oStyle = oDict(styleName)
If Err.Number <> 0 Then
Set oStyle = oDict.AddObject(styleName, "AcDbTableStyle")
Err.Clear
End If
On Error GoTo Handler
If Not oStyle Is Nothing Then
Dim col As New AcadAcCmColor
col.SetRGB 240, 100, 40
With oStyle
.Description = "New Table"
.FlowDirection = acTableTopToBottom
.BitFlags = 0
.VertCellMargin = txtHeight / 4
.HorzCellMargin = txtHeight / 4
.SetTextStyle acTitleRow, txtStyleName
.SetTextStyle acHeaderRow, txtStyleName
.SetTextStyle acDataRow, txtStyleName
.SetTextHeight acTitleRow, txtHeight * 1.5
.SetTextHeight acHeaderRow, txtHeight * 1.25
.SetTextHeight acDataRow, txtHeight
.SetAlignment acTitleRow, acBottomCenter
.SetAlignment acHeaderRow, acBottomCenter
.SetAlignment acDataRow, acBottomLeft
.SetGridColor 1, acTitleRow, col
col.SetRGB 225, 100, 50
.SetGridColor 1, acHeaderRow, col
col.SetRGB 10, 100, 25
.SetGridColor 7, acDataRow, col
.SetDataType acTitleRow, acString, acUnitless
.SetDataType acHeaderRow, acString, acUnitless
.SetDataType acDataRow, acString, acUnitless
ThisDrawing.SetVariable "CTABLESTYLE", .Name
End With
End If
Exit Sub
Handler:
If Err.Number <> 0 Then
MsgBox Err.Number & " " & Err.Description
Err.Clear
End If
Resume Next
End Sub
Sub test()
TableStyleCreate "New Table Style", "Standard", 250#
End Sub

~'J'~

Re: Таблицы в Автокад 2008

ОК! То что надо!

Re: Таблицы в Автокад 2008

Кто-нибудь знает почему задание цвета для внутренних горизонтальных линий работает в 2007, но перестало работать в 2008:

Dim MyTable As AcadTable
Dim colr As New AcadAcCmColor
............
colr.ColorIndex = acCyan
MyTable.SetGridColor acHorzInside, acDataRow, colr

но окраска границ отдельных ячеек по прежнему работает:

MyTable.SetCellGridColor Nrow, Ncol, acHorzBottom, colr

Re: Таблицы в Автокад 2008

Пока пришлось выйти из положения так:

colr.ColorIndex = acCyan
MyTable.SetGridColor 1, acDataRow, colr

- закрашивает все линии кроме внешней верхней линии таблицы, а эту линию закрасить отдельно:

colr.ColorIndex = acWhite
MyTable.SetCellGridColor 0, 0, 1, colr

Re: Таблицы в Автокад 2008

> Fatty
в процедуре:
Sub test()
TableStyleCreate "New Table Style", "Standard", 250#
End Sub
указывается текстовый стиль "Standard". А как реализуется создание нового текстового стиля ? (чтобы использовать его взамен стиля "Standard")

Re: Таблицы в Автокад 2008

вот уже не ожидал - впервые, сам нашел.
Public Sub AddStyle()
Dim objTextStyle As AcadTextStyle
Set objTextStyle = ThisDrawing.TextStyles.add("MyArial")
objTextStyle.SetFont "Arial", True, False, 0, 0
End sub