Андрей antiponf пишет:Простите не понял..?
Извини, я не могу тратить столько времени , когда
не могут толком сформулировать вопрос, потом ты спросишь как
копировать текст по 4, по 5 , по диагонали, потом снизу вверх?
У меня свои проблемы, больше времени на это нет
Просто бери за основу последний код и группируй список
по сколько значений в строке тебе нужно
Навскидку без проверок (дальше делай сам)
;;---------------------------------------------------------;;
;; exhausted by fixo
;; edited 1/26/12
(defun C:demo3 (/ cnt col data dirty en next pick row stxt tbl txt vec xdir ydir zdir)
;; local function by gile
(defun CrossProduct (v1 v2)
(list (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2)))
(- (* (caddr v1) (car v2)) (* (car v1) (caddr v2)))
(- (* (car v1) (cadr v2)) (* (cadr v1) (car v2)))
)
)
;; ------------------- main part ---------------------;;
(while (not tbl)
(if (setq en (entsel "\nВыбрать таблицу:"))
(progn
(setq tbl (vlax-ename->vla-object (car en)))
(if (not (eq "AcDbTable" (vla-get-ObjectName tbl)))
(progn
(princ "Выбранный объект не таблица.")
(setq tbl nil)
)
)
)
(princ "Ничего не выбрано.")
)
)
(setq pick (getpoint "\nУказать точку внутри ячейки: "))
(setq xdir (getvar "ucsxdir")
ydir (getvar "ucsydir")
zdir (CrossProduct xdir ydir))
(setq vec (vlax-make-variant
(vlax-safearray-fill
(vlax-make-safearray vlax-vbDouble '(0 . 2))
zdir))
)
(if (eq :vlax-true
(vla-hittest
tbl
(vlax-3d-point (trans pick 1 0))
vec
'row
'col))
(vla-setsubselection tbl row row col col)
)
(princ "\n --- Выбрать тексты отдельно по три на строчку: ---")
(setq next T)
(while (and next (setq stxt (ssget "_:S" (list (cons 0 "*text")))))
(setq txt (cdr (assoc 1 (entget (ssname stxt 0)))))
(setq dirty (cons txt dirty))
)
(if (/= 0(rem (length dirty) 3))
(progn
(alert "Число выбранных текстов не кратно трём Отбой...")
(exit)
(princ)
)
)
(setq dirty (reverse dirty)
data nil)
(while (cadr dirty)
(setq data (append (list (list (car dirty) (cadr dirty)(caddr dirty))) data))
(setq dirty (cdddr dirty))
)
(setq data (reverse data))
(setq cnt col)
(foreach item data
(setq col cnt)
(vl-catch-all-apply 'vla-settext (list tbl row col (car item)))
(setq col (1+ col))
(vl-catch-all-apply 'vla-settext (list tbl row col (cadr item)))
(setq col (1+ col))
(vl-catch-all-apply 'vla-settext (list tbl row col (caddr item)))
(setq row (1+ row))
)
(vl-catch-all-apply 'vla-clearsubselection (list tbl))
(vla-update tbl)
(vlax-release-object tbl)
(princ)
)
(prompt "\n --- команда на выполнение \"DEMO\" ---")
(prin1)
(or (vl-load-com)
(princ) )
;;---------------------------------------------------------;;