chiimayred 发表于 2022-7-5 16:16:38

 
我希望去掉它的“entsel”部分,只让lisp选择图形中的唯一实体,而不需要用户的任何输入。

Tharwat 发表于 2022-7-5 16:21:32

 
我认为OP不想选择任何块,因此需要使用模式为“_X”的ssget函数,逐个迭代选择集实体名称。

CheSyn 发表于 2022-7-5 16:23:56

Chiimayred,我已经更新了我在上一页发布的代码。根据您的描述,我假设当您使用此命令时,图形中只有一个块。
 
Tharwat,请检查我的更新,并让我知道我是否在正确的轨道上(当然,如果时间允许)

Tharwat 发表于 2022-7-5 16:27:49

 
很好,但请在下面的例程中查找代码的新更改。
 
让我们希望用户将所有层解锁,以避免意外的错误消息。

(defun c:test (/ sset blk newscl n)
(if (setq sset (ssget "_x" (list '(0 . "INSERT") (cons 410 (getvar "ctab")))))
   (repeat (setq n (sslength sset))
   (setq blk (ssname sset (setq n (1- n))))
   (entmod(append(entget blk) (list (cons 41 1.025) (cons 42 1.025))))
   (command "_.explode" blk "")
   )
   (prompt "\nNo blocks in drawing!")
)
(princ)
)

CheSyn 发表于 2022-7-5 16:32:05

 
我懂了!以防出现多个块,对吗?

Tharwat 发表于 2022-7-5 16:35:22

 
如果你说的是代码中的变化,那么是正确的,但是如果你说的是第二段,那么我可以告诉你,如果在锁定层中的任何选定块,代码不能改变比例,也不能分解它。

CheSyn 发表于 2022-7-5 16:36:32

 
是的,我在回复第一段。但我会记住这两点

chiimayred 发表于 2022-7-5 16:40:31

(defun c:utm2bp (/ blk)
(command
   "_.scale"
   "_all"
   ""
   '(0 0)
   3.28084
   "_block"
   "1"
   '(0 0)
   "_all"
   ""
   )
(if (setq sset (ssget "_x" (list '(0 . "INSERT") (cons 410 (getvar "ctab")))))
   (repeat (setq n (sslength sset))
   (setq blk (ssname sset (setq n (1- n))))
   (entmod(append(entget blk) (list (cons 41 1.025) (cons 42 1.025))))
   (command "_.explode" blk "")
   )
   (prompt "\nNo blocks in drawing!")
   )
(princ)
)
 
下面是它的样子。。。当我运行这个lisp时,我不断得到一个“绘图中没有块”提示。。。

Lee Mac 发表于 2022-7-5 16:41:55

我建议如下:
(defun c:utm2bp ( / blk sel )
   (if (= 1 (getvar 'cvport))
       (princ "\nCommand only available in Modelspace.")
       (if (setq sel (ssget "_X" '((410 . "Model"))))
         (progn
               (setq blk 0)
               (while (tblsearch "block" (itoa (setq blk (1+ blk)))))
               (setq blk (itoa blk))
               (command
                   "_.scale" sel "" "_non" '(0 0) 3.28084
                   "_.-block"blk"_non" '(0 0) sel ""
                   "_.-insert" blk"_non" '(0 0) 1.025 1.025 0.0
                   "_.explode" (entlast)
                   "_.-purge" "_b" blk "_N"
               )
         )
         (princ "\nNo objects found in Modelspace.")
       )
   )
   (princ)
)

chiimayred 发表于 2022-7-5 16:47:22

 
嘿,我现在正在试。。。你能解释一下while命令、tblsearch、progn和这段代码的用法吗
 
   (setq blk 0)
               (while (tblsearch "block" (itoa (setq blk (1+ blk)))))
               (setq blk (itoa blk))
谢谢你的时间、帮助和耐心。
页: 1 [2]
查看完整版本: [LISP]仅缩放“x”an