插入c的行为帮助
嘿伙计们,希望这对你们中的一些人来说很容易。。。
我有一个LISP例程,如下所示,在我的工作机器上,它的行为完美如图所示。但在我同事的一台机器上,“INSERT”命令调用将启动INSERT对话框。
我知道可以绕过对话,使用命令提示符版本的命令,在前面加上连字符,但我只是想知道是否有人可以解释我们两台机器之间的不同行为。是否存在控制这一点的系统变量?
(Defun c:AH ()
(SETVAR "ORTHOMODE" 0)
(SETQ AHSCALE (GETVAR "DIMSCALE"))
(SETQ AHDSTYLE (GETVAR "DIMSTYLE"))
(command "-layer" "set" "PS_DIM" "")
(command "-dimstyle" "restore" "PDC_PROSTEEL")
(command "dimscale" AHSCALE)
(SETQ AHPT1 (GETPOINT "\nPick Leader Insertion Points... "))
(SETQ AHPT2 (GETPOINT AHPT1))
(COMMAND "QLEADER" AHPT1 AHPT2 NIL)
(SETQ FIRSTLEADER (SSGET "L"))
(SETVAR "ORTHOMODE" 1)
(SETQ AHPT3 (GETPOINT AHPT2 "\nSpecify Note Orientation... "))
(SETQ AHQTY (GETINT "\nEnter Quantity of Holes : "))
(SETQ AHdia (getstring "\nEnter Diameter of Holes (Include slot length if applicable) : " XX))
(INITGET "H S h s")
(setq ahht (cond ( (getkword "\nChoose hole type : ") ) ( "H" )))
(COND
((EQ ahht "H")
(SETQ AHHQ (if (> AHQTY 1) " HOLES" " HOLE")))
((EQ ahht "S")
(INITGET "C O N c o n")
(setq ahST (cond ( (GETKWORD "\nSlot measurement < Center-Center / OverAll / Neither >:")) ( "N" )))
(COND
((EQ ahST "C")
(SETQ AHHQ (if (> AHQTY 1) " C/C SLOTS" " C/C SLOT")))
((EQ ahST "O")
(SETQ AHHQ (if (> AHQTY 1) " O/A SLOTS" " O/A SLOT")))
((EQ ahST "N")
(SETQ AHHQ (if (> AHQTY 1) " SLOTS" " SLOT"))))
))
(setq ahnote (strcat (ITOA AHQTY)"-%%C"AHdia AHHQ))
(SETQ AHANG (RTD (ANGLE AHPT2 AHPT3)))
(IF (= 0 AHANG) (COMMAND "INSERT" "holenote_M" AHPT2 AHSCALE "" "" ahnote "" "" "" "" ""))
(IF (= 180 AHANG) (COMMAND "INSERT" "holenoteO_M" AHPT2 AHSCALE "" "" ahnote "" "" "" "" ""))
(SETQ AHPT1 (POLAR AHPT1 (ANGLE AHPT1 AHPT2) (/ (ATOI AHdia) 2)))
(COMMAND "QLEADER" AHPT1 AHPT2 NIL)
(COMMAND "ERASE" FIRSTLEADER "")
(command "-dimstyle" "restore" "MW_STD" "dimscale" AHSCALE)
(princ)
)
非常感谢您的帮助。 看起来你的区块有属性;如果可能与属性输入对话框有关,则可能会被ATTREQ系统变量抑制。 嗨Mircea,
谢谢你的回复。
块确实有属性,但显示的不是“输入属性”对话框(由ATTREQ和ATTDIA控制)。当ATTREQ设置为1,ATTDIA设置为0时,例程的行为与我的机器上的预期一样,但在另一台计算机上使用相同的系统变量设置时,我们会收到“插入”对话框的提示。
我认为可能是FILEDIA或CMDDIA sysvars,但它们在两台机器上设置相同,并且不会影响例程。
再次感谢。 嗨,塔瓦,
也谢谢你的回复。我很确定ATTREQ和ATTDIA Sysvar不是本案的罪魁祸首。我们在两台机器上都将两个系统变量设置为相同的值,并且该例程产生不同的结果。
很抱歉,在看到你的回复后,我不得不删除我之前迟来的回复。
尝试在insert命令调用之前添加以下函数。
(initcommandversion 1) 嘿Tharwat,
不用担心发帖时间,我只是觉得我们可能已经在同一时间回复了。
我当然会尝试(initcommandversion 1)设置。
你知道是什么导致了这两台机器之间的差异吗?为什么一台机器需要(initcommandversion 1)设置,而另一台不需要?
再次感谢。
不是很确定,但我认为随着每个新版本的发布,现有命令调用的行为可能会发生变化,因此当在Lisp例程中使用命令时,它们的行为可能与以前的版本不同。
试着习惯于本地化变量,以避免lisp例程中的任何奇怪行为,这些行为可能会让你困惑这么长时间。 他们只是确保我们清醒,哈哈。
两台机器运行的是同一版本,安装应该几乎相同。我刚刚问了我的同事,在今天之前这个程序是否正常工作,他说今天早上它工作得很好。我认为可能在他不知情的情况下发生了环境变化。
Ps,这不是我第一次这样做,但我不记得上次我是如何克服这个问题的。 你正在使用
(command "insert" ...)
或
(command "-insert" ...)
应该是第二个! 嗨,Bhull1985,
谢谢你的回复。使用“-INSERT”可以解决这个问题。但我真的只是想找出为什么“INSERT”在我的机器上可以正常工作,但在我的同事身上却不行。
页:
[1]
2