明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2312|回复: 10

[求助]编一个类似于revcloud--“云彩“的lisp

[复制链接]
发表于 2008-2-28 22:42 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-2-28 22:43:11 编辑

编一个类似于revcloud--“云彩“的lisp ,求各位斑主帮帮忙,,,或给出关键代码也行!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-2-29 09:26 | 显示全部楼层
不明白如何类似?ACAD有源码呀!
  1. (Defun C:REVCLOUD (/
  2. ARC_DIST   ;;radius of included arc
  3. INC_ANGLE  ;;included angle in degrees
  4. LAST_PT    ;;the last point just entered/shown
  5. START_PT   ;;where the cloud began
  6. NEXT_PT    ;;where we are going next
  7. TMP        ;;tempory holder for radius of bulge
  8. )
  9. (init_bonus_error
  10. (List
  11. (List "cmdecho" 0
  12. "blipmode" 0
  13. "osmode" 0
  14. )
  15. T     ;flag. True means use undo for error clean up.  
  16. ) ;list
  17. ) ;init_bonus_error
  18. (Setq INC_ANGLE 110)
  19. (if (and
  20. (/= ""  (getcfg "AppData/AC_Bonus/Revcld_Bulge"))
  21. (/= nil (getcfg "AppData/AC_Bonus/Revcld_Bulge"))
  22. )
  23. (setq ARC_DIST (atof (getcfg "AppData/AC_Bonus/Revcld_Bulge")))
  24. (if (= (getvar "DIMSCALE") 0)
  25. (setq ARC_DIST 0.375)
  26. (setq ARC_DIST (* 0.375 (getvar "DIMSCALE")))
  27. )
  28. );end if
  29. (prompt (strcat "\n弧长设置在 " (rtos ARC_DIST 2 3)))
  30. (initget "Arc")
  31. (setq LAST_PT (GetPoint "\n弧长(Arc length)/<选择云的起点(Pick cloud starting point)>: "))
  32. (if (= LAST_PT "Arc")
  33. (progn
  34. (initget 6)
  35. (setq TMP (getdist (strcat "\n弧长(Arc length) <" (rtos ARC_DIST 2 3) ">: ")))
  36. (if TMP
  37. (Progn
  38. (setq ARC_DIST TMP)
  39. (setcfg "AppData/AC_Bonus/Revcld_Bulge" (rtos ARC_DIST))
  40. )
  41. )
  42. (setq LAST_PT (getpoint "\n选择云的起点(Pick cloud start point): "))
  43. ) ;;end STR "RADIUS" test
  44. )
  45. (if LAST_PT (progn  ;;start up the cloud generator...
  46. (setq START_PT LAST_PT
  47. SAVED_EN (entlast))
  48. (Prompt "\n 沿云的路径做出阴影(Guide crosshairs along cloud path)...")
  49. (Command
  50. "_.pline"     ;draw cloud as a polyline on current layer
  51. LAST_PT
  52. "_a"         ;specify arc option
  53. "_a"         ;specify angle option
  54. INC_ANGLE    ;included angle
  55. )
  56. )) ;end IF LAST_PT
  57. (While LAST_PT  ;;as long as we have a last point value,
  58. (Setq NEXT_PT (GrRead 1)     ;;real time read
  59. READTYP (car NEXT_PT)
  60. )
  61. (if (or (=  5 READTYP) (= READTYP 3)) ;;read a position or a pick?
  62. (progn
  63. (setq NEXT_PT (cadr NEXT_PT))
  64. (If (or (> (Distance LAST_PT NEXT_PT) ARC_DIST) (= READTYP 3))
  65. (Progn
  66. (Command NEXT_PT "_a" INC_ANGLE)
  67. (Setq LAST_PT NEXT_PT)
  68. )
  69. )
  70. (If (>
  71. (Distance LAST_PT NEXT_PT)
  72. (Distance START_PT NEXT_PT)
  73. )
  74. (Progn
  75. (Command START_PT "_cl")
  76. (Setq LAST_PT Nil)
  77. (prompt "\n云完成(Cloud finished).")
  78. )
  79. )
  80. )
  81. (prompt "\n移动鼠标画云(Move the pointer to draw the cloud)")
  82. );End if
  83. );End while
  84. (restore_old_error)
  85. (Princ)
  86. ) ;end cloud.lsp
  87. (Defun c:RCHELP (/)
  88. (prompt "   这个修正的画云程序沿用户指定的路径画凸复合线.\n")
  89. (prompt "   闭合这个云, \n")
  90. (prompt "   简单的回到起点\n")
  91. (prompt "   云的弧长能够在开始指定,用键盘输入 \n")
  92. (prompt "   指定 A 为 圆弧, 输入一个长度或选择两点.\n")
  93. (textscr)
  94. (princ)
  95. )
  96. (Prompt "   REVCLOUD 调入. 键入 REVCLOUD 开始画云,\n")
  97. (prompt "   闭合云, 回到起点t. 更多的帮助 - RCHELP")
  98. (Princ)
  99. (Princ)
 楼主| 发表于 2008-2-29 13:26 | 显示全部楼层
我想自己编一个简单的圈云程序..不想调用EXPRESS文件下的 acetutil.arx/acetutil.fas,,,,,,,,恳请版主帮忙!我找到[color="#ff0000"]meflying版主编的几行关键代码,可是我想要画出来的是圆弧,不是一段段的线,恳请ZZXXQQ帮一下忙!
  1. (defun c:test( / pt)
  2. (setq pt (getpoint "\nEnter the first point:"))
  3. (if pt
  4. (progn
  5. (command "_.pline" pt)
  6. (while (= (car (setq pt (grread 5))) 5)
  7. (command (cadr pt))
  8. )
  9. (command "")
  10. )
  11. )
  12. (princ)
  13. )
发表于 2008-2-29 18:51 | 显示全部楼层
2楼的代码不行吗?
 楼主| 发表于 2008-2-29 20:07 | 显示全部楼层

我真正的目的是:

自己正在编的一个LISP中,有一项是要实现画"云彩"的功能,但不想调用express的 acetutil函数,只想简单的画"云彩"功能.

谢谢!

发表于 2008-2-29 20:15 | 显示全部楼层
可二楼代码没调用ET的acetutil函数呀!
 楼主| 发表于 2008-2-29 21:35 | 显示全部楼层

运行之后,出现这样的错误提示:

no function definition: INIT_BONUS_ERROR

 楼主| 发表于 2008-2-29 21:51 | 显示全部楼层
本帖最后由 作者 于 2008-2-29 21:56:39 编辑

能否加一个功能:"能够画出"calligraphy"的效果"!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2008-3-1 09:25 | 显示全部楼层
试试:
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0

 楼主| 发表于 2008-3-1 10:57 | 显示全部楼层
本帖最后由 作者 于 2008-3-1 10:59:10 编辑

谢谢!"calligraphy"的效果我自己昨晚也已经解决了.不过您提供的这个LISP,总是不能正解退出循环的?!!还有感觉就是程序中有些不必要的代码存在!斑主能否也一并解决一下.

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-2 20:30 , Processed in 0.283584 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表