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

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

"Зависает" Autocad при заполнении таблицы.

Ответ
Поиск в этой теме
Непрочитано 30.05.2016, 01:40 #1
"Зависает" Autocad при заполнении таблицы.
AlexZh
 
Регистрация: 23.09.2015
Сообщений: 146

Здравствуйте!

Зависает программа при заполнении таблицы. Есть какие то ограничения?
Просмотров: 3219
 
Непрочитано 30.05.2016, 09:46
#2
Кулик Алексей aka kpblc
Moderator

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


На каком языке программа? Что за таблица?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.05.2016, 09:53
#3
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 893


Offtop: а у меня не зависает
kacugu вне форума  
 
Автор темы   Непрочитано 30.05.2016, 10:11
#4
AlexZh


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


язык LISP. но мне кажется не в этом дело...

обычная таблица AutoCad . заполнение происходит построчно с выбором значений из списка. при маленьких объемах (малом количестве строк) программа выполняется. при большом объеме AutoCad зависает. и РЕГЕНАВТО подавлял.
Код:
[Выделить все]
 (defun c:kab_zh_bl_count (/	    acadobj   	
			  	      bl	bl_atts_list
			  bl_ss	    col	      col0	col1
			  col2	    col3      col4	col5
			  doc	    i	      modelspace
			  mytable   num_table pt	pt1
			  x
			 ) ;_ конец
  (load "_dwgru-conv-ent-to-vla")
  (load "adv-strings-sort-strings-with-numbers-i")
  (load "get-all-atts")
  (load "_block-get-name")
  (load "selpoly")
  (vl-load-com)
  (setq acadobj (vlax-get-acad-object))
  (setq doc (vla-get-activedocument acadobj))
  (setq pt1 (getpoint "\nПервая точка прямоугольника выбора: "))
  (if (setq
	bl_ss (ssget
		"_W"
		pt1
		(getcorner pt1 "\nВторая точка прямоугольника выбора: ")
		(list (cons 0 "INSERT") (cons 8 "1Z_Kab_Zh"))
	      ) ;_ конец ssget
      ) ;_ конец setq
    (progn (setq bl_atts_list
		  (mip_makeuniquemembersoflist
		    (mapcar
		      'get-all-atts
		      (mapcar
			'vlax-ename->vla-object
			(vl-remove-if
			  (function listp)
			  (mapcar (function cadr) (ssnamex bl_ss)) ; _
			      ; конец
			      ; mapcar
			) ;_ end of vl-remove-if
		      ) ;_ end of mapcar
		    ) ;_ конец mapcar
		  ) ;_ конец mip_makeuniquemembersoflist
	   ) ;_ конец setq
;;; построение
;;; таблицы-----------------------------------------------------
	   (setq col (length (mip_makeuniquemembersoflist bl_atts_list)))
			      ; _
			      ; конец
			      ; setq
	   (setq modelspace (vla-get-modelspace doc))
	   (setq pt (getpoint "\nУкажите точку вставки таблицы: ")) ; _
			      ; конец
			      ; vlax-3d-point
	   (setq mytable (vla-addtable
			   modelspace
			   (vlax-3d-point pt)
			   (1+ col)
			   9
			   1
			   20
			 )    ; _
			      ; конец
			      ; vla-Addtable
	   ) ;_ конец setq
	   (vla-put-layer mytable "1Z_Оформление")
	   (vla-deleterows mytable 0 1)
	   (vla-setcolumnwidth mytable 0 15)
	   (vla-setcolumnwidth mytable 1 40)
	   (vla-setcolumnwidth mytable 2 40)
	   (vla-setcolumnwidth mytable 3 20)
	   (vla-setcolumnwidth mytable 4 15)
	   (vla-setcolumnwidth mytable 5 10)
	   (vla-setcolumnwidth mytable 6 20)
	   (vla-setcolumnwidth mytable 7 15)
	   (vla-setcolumnwidth mytable 8 10)
	   (vla-scaleentity
	     mytable
	     (vlax-3d-point pt)
	     (/ 1 (getvar "CANNOSCALEVALUE"))
	   ) ;_ конец vla-scaleentity
	   (vla-settextheight
	     mytable
	     (+ acdatarow actitlerow acheaderrow)
	     (* 2.5 (/ 1 (getvar "CANNOSCALEVALUE")))
	   ) ;_ конец vla-SetTextHeight
	   (vla-settextstyle
	     mytable
	     (+ acdatarow actitlerow acheaderrow)
	     "Gost_0.0"
	   ) ;_ конец vla-SetTextStyle
	   (vla-put-enablebreak mytable :vlax-true)
	   (vla-put-breakspacing
	     mytable
	     (* 25 (/ 1 (getvar "CANNOSCALEVALUE")))
	   ) ;_ конец vla-put-BreakSpacing
	   (vla-put-tablebreakheight
	     mytable
	     (* 200 (/ 1 (getvar "CANNOSCALEVALUE")))
	   ) ;_ конец vla-put-TableBreakHeight
;;; ----------------------------------------------------------------------
	   (setq bl_atts_list ;lst - исходный список
		  (mapcar
		    '(lambda (x) (nth x bl_atts_list))
		    (adv-strings-sort-strings-with-numbers-i
		      (mapcar '(lambda (x) (strcat (cdr (nth 0 x)) (cdr (nth 1 x))))
			      bl_atts_list
		      ) ;_ конец mapcar
		      t
		    )	      ; _ конец
			      ; adv-strings-sort-strings-with-numbers-i
		  ) ;_ конец vl-sort
	   ) ;_ конец setq
	   (setq i 0)
	   (while bl_atts_list
	     (setq bl	(car bl_atts_list)
		   col0	(cdar bl)
		   col1	(cdadr bl)
		   col2	(cdaddr bl)
		   col3	(cdr (cadddr bl))
		   col4	(cdar (cddddr bl))
		   col5	(cdadr (cddddr bl))
	     ) ;_ конец setq
	     (setq bl_atts_list (cdr bl_atts_list))
	     (vla-settext mytable i 0 col0)
	     (vla-settext mytable i 1 col1)
	     (vla-settext mytable i 2 col2)
	     (vla-settext mytable i 3 col3)
	     (vla-settext mytable i 4 col4)
	     (vla-settext mytable i 5 col5)
	     (setq i (1+ i))
	   ) ;_ конец while
	   (setq num_table (1+ (fix (/ (vla-get-height mytable)
				       (vla-get-tablebreakheight mytable)
				    ) ;_ конец /
			       ) ;_ конец fix
			   ) ;_ конец 1+
	   ) ;_ конец setq
	   (repeat num_table
	     (command "_INSERT" "1Z_Kab_tab" pt 1 1 0)
	     (vla-put-layer
	       (_dwgru-conv-ent-to-vla (entlast))
	       "1Z_Оформление"
	     ) ;_ конец vla-put-layer
	     (setq pt
		    (list (+ (car pt) (* 210 (/ 1 (getvar "CANNOSCALEVALUE"))))
			  (cadr pt)
		    ) ;_ конец list
	     ) ;_ конец setq
	   ) ;_ конец repeat
    ) ;_ конец progn
    (princ "Нет блоков")
  ) ;_ конец if
) ;_ конец defun
;|«Visual LISP© Format Options»
(72 2 30 2 T "конец " 72 9 1 1 0 T nil T T)
;*** НЕ добавляйте текст под комментариями! ***|;
AlexZh вне форума  
 
Непрочитано 30.05.2016, 10:25
#5
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от AlexZh Посмотреть сообщение
язык LISP. но мне кажется не в этом дело...
И в этом тоже. Тема перенесена.
См. RegenerateTableSuppressed
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.05.2016, 10:38
#6
AlexZh


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


Спасибо ОГРОМНОЕ!!!!

А ведь это свойство есть в книге "AutoLISP и Visual Lisp в среде AutoCAD"....

А я и не нашел(
AlexZh вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > "Зависает" Autocad при заполнении таблицы.

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблицы AutoCAD (разбиение + повторение заголоков) Annemesski AutoCAD 21 15.11.2017 12:51
Можно ли заставить AutoCad выбрать максимальное значение из выделенного диапазона таблицы? RNB AutoCAD 2 15.09.2014 05:35
Вставить блок Autocad по координатам из таблицы Autocad. Nesh Программирование 10 20.01.2012 06:19
Вопрос к ГУРУ only :) Таблицы в AUTOCAD 2005 X-DeViL Программирование 18 07.12.2004 16:42