rajapower 发表于 2022-7-5 19:44:28

te的属性值组合

你好
 
你好
 
这是我在这个很棒的论坛上的第一篇帖子。我是拉贾
请帮助我使用lisp程序。那个
要求用户选择图形中的各种块
将属性文字放置在文字和唯一编号的值组合上。
使用att文本和序列号生成属性值。
att块的值应包含这些块
注:标签名称应具有标签ID,该值为(例如:L00-350-01-EPC-6QE-01(在每个块的值更改结束时)
 
为了便于参考,我附上了属性的样本文件
 
请帮帮我。每天我都要在这项工作上花很多时间。带数字的文本。图纸

Tharwat 发表于 2022-7-5 19:51:24

一般来说,您试图做的是可行的,但我们需要更多关于程序过程和结果的详细信息,以便能够编写有用的内容。
上传的两张图纸内容是一样的,不是吗?
我看不出有什么不同,除非你有重要的事情忘了提,否则你可能会错误地上传了两份!

rajapower 发表于 2022-7-5 19:55:23

thks回复,抱歉文件上传两次。。。

Tharwat 发表于 2022-7-5 20:01:45

然后。。。

rajapower 发表于 2022-7-5 20:06:02

我需要在属性标记的块语法中填充属性值,在该唯一值中为“ID”,以更新每个属性块,就像每个块都应该是序列号一样。例如:L00-350-01-EPC-6QE-01在此(值的末尾更改每个块),这意味着下一个块一旦要拾取,我需要获得序列号L00-350-01-EPC-6QE-02

rajapower 发表于 2022-7-5 20:08:21

具有自动编号属性的字符串

Tharwat 发表于 2022-7-5 20:12:29

因此,您希望程序要求用户指定第一个增量编号,然后在选择一组属性块后,程序应该将ID标记名称中的当前文本字符串与新的增量编号相结合?
 
这就是你想要的吗?

rajapower 发表于 2022-7-5 20:18:07

是的,你的权利

rajapower 发表于 2022-7-5 20:23:34

我有递增的数字,但在这方面我还需要字符串。fYRLisp程序
 
(定义c:UPNUMBER(/标记名addno ss en an ad ch)
 
(setq标记名“ID”)
 
(或def\U addno(setq def\U addno 1))
(initget 6)
(setq addno(getint(strcat“\n起始编号
 
(itoa def_addno)
">:   "
)
)
)
(或addno(setq addno def\u addno))
 
(和(setq ss(ssget’((0。“插入”)(66.1)))
(while(setq en(ssname ss 0))
(setq an(entnext en)
ad(entget an)
ch无
)
(while(和(=“ATTRIB”(cdr(assoc 0 ad)))
(非ch)
)
(和(=(strcase标记名)
(strcase(cdr(assoc 2 ad)))
)
(setq通道T)
(entmod(subst(cons 1(itoa addno))
(公元1年)
广告
)
)
(setq addno(1+addno))
)
(setq an(entnext an)
ad(entget an)
)
)
(如果为ch
(entupd en)
(程序
(重新绘制en 3)
(警报“此块中未找到ID标签”)
(重新绘制en 1)
)
)
(ssdel en ss)
)
)
(setq def\U addno addno)
(prin1)
)

Tharwat 发表于 2022-7-5 20:27:30


 

(defun c:Test (/ v lst n s ss)
;;------------------------------------;;
;;        Tharwat 03.06.2015                ;;
;; Increment with a number entered        ;;
;; by a user if the tag string is ID        ;;
;;------------------------------------;;
(if
   (and (setq v (getstring
                  "\nSpecify String with integer number at the end :"
                )
      )
      (if (setq lst (_parseInt v))
          (setq n (read (car lst))
                s (cadr lst)
          )
          (progn
            (alert
            "\nEntered value must have integer number at the end !"
            )
            nil
          )
      )
      (princ "\nSelect Attributed Block that have ID tag name :")
      (setq ss (ssget "_:L" '((0 . "INSERT") (66 . 1))))
   )
    ((lambda (i / sn)
       (while (setq sn (ssname ss (setq i (1+ i))))
         (mapcar
         '(lambda (a)
            (if (eq (strcase (vla-get-tagstring a)) "ID")
                (progn
                  (vla-put-textstring
                  a
                  (strcat s
                            (if (< n 10)
                              (strcat "0" (itoa n))
                              (itoa n)
                            )
                  )
                  )
                  (setq n (1+ n))
                )
            )
            )
         (vlax-invoke (vlax-ename->vla-object sn) 'getattributes)
         )
       )
   )
      -1
    )
)
(princ)
)(vl-load-com)
(defun _parseInt (v / l)
(setq v (vl-list->string (reverse (vl-string->list v))))
(while (and v (numberp (read (setq n (substr v 1 1)))))
   (setq l (cons n l)
         v (substr v 2)
   )
)
(if l
   (list (apply 'strcat l)
         (vl-list->string (reverse (vl-string->list v)))
   )
)
)
页: [1] 2
查看完整版本: te的属性值组合