如何在Spreadshe中对文本进行排序
你好我必须分层“c-road-sctn-titl”和“area block”;我需要将每一层排序为一行。
我怎样才能做到简单?
请看我的上传文件示例!!
图纸1.dwg 一条连续的线?或者像数据一样的几行(行)似乎被布置在?
我会看看数据来自哪里,看看是否可以更好地导出。 我不确定你到底想要什么。
如果需要考虑公差值的排序方法,请参见下面的PTE:Sortobj函数
(defun c:aa ( / doc spc obj tol PTE:objects PTE:sortobj ) (vl-load-com)
(defun PTE:objects ( ss / i re )
(if ss
(repeat (setq i (sslength ss))
(setq re (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) re))
)
)
)
(defun PTE:sortobj
( olst typ tol /
typ objs opt npt lst data lst rev sx sy dxf x y
PTE:s1 PTE:s2 PTE:s3 PTE:s4
)
(defun rev (ls f) (mapcar '(lambda (l)(if (setq f (not f)) (reverse l) l)) ls))
(defun sx(objs) (vl-sort objs '(lambda (a b) (< (x a) (x b)))))
(defun sy(objs) (vl-sort objs '(lambda (a b) (< (y a) (y b)))))
(defun dxf (o c)(cdr(assoc c (entget (vlax-vla-object->ename o)))))
(defun x (o) (car(dxf o 10)))
(defun y (o) (cadr (dxf o 10)))
(setq typ (vl-string->list (strcase typ)))
(if (member (car typ) '(76 82))
(setq PTE:s1 sy PTE:s2 y PTE:s3 sx PTE:s4 rev)
(setq PTE:s1 sx PTE:s2 x PTE:s3 sy PTE:s4 rev)
)
(setq objs (PTE:s1 olst) opt (PTE:s2 (car objs)))
(foreach o objs
(if (< tol (abs (- (setq npt (PTE:s2 o)) opt)))
(setq lst(cons data lst) data (list o) opt npt)
(setq data (cons o data))
)
)
(setq lst (mapcar '(lambda (l) (PTE:s3 l))(cons data lst))
lst (if (member (cadr typ) '(85 82)) (reverse lst) lst)
lst (if (member (car typ)'(68 76)) (mapcar '(lambda (l) (reverse l)) lst) lst)
lst (if (/= (car typ) (caddr typ))(PTE:s4 lst t) lst)
)
)
(setq doc (vla-get-activedocument (vlax-get-acad-object))
spc (vla-get-modelspace doc)
obj (PTE:objects (ssget '((0 . "*text") (8 . "C-ROAD-SCTN-TITL"))))
tol (* 15. (vla-get-height (car obj)))
)
(mapcar
'(lambda ( os )
(mapcar
'(lambda ( o1 o2 )
(vla-addline spc (vla-get-InsertionPoint o1) (vla-get-InsertionPoint o2))
) os (cdr os)
)
)(PTE:SortObj obj "rdr" tol)
)
)
;;PTE:sortobj Use like this....
;;
;; Made By.......... TaeEun-_-)=b
;;
;; Contact Me.......arin9916@naver.com
;; ....... http://cafe.naver.com/ptelisp
;;
;; Arguments........ olst : vla-object list
;; ........ typ: Sort type (str .. See below)
;; ........ tol: tolerance (real or int)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Type Description.
; 1 2 3 r = right l = left
; 4 5 6 u = up d = down
; 7 8 9
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Sort by type rdr : ((1 2 3) (4 5 6) (7 8 9))
; Sort by type ldl: ((3 2 1) (6 5 4) (9 8 7))
; Sort by type rur : ((7 8 9) (4 5 6) (1 2 3))
; Sort by type lul: ((9 8 7) (6 5 4) (3 2 1))
; Sort by type drd : ((1 4 7) (2 5(3 6 9))
; Sort by type uru : ((7 4 1) (8 5 2) (9 6 3))
; Sort by type dld : ((3 6 9) (2 5(1 4 7))
; Sort by type ulu : ((9 6 3) (8 5 2) (7 4 1))
; Sort by type rdl : ((1 2 3) (6 5 4) (7 8 9))
; Sort by type ldr : ((3 2 1) (4 5 6) (9 8 7))
; Sort by type rul : ((7 8 9) (6 5 4) (1 2 3))
; Sort by type lur : ((9 8 7) (4 5 6) (3 2 1))
; Sort by type dru : ((1 4 7) (8 5 2) (3 6 9))
; Sort by type urd : ((7 4 1) (2 5(9 6 3))
; Sort by type dlu : ((3 6 9) (8 5 2) (1 4 7))
; Sort by type uld : ((9 6 3) (2 5(7 4 1))
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
你好
很抱歉回答晚了
我运行lisp plz时出错,请参阅附加文件和读取错误。
命令:aa
; 错误:没有函数定义:VLAX-GET-ACAD-OBJECT
http://www.cadtutor.net/forum/showthread.php?1390-如何在此存档中使用LISP例程&p=339645&viewfull=1#post339645 我不能回答我的问题!!!!!!!?
我想再说一遍!
当我在“C-ROAD-SCTN-TITL”层的一行直线上绘制时;你们可以看到数字不是在线数组
我想把所有的数字层“C-ROAD-SCTN-TITL”到数组和层“区域块”
页:
[1]