天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 35|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    昨天 19:57
  • 签到天数: 81 天

    [LV.6]常住居民II

    1564

    主题

    203

    回帖

    214748万

    积分

    管理员

    积分
    2147483647
    发表于 2024-4-19 11:33:36 | 显示全部楼层 |阅读模式
    经常会遇到不同图纸粘贴块参照的现象,如果两个图纸中相同块名其结构不同,粘贴会出问题,这里给出来一种方法,可以降低重复几率
    1. (defun $make-block-name$ (/ $msec/52$ f m n r s str wm y zz)
    2.   ;制作块名
    3.   (defun $msec/52$ (n zz / d ds loop n1 str)
    4.           ;52进制转换为字母

    5.     (or  n
    6.   (setq n (atoi (menucmd "M=$(edtime,$(getvar,date),MSEC)")))
    7.     )
    8.     (setq ds nil)
    9.     (setq loop T)
    10.     (while loop
    11.       (if (= (setq n1 (/ n 52)) 0)
    12.   (setq loop nil)
    13.       )
    14.       (setq d (rem n 52))
    15.       (setq ds (cons d ds))
    16.       (setq n n1)
    17.     )
    18.     (setq
    19.       str (apply 'strcat
    20.      (mapcar (function (lambda (a) (nth a zz))) ds)
    21.     )
    22.     )
    23.     str
    24.   )
    25.   (SETQ  ZZ (list "A"   "B"   "C"   "D"   "E"   "F"   "G"   "H"   "I"
    26.      "J"   "K"   "L"   "M"   "N"   "O"   "P"   "Q"   "R"
    27.      "S"   "T"   "U"   "V"   "W"   "X"   "Y"   "Z"   "A"
    28.      "a"   "b"   "c"   "d"   "e"   "f"   "g"   "h"   "i"
    29.      "j"   "k"   "l"   "m"   "n"   "o"   "p"   "q"   "r"
    30.      "s"   "t"   "u"   "v"   "w"   "x"   "y"   "z"   "a"
    31.     )
    32.   )
    33.   (setq
    34.     n ($msec/52$
    35.   (atoi (menucmd "M=$(edtime,$(getvar,date),YYYY)"))
    36.   zz
    37.       )
    38.   )          ;年
    39.   (setq y (nth (atoi (menucmd "M=$(edtime,$(getvar,date),M)")) zz))
    40.           ;月
    41.   (setq R (nth (atoi (menucmd "M=$(edtime,$(getvar,date),D)")) zz))
    42.           ;日
    43.   (setq s (nth (atoi (menucmd "M=$(edtime,$(getvar,date),HH)")) zz))
    44.           ;时
    45.   (setq  F ($msec/52$ (atoi (menucmd "M=$(edtime,$(getvar,date),MM)"))
    46.          zz
    47.     )
    48.   )
    49.           ;分
    50.   (setq  M ($msec/52$ (atoi (menucmd "M=$(edtime,$(getvar,date),SS)"))
    51.          zz
    52.     )
    53.   )          ;秒
    54.   (SETQ WM ($msec/52$ NIL zz))    ;微妙
    55.   (setq str (strcat n y r S F M WM))
    56.   str
    57. )
    复制代码

     

     

     

     

    [源码] 以最短的字符串降低块名重复的方法
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-5-16 00:36 , Processed in 0.056853 second(s), 21 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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