rsstoik 发表于 2022-7-6 10:41:16

我想创建一个新的块u

我有一个lisp例程来执行此操作,但我希望可以选择块的新名称或autocad生成的随机块名称。
 
我该如何修改这个lisp例程来做到这一点?
 
我正在查看的命令是(nb)for new block。
 
谢谢
 
兰迪
BLKEDIT。lsp

Lee Mac 发表于 2022-7-6 10:55:05

您缺少了其中的一些功能。。。。

rsstoik 发表于 2022-7-6 11:10:53

我已经更新了lisp文件。

David Bethel 发表于 2022-7-6 11:18:41

我会以这样的方式主演:
 

(defun c:copyblk (/ vars ss en ed bn td fe nb)
(setq vars '(("CELTYPE"   . "BYLAYER")
            ("THICKNESS" . 0.0)
            ("CELTSCALE" . 1.0)
            ("CECOLOR"   . "BYLAYER")))

(foreach v vars
   (if (getvar (car v))
       (setvar (car v) (cdr v))))

(if (and (princ "\nSelect A Single Standard INSERT...")
          (setq ss (ssget '((0 . "INSERT"))))
          (= (sslength ss) 1)
          (setq en (ssname ss 0)
                ed (entget en)
                bn (cdr (assoc 2 ed))
                td (tblsearch "BLOCK" bn)
                fe (cdr (assoc -2 td)))
          (not (assoc 1 td))
          (princ (strcat "\nRename Block " (strcase bn) " as:"))
          (while (or (not nb)
                     (not (snvalid nb)))
               (setq nb (strcase (getstring "\nNew Block Name:   ")))))
      (progn
          (entmake (list (cons 0 "BLOCK")(cons 2 nb)(assoc 10 td)(assoc 70 td)))
          (while fe
            (entmake (entget fe))
            (setq fe (entnext fe)))
          (entmake (list (cons 0 "ENDBLK")(cons 8 "0")))
          (entmod (subst (cons 2 nb) (assoc 2 ed) ed))
          (entupd en)))
(prin1))


-大卫

rsstoik 发表于 2022-7-6 11:28:37

大卫,
 
谢谢
 
您是否知道如何为块命名或让Autocad创建自己的块名(例如A$C7E723876)。就像复制并粘贴为块一样。
 
兰迪

Lee Mac 发表于 2022-7-6 11:36:28

试试附件,它应该适用于任何类型的块(属性、动态等)
复制块。lsp

David Bethel 发表于 2022-7-6 11:48:36

 
我可以把它变成一个匿名街区。它们的名字以*U开头,然后是递增的数字。
 
我不知道ACAD用C美元做了什么。。。命名约定。
 
也许有人可以解释一下-大卫
页: [1]
查看完整版本: 我想创建一个新的块u