乐筑天下

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

[编程交流] 如何通过s使用lisp

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:23:25 | 显示全部楼层 |阅读模式
嘿,各位,这是我第一次在这个论坛上发帖,我在任何地方都找不到任何答案,所以如果可以的话,请回答
 
我有一个lisp,我用它的钢筋排列和尺寸来绘制柱截面,现在我有一个有200个柱的项目,所以我想用一个脚本文件在整个脚本顺序中使用lisp来绘制多个柱我在脚本文件中写下了我需要的东西,但我在lisp例程的中间卡住了。它确实打开了lisp,但它没有完成工作。我发现它只是做了一些工作不是全部吗?????????我找不到任何人可以帮助的解决方案?
这是Lisp程序
  1. ;; a sample program for drawing reinforcing bars
  2. ;;
  3. (defun c:colsec()
  4. (setq g 0)
  5. (while (= g 0)
  6.        (princ "\n get origin point please")
  7.        (setq n1 (getpoint ))
  8.        (setq x0 (car  n1))
  9.        (setq y0 (cadr n1))
  10.        (setq x (getreal" \n width please  ?"))
  11.        (setq y (getreal" \n height please  ?"))
  12. (SETQ X1 ( + X0 X))
  13. (SETQ Y1 ( + Y0 Y))
  14. (SETQ N2 (LIST X1 Y0))
  15. (SETQ N3 (LIST X1 Y1))
  16. (SETQ N4 (LIST X0 Y1))
  17. (COMMAND "TEXT" C1 "" TT "")
  18. (SETVAR "OSMODE" 0)
  19. (COMMAND "PLINE" N1 "w" 0 0 N2 N3 N4 N1 "")
  20. (if (> x 0.0) (progn (setq dx (+ x0 0.025)) (setq fx( - x1 0.025)))
  21.               (progn (setq dx (- x0 0.025)) (setq fx( + x1 0.025)))
  22.         )
  23. (if (> y 0.0) (progn (setq dy (+ y0 0.025)) (setq fy( - y1 0.025)) )
  24.               (progn (setq dy (- y0 0.025)) (setq fy( + y1 0.025)) )
  25.         )
  26. (SETQ Nn0 (LIST dx dy))
  27. (SETQ Nn1 (LIST fx dy))
  28. (SETQ Nn2 (LIST fx fy))
  29. (SETQ Nn3 (LIST dx fy))
  30. (COMMAND "PLINE" Nn0 "w" 0 0 Nn1 Nn2 Nn3 Nn0 "")
  31. (princ "\n get horizontal dimension location please")
  32.        (setq nx (getpoint ))
  33. (command "dimlinear" n1 n2 nx)
  34. (princ "\n get vertical dimension location please")
  35.        (setq ny (getpoint ))
  36. (command "dimlinear" n1 n4 ny)
  37. (setq numx (getint"  \n  Number of bars top  & Bottom"))
  38. (setq numy (getint"  \n  Number of SIDE bars"))
  39. (setq nusx (getint"  \n  Number of verticaL BRANCHES"))
  40. (setq nusy (getint"  \n  Number of horizontAL BRANCHES"))
  41. (setq v 0)
  42. (while (= v 0)
  43. (setq sdx(+ dx 0.0175))
  44. (setq sfx(- fx 0.0175))
  45. (setq sdy(+ dy 0.0175))
  46. (setq sfy(- fy 0.0175))
  47. (SETQ Nb  (LIST sdx sdy))
  48. (SETQ Nb1 (LIST sfx sdy))
  49. (SETQ Nb2 (LIST sdx sfy))
  50. (SETQ Nb3 (LIST sfx sfy))
  51. (setq xx (- sfx sdx))
  52. (setq deltax (/ xx (- numx 1) ))
  53. (setq vv 0)
  54. (SETQ I 0)
  55. (while (= vv 0)
  56. (SETQ I ( + I 1))
  57. (IF (= I (- NUMX  1)) (SETQ VV 1))
  58. (setq dx (* deltax i))
  59. (SETQ XX (+ DX SDX))
  60. (SETQ Nxb  (LIST XX sdy))
  61. (SETQ Nxb1 (LIST XX sfy))
  62.        (command "donut" 0.0 0.035 nXb nXb1 "")
  63. )       
  64. (setq xx (- sfx sdx))
  65. (setq deltax (/ xx (- nusx 1) ))
  66. (setq vv 0)
  67. (SETQ I 0)
  68. (while (= vv 0)
  69. (SETQ I ( + I 1))
  70. (IF (= I (- NUsX  1)) (SETQ VV 1))
  71. (setq dx (* deltax i))
  72. (SETQ XX (+ DX SDX))
  73. (setq xx (+ xx 0.0175))
  74. (SETQ Nxb  (LIST XX sdy))
  75. (SETQ Nxb1 (LIST XX sfy))
  76.        (command "line" nXb nXb1 "")
  77. )       
  78.         (setq yy (- sfy sdy))
  79. (setq deltay (/ yy (- nusy 1) ))
  80. (setq vv 0)
  81. (SETQ I 0)
  82. (while (= vv 0)
  83. (SETQ I ( + I 1))
  84. (IF (= I (- NUsy  1)) (SETQ VV 1))
  85. (setq dy (* deltay i))
  86. (SETQ yy (+ Dy SDy))
  87. (setq yy (+ yy 0.0175))
  88. (SETQ Nxb  (LIST sdX yy))
  89. (SETQ Nxb1 (LIST sfX yy))
  90.        (command "line" nXb nXb1 "")
  91. )       
  92. (setq yy (- sfy sdy))
  93. (setq deltay (/ yy (+ numy 1) ))
  94. (setq vv 0)
  95. (SETQ I 0)
  96. (while (= vv 0)
  97. (SETQ I ( + I 1))
  98. (IF (= I  NUMy) (SETQ VV 1))
  99. (setq dy (* deltay i))
  100. (SETQ yy (+ Dy SDy))
  101. (SETQ Nxb  (LIST sdx yy))
  102. (SETQ Nxb1 (LIST sfX yy))
  103.        (command "donut" 0.0 0.035 nXb nXb1 "")
  104. )       
  105.        (command "donut" 0.0 0.035 nb nb1 nb2 nb3 "")
  106. (setq v 1)
  107. )
  108.    )
  109. )
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:42:22 | 显示全部楼层
由于Lisp函数需要用户输入,因此需要从调用它。scr文件无法工作。可以尝试在Lisp代码中使用while循环。当然,只需按enter键也可以重复(c:colsec)。如果200列相同,则应考虑创建块。但这是不言而喻的。
  1. (while (setq n1 (getpoint "\nOrigin point: "))
  2. ...
  3. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:49:31 | 显示全部楼层
如果你想要200,那么只需在开始时添加另一个while,你可以有while等
  1. ; something like ths
  2. (defun c:colsecm ()
  3. (if (not colsec)(load "colsec"))
  4. (while (/=  (Getstring "Do again press enter to exit pres any key") nil)
  5. (c:colsec)
  6. )
  7. )
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 17:57:19 | 显示全部楼层
请阅读代码发布指南,并在将来为您的代码使用代码标签。
 
[NOPARSE]
  1. Your Code Here
[/NOPARSE]=
  1. Your Code Here
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:06:56 | 显示全部楼层
t谢谢你回答每个人,但是循环的解决方案对我来说不适用每个ross部分都是不同的,需要不同的输入lisp提出了一些问题,通过回答它绘制了部分我试图做的是制作一个简单的脚本来回答这个问题,但当它问到在哪里放置维度时,我放置的坐标不起作用,它不理解通过脚本,尽管它对前面的问题有效?lisp中询问维度位置的这一部分如下所示
 
(princ“\n请获取水平尺寸位置”)
(setq nx(getpoint))
 
(命令“dimlinear”n1 n2 nx)
 
 
 
对于slw200,我会记住这一点,并感谢大家的快速回答
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 18:19:16 | 显示全部楼层
所以,澄清一下,没有。scr文件?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:24:35 | 显示全部楼层
我认为你错了,如果你画一个物体,只需要多做一点工作。是的,你可以给它定尺寸。这是一个记住dim两端点的例子。另一种方法是看你称之为defun的方式
 
左下x,y
酒吧
L X W等
 
这一切都是可以实现的,我认为你试图把它缩短到很多你不能遗漏的信息。
 
我会沿着excel路径,让它写下运行defun所需的200个答案,不要问任何问题,或者直接访问excel并读取所有正确的值。
 
我最近看了一些其他人的代码,它有大约20个预定义的变量,但结果是splat都完成了!
 
baheewgay(colsecm n1 X Y numx numy nux nusy)等等。所有这些都可以用预设值来代替,而暗部分只需要计算出点。
 
  1.        (princ "\n get origin point please")
  2.        (setq n1 (getpoint ))
  3.        (setq x (getreal" \n width please  ?"))
  4.        (setq y (getreal" \n height please  ?"))
  5. this should be automatic preset       
  6. (princ "\n get horizontal dimension location please")
  7.        (setq nx (getpoint ))
  8. this should be automatic preset       
  9. (princ "\n get vertical dimension location please")
  10. (setq numx (getint"  \n  Number of bars top  & Bottom"))
  11. (setq numy (getint"  \n  Number of SIDE bars"))
  12. (setq nusx (getint"  \n  Number of verticaL BRANCHES"))
  13. (setq nusy (getint"  \n  Number of horizontAL BRANCHES"))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:18 , Processed in 0.454636 second(s), 66 queries .

© 2020-2025 乐筑天下

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