- UID
- 4198
- 积分
- 621
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-4-22
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
[求助][0620]针对特定属名图块做排序问题?
编写了可以针对特定属名做排序的程序,
有两个问题请教
01.在执行先由上往下,在由左往右排序时,
都会发生,第一次排序正常,
第二次的排序确在Y方向相反排序,
02.属名取出的方式,是否更简单的方法呢?
03.程序使用时,若选取的物件以不规则方式选取进来,
排序也会发生排序方式错误
请问各位高手该怎样处里呢?
附上图档给各位测试...
(defun c:ts (/ lst lstnew lstnew2 blkobj ss k)
(vl-load-com)
(setq ss (ssget '((0 . "insert") (66 . 1) ) ))
(setq n -1)
(setq lst nil)
(setq lstnew nil)
(setq lstnew2 nil)
(repeat (sslength ss)
(setq blkobj (vlax-ename->vla-object (ssname ss (setq n (1+ n)))))
(foreach
obj (vlax-invoke blkobj 'getattributes)
(setq
lst
(append
lst
(if (= (vla-get-tagstring obj) "NU") ;;设置判断属性名称
(list (list (vlax-get obj 'insertionpoint) obj))
) ;_ 结束if
) ;_ 结束append
) ;_ 结束setq
) ;_ 结束foreach
) ;_ 结束repeat
;;; +++++++++++++++++++++++++++++++
(setq lstnew (vl-sort lst '(lambda(1% 2%)
(> (cadr(car 1%))(cadr(car 2%)))
)))
(setq lstnew2 (vl-sort lstnew '(lambda(1% 2%)
(< (car(car 1%))(car(car 2%)))
)))
;;; +++++++++++++++++++++++++++++++
;;; 写入排序后的属性数值
(setq k 1)
(foreach ent lstnew2
(setq obj (cadr ent))
(vla-put-textstring obj k)
(setq k (1+ k))
)
(prin1)) |
|