The Buzzard 发表于 2022-7-6 10:30:17

前导零#039;属性中的s

大家好,
 
我目前正在开发一个用于电缆ID标签的块程序。标签末尾使用序列号。它们从001、002、003开始,以此类推。当程序插入每个块时,数字将增加1。我遇到的问题是,插入块后,数字中的前导零没有显示。我原以为改变丁津会管用,但事实并非如此。
请参见下图。
 
这有一个变量吗?或者我需要使用某种特殊方法来实现这一点吗?
 
非常感谢您的帮助。
谢谢

BlackBox 发表于 2022-7-6 10:36:33

您是否尝试过vl string left trim功能?
 
[编辑]

(vl-string-left-trim "0" "01-N-AV-001")
_$
"1-N-AV-001"
_$

[/编辑]

alanjt 发表于 2022-7-6 10:37:07

(defun AT:NumFix (s n)
;; Fix number string with leading zeros
;; s - Number string to fix
;; n - Number of characters for final string
;; Alan J. Thompson, 10.29.09
(if (< (strlen s) n)
   (AT:NumFix (strcat "0" s) n)
   s
)
)
 
(位于:NumFix“3”4)->“0003”

The Buzzard 发表于 2022-7-6 10:42:38

谢谢RenderMan,但我不熟悉VL。我更倾向于一种普通的解决方案。下面是我当前使用的函数。它适用于前导零除外。
 

(defun COMM_SEQN ()
(setq ATAG (strcat "01-N-"OUSE"-"SEQN""))
(setq SS (ssget "_l" (list (cons 0 "INSERT")(cons 66 1))))
(if
   (/= SS nil)
   (progn
   (setq INDEX 0)
   (setq ENAME (ssname SS INDEX))
   (setq ELIST (entget ENAME))
   (while
       (/= (cdr (assoc 0 ELIST)) "SEQEND")
       (setq ELIST (entget ENAME))
       (if
         (= "ID-TAG" (cdr (assoc 2 ELIST)))
         (progn
         (entmod (subst (cons 1 ATAG)(assoc 1 ELIST) ELIST))
         (entupd ENAME)))
         (setq ENAME (entnext ENAME)))))
(princ))
(princ)

The Buzzard 发表于 2022-7-6 10:44:57

艾伦,这很有趣。看起来我需要提供两个参数,一个字符串和一个数字,如果我理解正确的话。

BlackBox 发表于 2022-7-6 10:48:25

我的错,秃鹰。
 
艾伦给了你一个很好的选择!(…奖杯架上还有一个,呃,艾伦!)

The Buzzard 发表于 2022-7-6 10:49:32

 
没问题,我还是很感激你的帮助。

alanjt 发表于 2022-7-6 10:53:29

对的第一个是数字字符串,第二个是字符串的所需长度
例如(在:NumFix“1”3处)将产生“001”。
 
谢谢

The Buzzard 发表于 2022-7-6 10:57:24

 
好的,随着序列的增加,我需要使用一个条件语句。例如:001-009和010-099,因为当它们到达这些点时,由于前导零更少,这些值会发生变化。

Lee Mac 发表于 2022-7-6 11:00:26

艾伦,你的代码激发了我对这个概念的兴趣
 
我喜欢跟踪调用:
 

Entering (PADLEFT&RIGHT "1" "0" 8 5)
Entering (PADLEFT "1" 8 5)
   Entering (PADRIGHT "01" 7 5)
   Entering (PADLEFT "010" 7 4)
       Entering (PADRIGHT "0010" 6 4)
         Entering (PADLEFT "00100" 6 3)
         Entering (PADRIGHT "000100" 5 3)
             Entering (PADLEFT "0001000" 5 2)
               Entering (PADRIGHT "00001000" 4 2)
               Entering (PADLEFT "000010000" 4 1)
Entering (PADRIGHT "0000010000" 3 1)
   Entering (PADLEFT "00000100000" 3 0)
   Entering (PADRIGHT "000000100000" 2 0)
       Entering (PADLEFT "000000100000" 2 0)
         Entering (PADRIGHT "0000000100000" 1 0)
         Entering (PADLEFT "0000000100000" 1 0)
             Entering (PADRIGHT "00000000100000" 0 0)
             Result:"00000000100000"
         Result:"00000000100000"
         Result:"00000000100000"
       Result:"00000000100000"
   Result:"00000000100000"
   Result:"00000000100000"
Result:"00000000100000"
               Result:"00000000100000"
               Result:"00000000100000"
             Result:"00000000100000"
         Result:"00000000100000"
         Result:"00000000100000"
       Result:"00000000100000"
   Result:"00000000100000"
   Result:"00000000100000"
Result:"00000000100000"
Result:"00000000100000"

页: [1] 2
查看完整版本: 前导零#039;属性中的s