明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2431|回复: 23

[函数] 获取当前CAD文档的比例尺列表并排序

[复制链接]
发表于 2023-12-8 10:19:07 | 显示全部楼层 |阅读模式
本帖最后由 guosheyang 于 2023-12-8 10:29 编辑

       给大家分享一个收集整理的函数-----获取当前CAD文档的比例尺列表并排序,有问题请反馈,谢谢!
; ygs--羊羊羊 搜集整理  2023年12月8日
;执行 (getscaleList)


;;;------------------------------------------------------------------------------------------------------------
;;  SortList di Gile & LeeMac
;;; uso:
;;;(setq L_SCA (list "1:200" "1:1" "1:500" "1:5" "2:1" "Adatta" "1:20" "1:5000" ))                  
;;;(ArchSort L_SCA)  
;;;------------------------------------------------------------------------------------------------------------
;; ? ArchSort ?  (Gile)                   ;;
;; ~ Sorts a list of strings by numerical ;;
;;   values, then by Prefix/Suffix.       ;;
;;;------------------------------------------------------------------------------------------------------------
(defun ArchSort (lst / comparable)

  (defun comparable (e1 e2)

    (or (and (numberp e1) (numberp e2))

        (= 'STR (type e1) (type e2))

        (not e1)

        (not e2)))

  (mapcar

    (function

      (lambda (x)

        (nth x lst)))

    (vl-sort-i (mapcar 'SplitStr lst)

      (function

        (lambda (x1 x2 / n1 n2 comp)

          (while

            (and (setq comp (comparable (setq n1 (car x1))

                                        (setq n2 (car x2))))

                 (= n1 n2))

             (setq x1 (cdr x1) x2 (cdr x2)))

          (if comp (< n1 n2) (numberp n1))))))

)

;;;---------------

;; ? SplitStr ?  (Gile)                       ;;

;; ~ Breaks a string into a list of Numbers   ;;

;;   and/or strings.                          ;;

(defun SplitStr        (str / lst test rslt num tmp)

  (setq        lst  (vl-string->list str)

        test (chr (car lst)))

  (if (< 47 (car lst) 58)

    (setq num T))

  (while (setq lst (cdr lst))

    (if        num

      (cond (  (= 46 (car lst))

               (if (and (cadr lst)

                        (setq tmp (strcat "0." (chr (cadr lst))))

                        (numberp (read tmp)))

                 (setq rslt (cons (read test) rslt) test tmp lst (cdr lst))

                 (setq rslt (cons (read test) rslt) test "." num nil)))

            (  (< 47 (car lst) 58)

               (setq test (strcat test (chr (car lst)))))

            (T (setq rslt (cons (read test) rslt) test (chr (car lst)) num  nil)))

      (if (< 47 (car lst) 58)

        (setq rslt (cons test rslt) test (chr (car lst)) num  T)

        (setq test (strcat test (chr (car lst)))))))

  (if num

    (setq rslt (cons (read test) rslt))

    (setq rslt (cons test rslt)))

  (reverse rslt)

)

;(getscaleList)

(defun getscaleList( / N NLIST SCALELIST SCALELISTENTS)

;获取当前CAD文档的比例尺列表并排序

(setq scalelist

(mapcar'(lambda(x)

  (cdr(assoc 300(entget x))))

  (mapcar 'cdr

   (vl-remove-if-not

   '(lambda (item) (eq (car item) 350))

   (dictsearch (namedobjdict) "ACAD_SCALELIST")

  )

  )

)

)

(archsort (vl-remove "" scalelist))

)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-4-21 09:58:49 | 显示全部楼层
感谢分享感谢分享感谢分享感谢分享
发表于 2023-12-10 17:31:35 | 显示全部楼层
感谢楼主分享
感谢楼主分享
发表于 2023-12-12 15:16:01 | 显示全部楼层
谢谢分享,看看有什么不同
发表于 2023-12-8 11:19:29 | 显示全部楼层
11111111111111111
发表于 2023-12-8 11:23:34 | 显示全部楼层
感谢楼主分享
发表于 2023-12-8 15:58:48 | 显示全部楼层
谢谢大佬分享
发表于 2023-12-8 17:58:21 | 显示全部楼层
好奇的看看,谢谢
发表于 2023-12-8 21:02:39 | 显示全部楼层

谢谢大佬分享
发表于 2023-12-9 17:57:56 | 显示全部楼层
厉害,学习学习
发表于 2023-12-10 11:04:32 | 显示全部楼层
看看吧挺好的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 20:21 , Processed in 0.175237 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表