trefan123 发表于 2022-7-5 15:01:03

了解为什么默认为sta

大家好。
有谁能告诉我为什么这个例程默认为标准,即使当前有不同的文本样式。
将一组数字上的字符串拆分。
提前感谢

(defun c:test (/ _l ss xfirst)
(setq xfirst (getint "\nPre number :"))
(setq xmiddle (+ 2 xfirst))
;;    Tharwat 18. May. 2014      ;;
(defun _l (e / a b l)
   (vla-getboundingbox (vlax-ename->vla-object e) 'a 'b)
   (setq l (mapcar 'vlax-safearray->list (list a b)))
   (distance (car l) (cadr l))
)
(if (setq ss (ssget "_:L" '((0 . "TEXT"))))
   ((lambda (i / sn st pt e en j n)
      (while (setq sn (ssname ss (setq i (1+ i))))
      (if (> (strlen (setq st (cdr (assoc 1 (setq en (entget sn)))))) xfirst)
          (progn (setq pt (cdr (assoc 10 en))
                     e(cdr (assoc -1 (entmod (append en (list (cons 1 (substr st 1 xfirst)))))))
                     st (substr st xmiddle)
               )
               (repeat (1+ (/ (strlen st) 45))
                   (setq
                     e (entmakex (append (vl-remove-if-not '(lambda (x) (member (car x) '(0 8 62 40 41 50))) (entget e))
                                       (list (cons 1 (substr st 1 45))
                                             (cons 10 (setq pt (polar pt (cdr (assoc 50 (entget e))) (_l e))))
                                       )
                                 )
                     )
                   )
                   (setq st (substr st 46))
               )
          )
      )
      )
    )
   -1
   )
)
(princ)

) (vl-load-com)

Jef! 发表于 2022-7-5 15:28:00

你好!
 
因为当你输入make/x时,如果你不提供一些临时参数,它就会求助于默认值。文本样式是组码7,因此可以通过添加代码并使用变量textstyle(cons 7(getvar的textstyle))构建来添加它
 
(defun c:test (/ _l ss xfirst)
(setq xfirst (getint "\nPre number :"))
(setq xmiddle (+ 2 xfirst))
;;    Tharwat 18. May. 2014      ;;
(defun _l (e / a b l)
   (vla-getboundingbox (vlax-ename->vla-object e) 'a 'b)
   (setq l (mapcar 'vlax-safearray->list (list a b)))
   (distance (car l) (cadr l))
)
(if (setq ss (ssget "_:L" '((0 . "TEXT"))))
   ((lambda (i / sn st pt e en j n)
      (while (setq sn (ssname ss (setq i (1+ i))))
      (if (> (strlen (setq st (cdr (assoc 1 (setq en (entget sn)))))) xfirst)
          (progn (setq pt (cdr (assoc 10 en))
                     e(cdr (assoc -1 (entmod (append en (list (cons 1 (substr st 1 xfirst)))))))
                     st (substr st xmiddle)
               )
               (repeat (1+ (/ (strlen st) 45))
                   (setq
                     e (entmakex (append (vl-remove-if-not '(lambda (x) (member (car x) '(0 8 62 40 41 50))) (entget e))
                                       (list (cons 1 (substr st 1 45))
                                             (cons 10 (setq pt (polar pt (cdr (assoc 50 (entget e))) (_l e))))
                                             (cons 7 (getvar 'textstyle))
                                       )
                                 )
                     )
                   )
                   (setq st (substr st 46))
               )
          )
      )
      )
    )
   -1
   )
)
(princ)

) (vl-load-com)
 
未经测试,但应该很好,除非我太生疏了
干杯

trefan123 发表于 2022-7-5 15:40:51


e (entmakex (append (vl-remove-if-not '(lambda (x) (member (car x) '(0 7 8 62 40 41 50 51))) (entget e))

 
谢谢
我把数字加在了上面一行。。。在我查了所有的“犯人”后,发现有些数字是一样的。。。它起作用了。。。谢谢你的帮助

Jef! 发表于 2022-7-5 15:57:03

嗯,这不完全一样。它可能会工作,但不会做你最初要求的事情,这是关于它是在活动文本样式上创建的。
 
通过在我的帖子中添加绿色的cons部分,它将接受任何选定的文本,删除文本样式,并应用当前活动的文本样式,而您所做的修改将保留源的文本样式。基本上,如果您选择的文本样式不是活动或标准样式,它将保持原样。这可能是您想要实现的,但在我看来,如果源代码有可能具有任何其他文本样式,那么最好实际控制输出,而不是保持原样。

trefan123 发表于 2022-7-5 16:14:18

谢谢
如果我再次遇到这个问题,我会记得的。。。目前,这对我来说是一种混合和希望。
我真的很感谢这个论坛和你从知情人士那里得到的帮助。
再次感谢
页: [1]
查看完整版本: 了解为什么默认为sta