kabcad 发表于 2022-7-6 09:02:27

块插入不工作sa

附加的lisp例程在AutoCAD 2011中运行良好,但在2012年表现有点奇怪。它将引入块,但不会像以前那样正确地打开属性对话框。我必须在所有属性中按enter键,而不仅仅是使用对话框。
比我聪明的人能知道AutoCAD 2012中这个例程现在会发生什么吗?
非常感谢。
基思
dcut。lsp
BUB。图纸

Cherilm 发表于 2022-7-6 09:14:15

kabcad;我没有测试你的例程,但听起来很像你需要将图形ATTDIA中的设置更改为1,同样的事情在2002年发生在我身上,当时我的对话框被该变量抑制。当ATTDIA设置为0时,必须在提示下手动输入块属性。(我没有仔细检查属性对话变量的名称,我没有时间,但如果我搞错了,你可以挖掘它。)。祝你好运

kabcad 发表于 2022-7-6 09:20:06

谢谢,但我检查了这个变量,它已经设置为1了。如果我使用基本的insert命令引入块,它会正常工作(出现对话框),但使用lisp例程则不会。

Cherilm 发表于 2022-7-6 09:29:17

好的,而且我还在2002年,我们有2011年,但我们没有必要迁移到它。看起来我可能很快就会这么做,因为它确实有一些以前版本没有的很酷的功能。
 
我刚刚想到,也许你的例程中有什么东西正在将该变量更改回“0”。只是一个想法。

SLW210 发表于 2022-7-6 09:33:59

查看ATTREQ是否为1。

Guest kruuger 发表于 2022-7-6 09:42:11

我想2012年ATTREQ有一个bug。
插入块时,请尝试以下操作:
(command "_.ddedit" (entlast))
k

kabcad 发表于 2022-7-6 09:48:25

 
k-
在lisp例程中,我将在哪里插入这行代码?
谢谢
kb

Guest kruuger 发表于 2022-7-6 09:55:56

试试这个:
(defun c:BU (/ *error* CE VL OV)
(defun *error* (Msg)
   (if
   (= 8 (logand 8 (getvar "UNDOCTL")))
   (command "._undo" "_e")
   )
   (if (not (member MSG '("Function cancelled" "quit / exit abort")))
   (princ (strcat "\nError: " MSG))
   )
   (mapcar 'setvar VL OV)
   (setvar "CMDECHO" CE)
   (princ)
)
(setq CE (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(command "._undo" "_be")
(setq VL (list "ATTDIA" "ATTREQ" "CLAYER" "DIMSCALE" "ORTHOMODE")
       OV (mapcar 'getvar VL)
)
(command "._layer" "_m" "DETCUT" "_c" 4 "" "")
(setvar "ATTDIA" 1)
(setvar "ATTREQ" 1)
(setvar "ORTHOMODE" 1)
(princ "\nInsertion point: ")
(command "._insert" "BUB" "_s" (/ (getvar "DIMSCALE") 96.) "_r" pause pause)
(while (/= (getvar "CMDNAMES") "")
   (command pause)
)
(command "_.ddedit" (entlast))
(command)
(command "._undo" "_e")
(mapcar 'setvar VL OV)
(setvar "CMDECHO" CE)
(princ)
)
(princ)
k

kabcad 发表于 2022-7-6 10:02:36

 
克鲁格,
非常感谢您在这方面所做的努力。我尝试了这段代码,它成功了,但与以前不同的是,它会打开“属性编辑器”对话框,而不是“属性输入”对话框。这有意义吗?我已经在BUB中定义了属性。dwg块,所以我需要做的就是在块插入到图形中后更改值(详图切割编号和图纸编号)。
再次感谢你帮我做这件事。。。
基思
页: [1]
查看完整版本: 块插入不工作sa