乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 12|回复: 5

[编程交流] 属性编号

[复制链接]

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 07:17:31 | 显示全部楼层 |阅读模式
我有下面的代码,它完全按照我的需要工作,除了一件事。
 
代码根据用户在开始时选择的数字以增量顺序插入具有属性的块。
 
我想修改代码,使数字至少为3位。例如,键入1将使属性显示为001,11将为011,111将仅此而已。
 
  1. ;;; --- Version Notes ---
  2. ;;; v0001 - Initial Development
  3. (defun c:pnm (/ atd blk cnt ech ipt next next_data osm pref suff tag i)
  4. (setq osm (getvar "osmode"))
  5. (setq ech (getvar "cmdecho"))
  6. (setq atd (getvar "attdia"))
  7. (setq cla (getvar "clayer"))
  8. (setvar "osmode" 0)
  9. (setvar "cmdecho" 0)
  10. (setvar "attdia" 0)
  11. (setvar "clayer" "A-AREA-IMAG-FLOR")
  12. (setq cnt (cond
  13.     ((getint
  14.         (strcat "\nStarting Photo Number <"
  15.           (itoa
  16.             (setq i
  17.               (cond ( i ) ( 1 ))
  18.             )
  19.           )
  20.           ">: "
  21.         )
  22.       )
  23.     )
  24.     ( i)
  25.   )
  26. i (1- i))
  27. (if cnt
  28.    (progn
  29.                                  ;(setq tag (strcase (getstring "\nEnter attribute tag for numbering: ")))
  30. (setq tag "Pic0")                        ;change attribute tag "Pic0" on tag name in your block which uses for increment numbering
  31. (while (setq ipt (getpoint "\nPick insertion point of block or press Enter to Exit: "))
  32.    (command "-insert" "PhotoBubble" ipt 1 0 0)            ;<- change block name "PhotoBubble" on your block name here
  33.    (setq blk (entlast))
  34.    (setq next blk)
  35.        (while (setq next (entnext next))
  36.    (setq next_data (entget next))
  37.    (if (= tag (cdr (assoc 2 next_data)))
  38.      (progn
  39.        (entmod (subst (cons 1 (itoa (cons 1 (itoa cnt)) (assoc 1 next_data) next_data))
  40.        (entupd blk)
  41.      )
  42.    )
  43.      )
  44.            (setq cnt (1+ cnt))
  45.            )
  46.      )
  47.    )
  48. (setvar "osmode" osm)
  49. (setvar "attdia" atd)
  50. (setvar "cmdecho" ech)
  51. (setvar "clayer" cla)
  52. (princ)
  53. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 07:30:01 | 显示全部楼层
为了提供替代方案,这将允许前导零:
 
http://lee-mac.com/numinc.html
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:51:11 | 显示全部楼层
我倾向于这样做:
然后你可以这样称呼它:
  1. (defun PrefixStr (str pre len)
  2. (repeat (/ (- len (strlen str)) (strlen pre)) (setq str (strcat pre str)))
  3. str)
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:01:53 | 显示全部楼层
感谢大家提供的各种选择。
 
我一直在尝试与Irneb发布的内容类似的东西,在itoa部分后加上“3”,但没有意识到在它之前需要前缀字符串编码。
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 08:09:59 | 显示全部楼层
如果将IF更改为cond 0 00或添加额外的IF,则会有点愚蠢
 
  1. 3
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:24:39 | 显示全部楼层
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 10:08 , Processed in 0.730528 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表