找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1577|回复: 10

[LISP程序]:贴个小箭头玩玩,能undo,能标上下,能画弧线

[复制链接]

已领礼包: 488个

财富等级: 日进斗金

发表于 2002-6-2 03:42:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
;能undo
;能标上下
;能画弧线
  1. (defun c:j (/ p40 ss p1 p2 p3 p4 p5 pa pb n li ss os ang ang1 ang2 ang3 p20 p30 swap1 rad plwid)
  2.   (setq p1 (getpoint "起点:")
  3.         p2 t
  4.         li '()
  5.         li (cons p1 li)
  6.         n 0
  7.   )
  8.   (setq os (getvar "osmode"))
  9.   (setvar "osmode" 0)(setq plwid(getvar "PLINEWID"))
  10.   (while p2
  11.     (initget "S-上 X-下 Arc Undo")
  12.     (setq p2 (getpoint p1 "\n下一点(S-上 X-下 Arc Undo):"))
  13.     (cond
  14.       ((= p2 "S-上")
  15.         (setq ss "上")
  16.       )
  17.       ((= p2 "X-下")
  18.         (setq ss "下")
  19.       )
  20.       ((= p2 "Arc")
  21.         (setq p3 (getpoint "第二点"))

  22.         (command "undo" "g")
  23.         (command "arc" p1 p3 pause)
  24.         (command "undo" "E")
  25.         (setq p2 (getvar "lastpoint"))
  26.         (if p2
  27.           (progn
  28.             (setq n (1+ n))
  29.             (if (= n 1)
  30.               (setq p4 (polar p1 (angle p2 p1) 200))
  31.             )
  32.             (setq li (cons p2 li)
  33.                   p1 p2
  34.             )
  35.           )
  36.         )
  37.       )

  38.       ((= p2 "Undo")
  39.         (if li
  40.           (progn
  41.             (setq n (- n 1))
  42.             (command "undo" "")
  43.             (setq li (cdr li))
  44.             (if li
  45.               (setq p1 (car li))
  46.             )
  47.           )
  48.         )
  49.       )
  50.       (t
  51.         (command "UNDO" "g")
  52.         (command "LINE" p1 p2 "")
  53.         (command "UNDO" "E")
  54.         (if p2
  55.           (progn
  56.             (setq n (1+ n))
  57.             (if (= n 1)
  58.               (setq p4 (polar p1 (angle p2 p1) 200))
  59.             )
  60.             (setq p1 p2
  61.                   li (cons p2 li)
  62.             )
  63.           )
  64.         )
  65.       )
  66.     )
  67.   )                                       ; while
  68.   (if (> n 0)
  69.     (progn
  70.       (setq swap1 (entget (entlast)))
  71.       (cond
  72.         ((= "LINE" (dxf 0 swap1))
  73.           (setq p1 (dxf 11 swap1)
  74.                 p2 (dxf 10 swap1)
  75.                 ang (angle p1 p2)
  76.           )
  77.           (setq pa (polar p1 (+ ang (/ pi 3)) 300)
  78.                 pb (polar p1 (- ang (/ pi 3)) 300)
  79.           )
  80.           (command "PLINE" pa "w" "60" "60" p1 pb "")
  81.         )
  82.         ((= "ARC" (dxf 0 swap1))
  83.           (setq p2 (car li))
  84.           (setq p1 (dxf 10 swap1)
  85.                 rad (dxf 40 swap1)
  86.                 ang1 (dxf 51 swap1)
  87.                 ang2 (dxf 50 swap1)
  88.                 ang (/ (+ ang1 ang2) 2)
  89.           )
  90.           (setq p20 (polar p1 ang1 rad)
  91.                 p3 (polar p1 ang rad)
  92.           )
  93.           (setq p30 (polar p1 ang2 rad)
  94.                 p40 (inters
  95.                       p1
  96.                       (polar p1 ang 100)
  97.                       p20
  98.                       p30
  99.                       nil
  100.                     )
  101.           )
  102.           (setq ang3 (+ (angle p2 p1) pi/2)
  103.                 ang (angle p2 p40)
  104.           )                               ; (if (<(rem(abs (+ (- (* 2 pi)ang2) ang1))(* pi 2))pi )
  105.           (if (< (cos (- ang3 ang)) 0)
  106.             (setq ang3 (+ ang3 pi))
  107.           )                               ;
  108.           (if (< (rem (abs (+ (- (* 2 pi) ang2) ang1)) (* pi 2)) pi)
  109.             (if (> (cos (- ang3 ang)) 0)
  110.               (setq ang3 (+ ang3 pi))
  111.             )
  112.           )
  113.           (setq ang3 (+ ang3 pi))
  114.           (setq pa (polar p2 (+ ang3 (/ pi 3)) 300)
  115.                 pb (polar p2 (- ang3 (/ pi 3)) 300)
  116.           )
  117.           (command "PLINE" pa "W" "60" "" p2 pb "")
  118.         )
  119.       )                                       ; cond
  120.       (if ss
  121.         (progn
  122.           (if (not (tblsearch "STYLE" "fs6"))
  123.             (command "style" "fs6" "simplex,hztxt" "300" "0.7" "" "" "" "")
  124.           )
  125.           (if (/= "fs6" (getvar "textstyle"))
  126.             (setvar "textstyle" "fs6")
  127.           )
  128.           (command "text" p4 "0" ss)
  129.         )
  130.       )
  131.       (setvar "osmode" os)
  132.       (princ "ok!")(setvar  "PLINEWID" plwid)
  133.       (princ)
  134.     )
  135.   )
  136. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-5-24 23:33:30 | 显示全部楼层
斑竹:对程序我是菜鸟。能做个动画看看效果吗?还有怎么用这个程序,执行什么命令?请解释的浅显点。省得再有我这样的苯鸟来烦你:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-25 00:15:04 | 显示全部楼层
aeo,推荐你用entmake画实体,更快更方便.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

 楼主| 发表于 2003-5-25 16:32:12 | 显示全部楼层
n年前写的啦,一直不想改,能用就行.(还是r12)

那是有一次,照老外的图,出图,时不时要一个箭头,老外的详图就是一个箭头带一个云朵.而且都是带弧的,搞的我很恼火.
后来加了个"上下",没那个软件会考虑到这的.但每个人都会为这痛苦.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-17 23:36:35 | 显示全部楼层
能用在2005吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-18 12:58:07 | 显示全部楼层
键头太难看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-30 10:54:49 | 显示全部楼层
怎么用的啊?请介绍,要不我们不知道,外行啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-3 22:24:24 | 显示全部楼层
我运行后显示:
Command: j
起点:
下一点(S-上 X-下 Arc Undo):
下一点(S-上 X-下 Arc Undo):s

下一点(S-上 X-下 Arc Undo):
Unknown command "J".  Press F1 for help.

错误: no function definition: DXF

运行环境cad2004,,,不知道是什么问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-5 11:18:24 | 显示全部楼层
不好用,没看到有什么箭头.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-7 13:10:37 | 显示全部楼层
楼上两位朋友,我用的是2005,一切都正常呀!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-26 09:32:39 | 显示全部楼层
r14的运行结果:
Command: j
起点:
下一点(S-上 X-下 Arc Undo):
下一点(S-上 X-下 Arc Undo):
Unknown command "J".  Press F1 for help.
error: null function
(DXF 0 SWAP1)

没有dxf这个函数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-18 23:19 , Processed in 0.435837 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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