UREAL函数是什么
嘿伙计们,在我们的办公室里有一个古老的LISP程序,我正在尝试调整和改进。这不是一个过于复杂的例程,但它确实包含UREAL函数-我不熟悉。
这段代码是由我们的一个合作伙伴办公室的人编写的(不知道是多久前编写的)——因此追踪作者并不是一个真正的选择。
我在谷歌上搜索了一下,结果不是很多,我在AutoCAD帮助文件中也找不到这个函数。
(defun C:HP (/ PT1 BOLTDIA)
(setvar "cmdecho" 0)
(savehole)
(sethole)
(setvar "osmode" 32)
(SETQ PT1 (GETPOINT "\nPick Insertion Point. "))
(SETQ BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
(COMMAND "INSERT" "HP" PT1 BOLTDIA "")
(resethole)
(terpri)
)
...是代码。
它用于在车间图纸上插入孔符号。
我只是想知道UREAL函数是否可以替换或删除,或者是否有必要。
谢谢你们的帮助。
----------编辑----------
在做了更多的研究之后,似乎UREAL是由另一个例程定义的函数。定义不在上述代码的源文件中,因此我可能不得不在这个阶段放弃搜索。
但是,在这个主题上,你们能不能建议我一些其他的方法来调整这个代码,以消除对UREAL(替代函数)的需要?
再次感谢。 实际上,您有4个函数来查找ureal sethole savehole resethole,然后发布所有代码 嗨,比格尔,
谢谢你的回复。
其他函数在同一个源文件中定义-它们只是设置和重置一组变量。
(defun savehole ()
(setq osm (getvar "osmode"))
(setq ort (getvar "orthomode"))
(setq lup (getvar "luprec"))
(setq aup (getvar "auprec"))
)
(defun sethole ()
(setvar "osmode" 0)
(setvar "luprec" 2)
(setvar "auprec" 2)
)
(defun resethole ()
(setvar "osmode" osm)
(setvar "orthomode" ort)
(setvar "luprec" lup)
(setvar "auprec" aup)
)
(defun rtd (a)
(/ (* a 180.0) pi)
)
;----------------------------------------------------------------------
(defun C:HP (/ PT1 BOLTDIA)
(setvar "cmdecho" 0)
(savehole)
(sethole)
(setvar "osmode" 32)
(SETQ PT1 (GETPOINT "\nPick Insertion Point. "))
(SETQ BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
(COMMAND "INSERT" "HP" PT1 BOLTDIA "")
(resethole)
(terpri)
)
;---------------------------------------------------------------------
(defun C:HHP (/ PT1 BOLTDIA)
(setvar "cmdecho" 0)
(savehole)
(sethole)
(setvar "osmode" 32)
(SETQ PT1 (GETPOINT "\nPick Insertion Point. "))
(SETQ BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
(COMMAND "INSERT" "HHP" PT1 BOLTDIA "")
(resethole)
(terpri)
)
;-------------------------------------------------------------------
(defun C:HE (/ PT1 PT2 ANG THK BOLTDIA)
(setvar "cmdecho" 0)
(savehole)
(sethole)
(setvar "osmode" 32)
(setq PT1 (GETPOINT "\nPick Insertion Point. "))
(setvar "orthomode" 0)
(setvar "osmode" 128)
(setq PT2 (GETPOINT PT1 "\nPick perpendicular point for thickness. "))
(setvar "osmode" 0)
(setq THK (distancePT1 PT2))
(setq ANG (- (rtd (angle PT1 PT2)) 90))
(setq BOLTDIA nil BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
(COMMAND "INSERT" "HE" PT1 BOLTDIA THK ANG)
(resethole)
(terpri)
)
;-------------------------------------------------------------------
(defun C:HHE (/ PT1 PT2 ANG THK BOLTDIA)
(setvar "cmdecho" 0)
(savehole)
(sethole)
(setvar "osmode" 32)
(setq PT1 (GETPOINT "\nPick Insertion Point. "))
(setvar "orthomode" 0)
(setvar "osmode" 128)
(setq PT2 (GETPOINT PT1 "\nPick perpendicular point for thickness. "))
(setvar "osmode" 0)
(setq THK (distancePT1 PT2))
(setq ANG (- (rtd (angle PT1 PT2)) 90))
(setq BOLTDIA nil BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
(COMMAND "INSERT" "HHE" PT1 BOLTDIA THK ANG)
(resethole)
; (terpri)
)
... 是完整的代码。
有什么建议可以用另一种方式提示用户输入另一个字符串/实数输入,默认值将在用户输入时输入?
再次感谢。
附言:和猫相处得很愉快?希望你过得很好。 它可能是任何东西
它可能:
(ureal 1”“”输入孔径:“22)
第一个参数:1是单位
第二个参数:
第三个参数:提示消息
第4个参数:默认值
或
第一个参数:1是initget值
第二个参数:“initget string value”
第三个参数:getreal消息
第4个参数:默认值
或
第一个参数:C操作在列表上的1个位置
第二个参数:“initget string value”
第三个参数:getreal消息
第4个参数:默认值
(defun ureal (num msg msg2 def)
(initget msg)
(setq opt ((eval (nth num
'('getint getreal 'getstring
'getcorner 'getpoint 'getkword
)
)
)
msg2
)
)
(if (null opt) def opt))
简短的回答,我真的不知道 在谷歌搜索之后,我为UREAL找到了以下代码:
;This function is freeware courtesy of the author's of "Inside AutoLisp" for rel. 10 published by New Riders Publications.This credit must accompany all copies of this function. ; ;* UREAL User interface real function;* BIT (0 for none) and KWD key word ("" for none) are same as for INITGET. ;* MSG is the prompt string, to which a default real is added as <DEF> (nil ;* for none), and a : is added. ;* (defun ureal (bit kwd msg def / inp) (if def (setq msg (strcat "\n" msg " <" (rtos def 2) ">: ") bit (* 2 (fix (/ bit 2))) ) (setq msg (strcat "\n" msg ": ")) );if (initget bit kwd) (setq inp (getreal msg)) (if inp inp def) );defun ;* (princ) ;*
页:
[1]