termal007 发表于 2022-7-6 07:40:32

如何在Spreadshe中对文本进行排序

你好
 
我必须分层“c-road-sctn-titl”和“area block”;我需要将每一层排序为一行。
 
我怎样才能做到简单?
 
 
 
请看我的上传文件示例!!
图纸1.dwg

Organic 发表于 2022-7-6 08:03:01

一条连续的线?或者像数据一样的几行(行)似乎被布置在?
 
我会看看数据来自哪里,看看是否可以更好地导出。

Arin9916 发表于 2022-7-6 08:08:23

我不确定你到底想要什么。
 
如果需要考虑公差值的排序方法,请参见下面的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))
;                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


termal007 发表于 2022-7-6 08:26:43

你好
很抱歉回答晚了
我运行lisp plz时出错,请参阅附加文件和读取错误。
 
 
命令:aa
; 错误:没有函数定义:VLAX-GET-ACAD-OBJECT

Lee Mac 发表于 2022-7-6 08:29:04

http://www.cadtutor.net/forum/showthread.php?1390-如何在此存档中使用LISP例程&p=339645&viewfull=1#post339645

termal007 发表于 2022-7-6 08:41:45

我不能回答我的问题!!!!!!!?
我想再说一遍!
当我在“C-ROAD-SCTN-TITL”层的一行直线上绘制时;你们可以看到数字不是在线数组
我想把所有的数字层“C-ROAD-SCTN-TITL”到数组和层“区域块”
页: [1]
查看完整版本: 如何在Spreadshe中对文本进行排序