乐筑天下

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

[编程交流] 角度变量问题

[复制链接]

17

主题

34

帖子

17

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 06:30:20 | 显示全部楼层 |阅读模式
大家好
 
Lisp程序有个问题,基本上是读角度。我将所述角度的值保存在一个变量中(转换为deg),该变量称为ANGLE1。当我在命令行输入(ANGLE1)时,它显示为30.0,这是正确的,但如果我输入(=ANGLE1 30.0),它应该返回T,但由于某些原因,它返回nil。
 
如果我键入(setq ANGLE1 30.0),然后重复(=ANGLE1 30.0),它确实返回T
 
有人知道为什么从实际角度存储的变量ANGLE1不起作用吗?
 
 
我已经简化了实际的程序,以便更容易解释,希望它能正确阅读。
回复

使用道具 举报

18

主题

222

帖子

51

银币

后起之秀

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

铜币
260
发表于 2022-7-6 06:54:09 | 显示全部楼层
在此处返回T
你的代码是什么?
回复

使用道具 举报

17

主题

34

帖子

17

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 06:55:26 | 显示全部楼层
原始角度1变量取自2(getpoints)之间的角度
 
如果使用(setq ANGLE1(getangle“\n点击角度”),则选择角度(极轴30度),该角度应返回0.523599弧度
 
然后使用返回30.0的(setq ANGLE2(*(/ANGLE1 pi)180))
然后尝试(=ANGLE2 30.0),返回nil
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 07:09:09 | 显示全部楼层
表达式(/ANGLE1 pi)是连分数1.66666。。。。不能用绝对精度计算。对于实数运算,使用与fuzz相等的函数,而不是“=”。
 
  1. Command :(equal ANGLE2 30.0 0.000000000001)
  2. T
回复

使用道具 举报

17

主题

34

帖子

17

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 07:23:55 | 显示全部楼层
谢谢大家抽出时间。使用(等角2 30.0 0.000000000001)效果很好。谢谢你的ASMI。
回复

使用道具 举报

16

主题

50

帖子

34

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-6 07:38:28 | 显示全部楼层
我试着从一个动态块中取两个角度。然后按给定量改变角度,并将角度反馈回动态块。我意识到我的一些代码是多余的,可以清理,但我用它来解决问题。
 
我认为问题在于将角度反馈到块中。它可能必须采用不同的格式。
 
我从我的公司已经用于更改动态块的长度变量的一些现有代码中修改了此代码。(这部分有效!)
 
此外,我还意识到可能缺少一些组件。
 
  1. ;Adjust Bracing Block by Increments
  2. (defun C:ISATBRACEBUMP()
  3. (vl-load-com)
  4. (if (= (vl-registry-read "HKEY_CURRENT_USER\\Datum" "Datum-Elev") nil)
  5.         (progn
  6.                 (princ "\n== SET DATUM ELEVATION FIRST ==\n")
  7.         )
  8.         (progn
  9.                 (setq RX (ssget '((0 . "INSERT"))))       
  10.                 (setq LE_RX (sslength RX))
  11.                 (setq A 0)
  12.                 (repeat LE_RX
  13.                         (setq ANGMODAMT 5) ; this will be ajustable later.
  14.                         (setq ANGBRACES (SSNAME RX A))       
  15.                         (setq oBkRef (vlax-ename->vla-object ANGBRACES))
  16.                         (setq SEIS_ANG_R_1 (getdynpropvalue OBkRef "Angle"))
  17.                         (setq SEIS_ANG_D_1 (RTD SEIS_ANG_R_1))
  18.                         (setq SEIS_ANG_R_2 (getdynpropvalue OBkRef "Angle1"))
  19.                         (setq SEIS_ANG_D_2 (RTD SEIS_ANG_R_2))
  20.                         (setq SEIS_ANG_D_1_M (+ SEIS_ANG_D_1 ANGMODAMT))
  21.                         (setq SEIS_ANG_D_2_M (+ SEIS_ANG_D_2 ANGMODAMT))
  22.                         (setq SEIS_ANG_R_1_M (DTR SEIS_ANG_D_1_M))
  23.                         (setq SEIS_ANG_R_2_M (DTR SEIS_ANG_D_2_M))
  24.                         (princ SEIS_ANG_R_1_M)
  25.                         (princ SEIS_ANG_R_2_M)
  26.                         (chgdynprop oBkRef "Angle" getangl(SEIS_ANG_R_1_M))
  27.                         (chgdynprop oBkRef "Angle1" SEIS_ANG_R_2_M)
  28.                         (princ)
  29.                        
  30.                         (SETQ A (+ A 1))
  31.                 )
  32.                
  33.         )
  34. )
  35. )
  36. ;DUPLICATE TEXT - TO BE REMOVED WHEN INCORPORATED INTO MASTER TEXT
  37. (defun dtr (a)
  38. (* pi (/ a 180.0))
  39. )
  40. (DEFUN RTD (A)
  41. (/ (* A 180.0) PI)
  42. )
  43. (defun getdynprops (obj / v)
  44. (mapcar '(lambda (x)
  45.              (if (setq v (vlax-variant-value (vla-get-value x)))
  46.              (cons (vla-get-propertyname x) v)))
  47.   (vlax-invoke obj 'getdynamicblockproperties)
  48.   )
  49. );defun http://www.theswamp.org/index.php?topic=22663.0
  50. (defun getdynpropvalue (obj name / v)
  51. (cdr (assoc name
  52.      (mapcar '(lambda (x)
  53.                (if (setq v (vlax-variant-value (vla-get-value x)))
  54.                (cons (vla-get-propertyname x) v)))
  55.      (vlax-invoke obj 'getdynamicblockproperties))))  
  56. );defun
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 16:08 , Processed in 0.346163 second(s), 64 queries .

© 2020-2025 乐筑天下

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