chelsea1307 发表于 2022-7-6 15:21:57

为什么文本没有出现

我已经浏览了所有旧的lisp文件,并将lisp从170多个缩小到了60个,这一个有一个很好的概念,它只是不能一直工作。它在获取面积(用于面积提取)后插入房间名称块,并在输入插入的信息B后请求房间名称行1和2以及房间编号,但没有刚刚插入的面积、房间名称和房间编号。什么是不对的,我该如何修复它。我对Lisp程序知道得不多,我几乎看不懂,以前也没有创建过自己的Lisp程序。
(DEFUN C:ARE ()
(IF (TBLSEARCH "LAYER" "ROOMNAMES" )
(PROGN
(SETQ RGN (GETVAR "REGENMODE" ))
(SETVAR "REGENMODE" 0)
(COMMAND "LAYER" "M" "DESIGN")
(COMMAND "C" "1" "")
(COMMAND "")
(COMMAND "LAYER" "S" "ROOMNAMES" "")
(SETVAR "REGENMODE" RGN)
);PROGN
); IF
(SETQ AR2 (ENTSEL "\N PICK AREA"))
(COMMAND "AREA" "E" AR2 )
(SETQ AR (GETVAR "AREA"))
(SETQ AR1 (/ AR 144 ))
(SETQ AR2 (RTOS AR1 2 1))
(SETQ SCL (GETVAR "DIMSCALE"))
(SETQ PNT (GETPOINT "\ N PICK INSERTION POINT:"))
(SETQ NME (GETSTRING "\ N ENTER ROOMNAME LINE#2"))
(SETQ NME2 (GETSTRING "\ N ENTER ROOMNAME LINE #1"))
(SETQ NME3 (GETSTRING "\ N ENTER NUMBER"))
(COMMAND "INSERT" "ROOM" PNT SCL SCL "0" NME NME2 NME3 AR2)
)

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

LISP似乎写得非常糟糕-我会尝试重写。

Lee Mac 发表于 2022-7-6 15:38:17

Lisp程序写得更好:
 

(defun c:ARE (/ *error* varlist oldvars ar2 ar scl pnt nme2 nme nme3)
   (defun *error* (msg)
   (mapcar 'setvar varlist oldvars)
   (if (= msg "")
       (princ "\nFunction Complete.")
       (princ (strcat "\n" (strcase msg)))
   ) ;_end if
   (princ)
   ) ;_end defun
   (setq varlist (list "CMDECHO" "ATTREQ" "CLAYER" "OSMODE")
   oldvars (mapcar 'getvar varlist)
   ) ;_end setq
   (mapcar 'setvar varlist (list 0 1 "0" 0))
   (if    (not (tblsearch "LAYER" "ROOMNAMES"))
   (command "-layer" "m" "ROOMNAMES" "C" "1" "ROOMNAMES" "")
   (setvar "clayer" "ROOMNAMES")
   ) ; if
   (while
   (not ar2)
      (setq ar2 (car (entsel "\nPick Area: ")))
   ) ;_end while
   (command "_area" "object" ar2)
   (setq ar(rtos (/ (getvar "AREA") 144) 2 1)
   scl (getvar "dimscale")
   ) ;_end setq
   (if    (and
       (setq pnt(getpoint "\nPick insertion point:")
         nme2 (getstring "\nEnter Roomname Line #1: ")
         nme(getstring "\nEnter Roomname Line #2: ")
         nme3 (getstring "\nEnter Number: ")
       ) ;_end setq
   ) ;_end and
   (command "-insert" "room" pnt scl scl "0.0" nme nme2 nme3 ar)
   ) ;_end if
   (*error* "")
   (princ)
) ;_end defun


 
如果这不能正常工作,请提供您正在使用的块,我将进行测试。

Lee Mac 发表于 2022-7-6 15:50:25

Lisp程序有帮助吗?

chelsea1307 发表于 2022-7-6 15:52:03

我得到了同样的结果。我把积木挂上了。谢谢你的帮助
图纸3.dwg

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

好啊
 
使用此代码:
 
在块dwg中,分解块并从图形中清除块,然后另存为房间。dwg在ACAD库搜索路径中,它将工作。

chelsea1307 发表于 2022-7-6 16:14:08

这几乎完美无瑕。出于某种原因,虽然它没有在插入点插入,但它会偏离约1.5英尺。我该如何解决这个问题?我注意到,当我选择块时,它在插入点处有一个夹点,如果这有助于了解其插入关闭的原因的话。

chelsea1307 发表于 2022-7-6 16:19:53

nvm我修复了它。我的区块在原始dwg中不是0,0,我移动了它,现在它工作得很好,谢谢!

Lee Mac 发表于 2022-7-6 16:26:35

好极了-我想这可能是关于插入点的问题。
 
很高兴你能正常工作。
页: [1]
查看完整版本: 为什么文本没有出现