乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 91|回复: 4

[编程交流] UREAL函数是什么

[复制链接]

77

主题

298

帖子

232

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
394
发表于 2022-7-6 08:48:19 | 显示全部楼层 |阅读模式
嘿伙计们,
 
在我们的办公室里有一个古老的LISP程序,我正在尝试调整和改进。这不是一个过于复杂的例程,但它确实包含UREAL函数-我不熟悉。
 
这段代码是由我们的一个合作伙伴办公室的人编写的(不知道是多久前编写的)——因此追踪作者并不是一个真正的选择。
 
我在谷歌上搜索了一下,结果不是很多,我在AutoCAD帮助文件中也找不到这个函数。
 
  1. (defun C:HP (/ PT1 BOLTDIA)
  2.   (setvar "cmdecho" 0)
  3. (savehole)
  4. (sethole)
  5.   (setvar "osmode" 32)
  6.   (SETQ PT1 (GETPOINT "\nPick Insertion Point. "))
  7.   (SETQ BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
  8.   (COMMAND "INSERT" "HP" PT1 BOLTDIA "")
  9. (resethole)
  10.   (terpri)
  11. )

 
...是代码。
 
它用于在车间图纸上插入孔符号。
 
我只是想知道UREAL函数是否可以替换或删除,或者是否有必要。
 
谢谢你们的帮助。
 
----------编辑----------
 
在做了更多的研究之后,似乎UREAL是由另一个例程定义的函数。定义不在上述代码的源文件中,因此我可能不得不在这个阶段放弃搜索。
 
但是,在这个主题上,你们能不能建议我一些其他的方法来调整这个代码,以消除对UREAL(替代函数)的需要?
 
再次感谢。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:13:14 | 显示全部楼层
实际上,您有4个函数来查找ureal sethole savehole resethole,然后发布所有代码
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
394
发表于 2022-7-6 09:25:24 | 显示全部楼层
嗨,比格尔,
 
谢谢你的回复。
 
其他函数在同一个源文件中定义-它们只是设置和重置一组变量。
 
  1. (defun savehole ()
  2.   (setq osm (getvar "osmode"))
  3.   (setq ort (getvar "orthomode"))
  4.   (setq lup (getvar "luprec"))
  5.   (setq aup (getvar "auprec"))
  6. )
  7. (defun sethole ()
  8.   (setvar "osmode" 0)
  9.   (setvar "luprec" 2)
  10.   (setvar "auprec" 2)
  11. )
  12. (defun resethole ()
  13.   (setvar "osmode" osm)
  14.   (setvar "orthomode" ort)
  15.   (setvar "luprec" lup)
  16.   (setvar "auprec" aup)
  17. )
  18. (defun rtd (a)
  19.   (/ (* a 180.0) pi)
  20. )
  21. ;----------------------------------------------------------------------
  22. (defun C:HP (/ PT1 BOLTDIA)
  23.   (setvar "cmdecho" 0)
  24. (savehole)
  25. (sethole)
  26.   (setvar "osmode" 32)
  27.   (SETQ PT1 (GETPOINT "\nPick Insertion Point. "))
  28.   (SETQ BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
  29.   (COMMAND "INSERT" "HP" PT1 BOLTDIA "")
  30. (resethole)
  31.   (terpri)
  32. )
  33. ;---------------------------------------------------------------------
  34. (defun C:HHP (/ PT1 BOLTDIA)
  35.   (setvar "cmdecho" 0)
  36. (savehole)
  37. (sethole)
  38.   (setvar "osmode" 32)
  39.   (SETQ PT1 (GETPOINT "\nPick Insertion Point. "))
  40.   (SETQ BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
  41.   (COMMAND "INSERT" "HHP" PT1 BOLTDIA "")
  42. (resethole)
  43.   (terpri)
  44. )
  45. ;-------------------------------------------------------------------
  46. (defun C:HE (/ PT1 PT2 ANG THK BOLTDIA)
  47.   (setvar "cmdecho" 0)
  48. (savehole)
  49. (sethole)
  50.   (setvar "osmode" 32)
  51.   (setq PT1 (GETPOINT "\nPick Insertion Point. "))
  52.   (setvar "orthomode" 0)
  53.   (setvar "osmode" 128)
  54.   (setq PT2 (GETPOINT PT1 "\nPick perpendicular point for thickness. "))
  55.   (setvar "osmode" 0)
  56.   (setq THK (distance  PT1 PT2))
  57.   (setq ANG (- (rtd (angle PT1 PT2)) 90))
  58.   (setq BOLTDIA nil BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
  59.   (COMMAND "INSERT" "HE" PT1 BOLTDIA THK ANG)
  60. (resethole)
  61.   (terpri)
  62. )
  63. ;-------------------------------------------------------------------
  64. (defun C:HHE (/ PT1 PT2 ANG THK BOLTDIA)
  65.   (setvar "cmdecho" 0)
  66. (savehole)
  67. (sethole)
  68.   (setvar "osmode" 32)
  69.   (setq PT1 (GETPOINT "\nPick Insertion Point. "))
  70.   (setvar "orthomode" 0)
  71.   (setvar "osmode" 128)
  72.   (setq PT2 (GETPOINT PT1 "\nPick perpendicular point for thickness. "))
  73.   (setvar "osmode" 0)
  74.   (setq THK (distance  PT1 PT2))
  75.   (setq ANG (- (rtd (angle PT1 PT2)) 90))
  76.   (setq BOLTDIA nil BOLTDIA (ureal 1 "" "Enter Hole Diameter" 22))
  77.   (COMMAND "INSERT" "HHE" PT1 BOLTDIA THK ANG)
  78. (resethole)
  79. ;   (terpri)
  80. )

 
... 是完整的代码。
 
有什么建议可以用另一种方式提示用户输入另一个字符串/实数输入,默认值将在用户输入时输入?
 
再次感谢。
 
附言:和猫相处得很愉快?希望你过得很好。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:34:23 | 显示全部楼层
它可能是任何东西
 
它可能:
(ureal 1”“”输入孔径:“22)
第一个参数:1是单位
第二个参数:
第三个参数:提示消息
第4个参数:默认值
 

第一个参数:1是initget值
第二个参数:“initget string value”
第三个参数:getreal消息
第4个参数:默认值
 

第一个参数:C操作在列表上的1个位置
第二个参数:“initget string value”
第三个参数:getreal消息
第4个参数:默认值
 
  1. (defun ureal (num msg msg2 def)
  2. (initget msg)
  3. (setq opt ((eval (nth num
  4.   '('getint getreal       'getstring
  5.     'getcorner 'getpoint     'getkword
  6.    )
  7.     )
  8.      )
  9.       msg2
  10.     )
  11. )
  12. (if (null opt) def opt))

 
简短的回答,我真的不知道
回复

使用道具 举报

7

主题

143

帖子

136

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-6 09:52:57 | 显示全部楼层
在谷歌搜索之后,我为UREAL找到了以下代码:
 
  1. ;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) ;*
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 08:09 , Processed in 0.603093 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表