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

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

Как в lisp программно заполнить таблицу созданную в autoCad?

Ответ
Поиск в этой теме
Непрочитано 23.04.2013, 12:48 #1
Как в lisp программно заполнить таблицу созданную в autoCad?
SNIIP
 
Регистрация: 04.05.2010
Сообщений: 338

Как в lisp программно создать и заполнить таблицу?
Просмотров: 4945
 
Непрочитано 23.04.2013, 14:41
1 | #2
Кулик Алексей aka kpblc
Moderator

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


Создаешь таблицу, подавляешь ей регенерацию, потом заполняешь данными, форматируешь ячейки, восстанавливаешь регенерацию и обновляешь ее. В чем сложность?
P.S. Насколько я помню, коды по созданию таблиц на форуме были не раз и не два...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.04.2013, 15:31
#3
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 425
<phrase 1=


Зачем регенерацию подавлять?
Alexeipost вне форума  
 
Непрочитано 23.04.2013, 15:52
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Без этого на больших таблицах обработка длится гораздо дольше. Реально, без подавления - минуты, с подавлением - секунды.
Do$ вне форума  
 
Автор темы   Непрочитано 23.04.2013, 16:26
#5
SNIIP


 
Регистрация: 04.05.2010
Сообщений: 338


А вы не подскажете где эти коды? я что то искал но не могу найти.:-(
SNIIP вне форума  
 
Непрочитано 24.04.2013, 12:52
#6
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 425
<phrase 1=


Код:
[Выделить все]
 Set TableObj = ThisDrawing.ModelSpace.AddTable(BasePoint, 5, 13, 50, 25)
With TableObj
    .SetTextHeight 3, 300
    .SetTextHeight 4, 300
    .SetAlignment 1, acMiddleCenter
    .RowHeight = 800
    .SetRowHeight 2, 1200
    .Width = 39500
    .SetColumnWidth 0, 2500
    .SetColumnWidth 1, 2000
    .SetColumnWidth 2, 2000
    .SetColumnWidth 3, 3500
    .SetColumnWidth 4, 3500
    .SetColumnWidth 5, 2000
    .SetColumnWidth 6, 2000
    .SetColumnWidth 7, 3500
    .SetColumnWidth 8, 3500
    .SetColumnWidth 9, 2000
    .SetColumnWidth 10, 4000
    .SetColumnWidth 11, 2000
    .SetColumnWidth 12, 6500
    .MergeCells 1, 1, 2, 5
    .MergeCells 1, 1, 6, 9
    .MergeCells 1, 2, 0, 0
    .MergeCells 1, 2, 1, 1
    .MergeCells 1, 2, 10, 10
    .MergeCells 1, 2, 11, 11
    .MergeCells 1, 2, 12, 12
    .SetCellValue 1, 0, "Ïîðÿäêîâûé íîìåð"
    .SetCellValue 1, 1, "Íîìåð êàáåëÿ"
    .SetCellValue 1, 2, "Îòêóäà"
    .SetCellValue 2, 2, "Íîìåð ïîìåùåíèÿ"
    .SetCellValue 2, 3, "Íîìåð øêàôà"
    .SetCellValue 2, 4, "Êîììóòàòîð óð.äîñòóïà"
    .SetCellValue 2, 5, "Íîìåð  ïîðòà"
    .SetCellValue 1, 6, "Êóäà"
    .SetCellValue 2, 6, "Íîìåð ïîìåùåíèÿ"
    .SetCellValue 2, 7, "Íîìåð øêàôà"
    .SetCellValue 2, 8, "Ïàò÷-ïàíåëü"
    .SetCellValue 2, 9, "Íîìåð  ïîðòà"
    .SetCellValue 1, 10, "Òèï êàáåëÿ"
    .SetCellValue 1, 11, "Äëèíà, ì"
    .SetCellValue 1, 12, "Ïðèìå÷àíèå"
    
End With

TableObj.InsertRows 3, 800, 3
Как тоже самое будет выглядеть на ЛИСПе?
Alexeipost вне форума  
 
Непрочитано 24.04.2013, 13:42
#7
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Да так же. Пишу без проверки, возможны мелкие неточности
Код:
[Выделить все]
(vl-load-com)
(setq basepoint '(0.0 0.0 0.0)) ;точка вставки 0,0,0

(setq table (vla-addTable (vla-get-modelspace  (vla-get-activedocument (vlax-get-acad-object)))) (vlax-3d-point basepoint) 5 13 50 25))
(vla-settextheight table 3 300)
(vla-settextheight table 4 300)
...
(vla-insertrows table 3 800 3)
Do$ вне форума  
 
Непрочитано 24.04.2013, 13:59
#8
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Как тоже самое будет выглядеть на ЛИСПе?
Не тоже самое, но для примера, думаю, сойдет, по аналогии можно разобраться
Код:
[Выделить все]
(vl-load-com)
(setq vltable (vlax-ename->vla-object (handent "581"))) ;;;581 - handle конкретной таблицы, выяснить (vlax-dump-object (vlax-ename->vla-object (car (entsel))))
    (vla-SetTextHeight vltable acDataRow 300) ;;; ячейки с данными
    (vla-SetTextHeight vltable acTitleRow 300) ;;; ячейка с заголовком таблицы
    (vla-SetRowHeight vltable 2 1200) ;;; 2 - номер строки
    (vla-SetColumnWidth vltable 0 2500) ;;; 0 - номер столбца (первый)
    (vla-MergeCells vltable 1 1 2 5)
    (vla-settext vltable  1 0 "Текст") ;;; 1 - второй столбец, 0 - первая строка
skkkk вне форума  
 
Непрочитано 26.04.2013, 10:20
#9
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


Код:
[Выделить все]
 

;--------------------------- работа с таблицей НАЧАЛО


 (cond     ; если нет слоя то создаем его
  ((null (tblsearch    "layer"
               "EOM_выноски_размеры_текст"
     ) ;/ tblsearch
   ) ;/ null
   (c:createLayer    "EOM_выноски_размеры_текст"
                 230
                 1
                 0.13
                 "Style 1"
   ) ;/ c:createLayer
 )) ;/ cond
(setvar "CLAYER" "EOM_выноски_размеры_текст")    ; сделать слой текущим

  
(setq column    3    ; кол. столбцов
      line    (+    ; кол. рядов
                (/    
                  (length t_prt)
          2  ; делим т.к список состоит "Лист" "Наименование"
         ) ;/ /
         2 ; добавляем 2 т. к шапка занимает две строки
        ) ;/ +
      tbl     (vla-addtable 
                (vla-get-modelspace(vla-get-activedocument (vlax-get-acad-object))) 
                 (vlax-3d-point (getpoint "\nУкажите точку вставки таблицы: ")) 
               line
                 column 
               8      ;  высота строк
                 75     ;  ширина таблицы (любое, далее правим)
                ) ;/ vla-addtable
) ;/ setq

  ; формируем шапку порядок СТРОКА СТОЛБЕЦ
  (vla-settext    tbl
            0 ; строка
            0 ; столбец
            "Ведомость рабочих чертежей основного комплекта"
  ) ;/ vla-settext
  (vla-settext    tbl
            1
            0
                "Лист"
  ) ;/ vla-settext
  (vla-settext    tbl
            1
                1
                "Наименование"
  ) ;/ vla-settext
  (vla-settext    tbl
            1
                2
                "Примечание"
  ) ;/ vla-settext

  ; формируем высоту, ширину
  (vla-setColumnWidth    tbl ; ширина первого столбца
                0
                15
  ) ;/ vla-setColumnWidth
  (vla-setColumnWidth    tbl ; ширина второго столбца
                1
                140
  ) ;/ vla-setColumnWidth
  (vla-setColumnWidth    tbl ; ширина третьего столбца
                2
                30
  ) ;/ vla-setColumnWidth
  (vla-setRowHeight    tbl; высота шапки на этом месте
                1
                15
  ) ;/ vla-setColumnWidth


 (setq count 1)
 (repeat (- line 2)
  (vla-settext         tbl  ; заполняем Лист
                (1+ count)
                0
                (car t_prt)
  ) ;/ vla-settext
  (vla-setCellAlignment tbl ; выравниваем по центру
                (1+ count)
                0
                acMiddleCenter
  ) ;/ vla-setCellAlignment
  
  (setq t_prt (cdr t_prt)) 
  (vla-settext    tbl ; заполняем Наименование
            (1+ count)
            1
            (car t_prt)
  ) ;/ vla-settext
  (setq count (1+ count)
      t_prt (cdr t_prt)
  ) ;/ setq
 ) ;/ repeat

 (terpri) 
 (princ "Ведомость рабочих чертежей сформирована ")


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Как программно создавать масштабы аннотаций? Кулик Алексей aka kpblc LISP 17 03.09.2021 13:07
Как программно настроить AutoCAD Krieger Программирование 14 10.12.2012 12:31
ЕСТЬ ли в AutoCad LT Visual Lisp? Dies77_66 AutoCAD 5 05.03.2012 09:44
проверить текущий профиль AutoCAD с помощью LISP или Delphi Leo_fmf LISP 8 06.02.2012 15:21
Autocad dbconnect Lisp игорёк LISP 6 12.05.2006 08:57