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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как программно создать стиль таблицы или саму таблицу без названия и заголовков столбцов?

Как программно создать стиль таблицы или саму таблицу без названия и заголовков столбцов?

Ответ
Поиск в этой теме
Непрочитано 11.10.2016, 10:55 #1
Как программно создать стиль таблицы или саму таблицу без названия и заголовков столбцов?
Profan
 
Москва
Регистрация: 25.12.2005
Сообщений: 13,663

Создать подобный стиль вручную в AutoCAD 2006 было проще простого. В более поздних версиях выполнение этой процедуры уже стало значительно сложнее. Правда на стадии вставки таблицы можно изменить стили ячеек и убрать название и заголовки. Но это опять-таки вручную. А программно как создать такой стиль? Или как программно изменить стили ячеек до вставки таблицы? Изменение свойств TitleSuppressed и HeaderSuppressed ничего не дает. С методами не совсем все понятно, подходящих примеров не нашел. Возьмем это: SetDataType Method (ActiveX) - что там за параметры, хрен его знает. Алексей Кулик у себя на
http://autolisp.ru/2009/11/23/tablestyle-create/
упоминал, что подавление названия и заголовков не работает, но как-то забросил этот вопрос. В принципе стиль таблицы может быть любой, но каким методом можно изменить стиль ячеек в верхних двух строках?
Просмотров: 1808
 
Автор темы   Непрочитано 11.10.2016, 12:33
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Собственно, я хочу приспособить такую таблицу к выноскам с нумерацией электрических и трубных проводок:
Миниатюры
Нажмите на изображение для увеличения
Название: Нумерация проводок.jpg
Просмотров: 75
Размер:	30.6 Кб
ID:	177515  
Profan вне форума  
 
Непрочитано 11.10.2016, 12:48
#3
trir


 
Регистрация: 18.12.2010
Сообщений: 4,804


а если их просто удалить (DeleteRows)?

Цитата:
Sub SetDataType(rowTypes As Long, dataType As AcValueDataType, unitType As AcValueUnitType)
trir вне форума  
 
Автор темы   Непрочитано 11.10.2016, 13:06
#4
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Действительно, выражение
Код:
[Выделить все]
(vla-DeleteRows tbl 0 2)
удаляет первые две строки. Но как-то это сильно в лоб.
Profan вне форума  
 
Непрочитано 11.10.2016, 13:18
#5
trir


 
Регистрация: 18.12.2010
Сообщений: 4,804


Цитата:
SetDataType Method (ActiveX) - что там за параметры, хрен его знает.
_vbaide
Object Browser
trir вне форума  
 
Автор темы   Непрочитано 11.10.2016, 15:34
#6
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Я смотрел этот метод здесь:
http://help.autodesk.com/view/ACD/20...9-F5E15341BAF5
Выражение, видимо, записывается так:
Код:
[Выделить все]
(vla-SetDataType tbl rowTypes nDataType nUnitType)
Можно предположить, что данный метод позволяет изменить тип строки. Какой строки? Я полагаю, что номер строки определяется текущим типом из перечня rowTypes.
Например, строку с типом acTitleRow можно заменить на acDate из перечня nDataType. Но там еще куча типов для nDataType. А уж какое значение
взять из перечня nUnitType - прямо и не знаю. Примера нет.
Напоминаю, что тема создана в разделе LISP.
Profan вне форума  
 
Непрочитано 11.10.2016, 18:21
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,910
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Нашел в инете такую функцию make-tablestyle
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 11.10.2016, 19:05
#8
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


VVA, спасибо, но это еще один вариант создания стиля таблицы. Я и сам накопал несколько вариантов, но ни один из них не создает стиль без названия таблицы и без названия заголовков столбцов.
Profan вне форума  
 
Непрочитано 11.10.2016, 20:46
#9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,811


Я бы попробовал создать такой стиль и снять с него полный дамп. И посмотрел, что и как менять.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.10.2016, 21:43
#10
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Именно таким способом я и определил, что для методов
Код:
[Выделить все]
(vlax-put tbl 'TitleSuppressed :vlax-true)
(vla-put-HeaderSuppressed tbl :vlax-true)
надо записывать
Код:
[Выделить все]
(vlax-put tbl 'TitleSuppressed -1)
(vla-put-HeaderSuppressed tbl -1)
Это относится к вставке таблицы (для создания стиля не годится). В результате верхние две строки получают значение "Данные". Осталось еще сообразить, как программно убрать объединение ячеек в первой строке.
Вот примерный код для вставки таблицы:
Код:
[Выделить все]
(Apply '(lambda ()
(setq column  2   
      line    6  
      tbl   (vla-addtable 
            (vla-get-modelspace(vla-get-activedocument (vlax-get-acad-object))) 
            (vlax-3d-point (getpoint "\nУкажите точку вставки таблицы: ")) 
            line
            column 
            12     ;  высота строк
            24     ;  ширина таблицы 
             ) ; _vla-addtable
) ; _setq
;(vlax-put tbl 'TitleSuppressed :vlax-true)
;(vla-put-HeaderSuppressed tbl :vlax-true)
(vlax-put tbl 'TitleSuppressed -1)
(vla-put-HeaderSuppressed tbl -1)
;(vla-DeleteRows tbl 0 1)
)
'()
)
Если раскоментарить строку (vla-DeleteRows tbl 0 1), то в принципе получается то, что надо. Только как-то это все коряво. Нужны еще всякие строки с параметрами.
Profan вне форума  
 
Автор темы   Непрочитано 13.10.2016, 11:04
#11
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Пример простейшей готовой программы:
Код:
[Выделить все]
(defun C:ТБЛ-ТЕСТ ( / echo column line tbl)
(setq echo (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(initget 7)
(setq column (getint "\nКоличество столбцов: "))
(if (> column 3) (setq column 3))
(setq line    7  
      tbl   (vla-addtable 
            (vla-get-modelspace(vla-get-activedocument (vlax-get-acad-object))) 
            (vlax-3d-point (getpoint "\nУкажите точку вставки таблицы: ")) 
            line
            column 
            400     ;  высота строк
            800     ;  ширина таблицы 
             ) ; _vla-addtable
) ; _setq
; Изменение типа строк на "Данные"
(vlax-put tbl 'TitleSuppressed -1)
(vlax-put tbl 'HeaderSuppressed -1)
;;;
(vla-DeleteRows tbl 0 1)
(vla-SetTextHeight tbl acDataRow 250)
(vla-SetAlignment tbl  acDataRow 5)
(vla-settext tbl 0 0 "10")
(vla-settext tbl 1 0 "20")
(vla-settext tbl 2 0 "30")
(vla-settext tbl 3 0 "40")
(vla-settext tbl 4 0 "50")
(vla-settext tbl 5 0 "60")
(if (> column 1)
    (progn
    (vla-settext tbl 0 1 "10")
    (vla-settext tbl 1 1 "20")
    (vla-settext tbl 2 1 "30")
    (vla-settext tbl 3 1 "40")
    (vla-settext tbl 4 1 "50")
    (vla-settext tbl 5 1 "60")
    ) ; progn
) ; if
(if (> column 2)
    (progn
    (vla-settext tbl 0 2 "10")
    (vla-settext tbl 1 2 "20")
    (vla-settext tbl 2 2 "30")
    (vla-settext tbl 3 2 "40")
    (vla-settext tbl 4 2 "50")
    (vla-settext tbl 5 2 "60")
    ) ; progn
) ; if
(princ)
(setvar "CMDECHO" echo)
)
Profan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как программно создать стиль таблицы или саму таблицу без названия и заголовков столбцов?

Инженерные консультации
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование таблицы сделаной из полилиний в таблицу Exel Shketkol AutoCAD 15 28.10.2015 11:48
Создание таблицы SPDS БЕЗ автообсчета, используя таблицу с автообсчетом. 13Rossoneri Прочее. Программное обеспечение 6 15.02.2014 13:43
Как создать слой (программно - Lisp) NEDIS LISP 4 29.08.2010 20:36
Как создать единый стиль печати Rinat AutoCAD 4 27.04.2005 11:20
Как программно удалить Стиль Текста Led AutoCAD 2 12.01.2004 14:35