admin 发表于 2024-4-19 11:33:36

[源码] 以最短的字符串降低块名重复的方法

经常会遇到不同图纸粘贴块参照的现象,如果两个图纸中相同块名其结构不同,粘贴会出问题,这里给出来一种方法,可以降低重复几率(defun $make-block-name$ (/ $msec/52$ f m n r s str wm y zz)
;制作块名
(defun $msec/52$ (n zz / d ds loop n1 str)
          ;52进制转换为字母

    (orn
(setq n (atoi (menucmd "M=$(edtime,$(getvar,date),MSEC)")))
    )
    (setq ds nil)
    (setq loop T)
    (while loop
      (if (= (setq n1 (/ n 52)) 0)
(setq loop nil)
      )
      (setq d (rem n 52))
      (setq ds (cons d ds))
      (setq n n1)
    )
    (setq
      str (apply 'strcat
   (mapcar (function (lambda (a) (nth a zz))) ds)
    )
    )
    str
)
(SETQZZ (list "A"   "B"   "C"   "D"   "E"   "F"   "G"   "H"   "I"
   "J"   "K"   "L"   "M"   "N"   "O"   "P"   "Q"   "R"
   "S"   "T"   "U"   "V"   "W"   "X"   "Y"   "Z"   "A"
   "a"   "b"   "c"   "d"   "e"   "f"   "g"   "h"   "i"
   "j"   "k"   "l"   "m"   "n"   "o"   "p"   "q"   "r"
   "s"   "t"   "u"   "v"   "w"   "x"   "y"   "z"   "a"
    )
)
(setq
    n ($msec/52$
(atoi (menucmd "M=$(edtime,$(getvar,date),YYYY)"))
zz
      )
)          ;年
(setq y (nth (atoi (menucmd "M=$(edtime,$(getvar,date),M)")) zz))
          ;月
(setq R (nth (atoi (menucmd "M=$(edtime,$(getvar,date),D)")) zz))
          ;日
(setq s (nth (atoi (menucmd "M=$(edtime,$(getvar,date),HH)")) zz))
          ;时
(setqF ($msec/52$ (atoi (menucmd "M=$(edtime,$(getvar,date),MM)"))
         zz
    )
)
          ;分
(setqM ($msec/52$ (atoi (menucmd "M=$(edtime,$(getvar,date),SS)"))
         zz
    )
)          ;秒
(SETQ WM ($msec/52$ NIL zz))    ;微妙
(setq str (strcat n y r S F M WM))
str
)
页: [1]
查看完整版本: [源码] 以最短的字符串降低块名重复的方法