NoelStalker 发表于 2022-7-6 15:24:58

lisp设置dimdec并选择

大家好,
 
我试图制作一个lisp文件,该文件将发出命令“0”到“9”,将dimdec变量更改为相应的数字,然后要求我选择一个维度(就像我键入“dim”然后键入“up”)并相应地更新精度。
 
我从这个开始,有人帮我为dimscale的数组,但我不知道如何编辑它,因为我希望数字是命令本身。。。
 
(defun c:setdimdec(/ i)<p>(setq i 1)</p><p>(repeat 9</p><p>    (eval(read(strcat "(defun c:d" (itoa i)</p><p>      "()(setvar \"DIMSCALE\" " (itoa i)</p><p>      ")(princ))")))</p><p>    (setq i(1+ i))</p><p>    ); end repeat</p><p>(princ)</p><p>); end of test</p><p>(c:test)[\code]</p>

Lee Mac 发表于 2022-7-6 15:36:26

试试这个:
 


(defun c:dd (/ *error* dim ss ssl)
   (defun *error* (msg)
   (setvar "cmdecho" 1)
   (if (= msg "")
       (princ "\nFunction Complete.")
       (princ "\nError or Esc Pressed...")
   ) ;_end if
   (princ)
   ) ;_end defun
   (setvar "cmdecho" 0)
   (if
   (>= (setq dim (getint "\nSpecify Number of Decimal Places: ")) 0)
      (progn
          (setvar "DIMDEC" dim)
          (setq ss (ssget))
          (if (/= (setq ssl (sslength ss)) 0)
          (command "-dimstyle" "a" ss "")
          (alert "No Dimensions Selected.")
          ) ;_end if
      ) ;_end progn
      (alert "Number of Decimal Places must be Positive.")
   ) ;_end if
   (*error* "")
   (princ (strcat "\n" (itoa ssl) " Dimensions Updated."))
   (princ)
) ;_end defun

NoelStalker 发表于 2022-7-6 15:52:42

谢谢你,李!这很有效。有没有办法将命令“0”指定为“dd”,然后将“0”、“1”指定为“1”等等?这样我只需要少输入一个。

Lee Mac 发表于 2022-7-6 15:59:05

“0”的示例:
 

(defun c:0 (/ *error* ss ssl)
   (defun *error* (msg)
   (setvar "cmdecho" 1)
   (if (= msg "")
       (princ "\nFunction Complete.")
       (princ "\nError or Esc Pressed...")
   ) ;_end if
   (princ)
   ) ;_end defun
   (setvar "cmdecho" 0)
   (setvar "DIMDEC" 0)
   (setq ss (ssget))
   (if    (/= (setq ssl (sslength ss)) 0)
   (command "-dimstyle" "a" ss "")
   (alert "No Dimensions Selected.")
   ) ;_end if
   (*error* "")
   (princ (strcat "\n" (itoa ssl) " Dimensions Updated."))
   (princ)
) ;_end defun

 
将突出显示的零更改为不同的数字以满足您的需要。

Lee Mac 发表于 2022-7-6 16:05:13

或者,这可能是为了一次更新图形中的所有尺寸。
 

(defun c:0 (/ *error* ss ssl)
   (defun *error* (msg)
   (setvar "cmdecho" 1)
   (if (= msg "")
       (princ "\nFunction Complete.")
       (princ "\nError or Esc Pressed...")
   ) ;_end if
   (princ)
   ) ;_end defun
   (setvar "cmdecho" 0)
   (setvar "DIMDEC" 0)
   (setq ss (ssget "X" (list (cons 0 "DIMENSION"))))
   (if    (/= (setq ssl (sslength ss)) 0)
   (command "-dimstyle" "a" ss "")
   (alert "No Dimensions Exist.")
   ) ;_end if
   (*error* "")
   (princ (strcat "\n" (itoa ssl) " Dimensions Updated."))
   (princ)
) ;_end defun

NoelStalker 发表于 2022-7-6 16:20:32

谢谢李·麦克。你太牛了祝您有个美好的一天。

Lee Mac 发表于 2022-7-6 16:28:47

 
为诺尔干杯,(也祝你新年快乐)
页: [1]
查看完整版本: lisp设置dimdec并选择