找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1319|回复: 6

[LISP程序]:如何用Lisp模拟尺寸标注?

[复制链接]
发表于 2002-9-10 12:39:11 | 显示全部楼层 |阅读模式

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

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

×
想用Lisp模拟尺寸标注,但是引用‘command’无法实现可选参数输入,请教高招!!
谢谢。……
               LCL     
欢迎到我的主页参观:http://luocl-cad.myrice.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-9-10 15:49:50 | 显示全部楼层
什么叫模拟,要输入什么?你说得太简陋了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-9-15 14:45:40 | 显示全部楼层
怎么会不能输入可选参数,我现在的尺寸标注命令全都是自己用lisp编写的,在其中调用
command函数,很好用啊。但是话说回来,肯定是有一些限制的,关键是你需要解决什么
问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-9-23 10:53:46 | 显示全部楼层
让我可以参考一下,谢谢!
我的邮箱:
lcl2094_cn@sina.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-9-23 21:51:13 | 显示全部楼层
最初由 gchen 发布
[B]好了,已经发给你了。 [/B]


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

使用道具 举报

 楼主| 发表于 2002-9-25 20:02:14 | 显示全部楼层

刚才看到了上面那位朋友发来的邮件,应管理员的要求,自作主张了!!


  1. [FONT=courier new]
  2. (defun c:d (/ p0 p1 p2 ang ent p10a p11a entst)
  3.   (setvar "cmdecho" 0)
  4.   (ai_undo_push)
  5.   (setvar "osmode" 47)
  6.   (mlay "dim" "3")
  7.   (initget 128)
  8.   (setq p0 (getpoint "\nSpecify first extension line origin or [Align/< Select line to align>] :")
  9.         entst (entlast)
  10.   )
  11.   (if (null p0)
  12.     (setq p0 "S")
  13.   )
  14.   (if (= (type p0) 'str)
  15.     (progn
  16.       (cond
  17.         ((= (strcase p0) "S")
  18.           (setq ent (nentselp "\nSelect line :"))
  19.           (while (null ent)
  20.             (setq ent (nentselp "\nSelect line :"))
  21.           )
  22.           (while (/= (cdr (assoc 0 (entget (car ent)))) "LINE")
  23.             (setq ent (nentselp "Object selected is not line .\nSelect line :"))
  24.           )
  25.           (if (= (nth 3 ent) nil)
  26.             (progn
  27.               (setq p1 (trans (cdr (assoc 10 (entget (car ent)))) 0 1)
  28.                     p2 (trans (cdr (assoc 11 (entget (car ent)))) 0 1)
  29.                     ang (* 180 (/ (angle p1 p2) pi))
  30.               )
  31.             )
  32.             (progn
  33.               (matrix_b ent)
  34.               (setq p1 (trans p10a 0 1)
  35.                     p2 (trans p11a 0 1)
  36.                     ang (* 180 (/ (angle p1 p2) pi))
  37.               )
  38.             )
  39.           )
  40.         )
  41.         ((= (strcase p0) "A")
  42.           (setq p1 (getpoint "\nSpecify first extension line origin :")
  43.                 p2 (getpoint p1 "\nSpecify second extension line origin :")
  44.                 ang (* 180 (/ (angle p1 p2) pi))
  45.           )
  46.         )
  47.       )
  48.       (princ "\nSpecify dimension line location :")
  49.       (command "_.dim1" "rotated" ang p1 p2 pause "")
  50.     )
  51.     (progn
  52.       (setq p1 (getpoint p0 "\nSpecify second extension line origin :"))
  53.       (princ "\nSpecify dimension line location :")
  54.       (command "dimlinear" p0 p1 pause)
  55.     )
  56.   )
  57.   (if (not (equal entst (entlast)))
  58.     (progn
  59.       (replace_ch "dim" 256 "bylayer" (entlast))
  60.       (entmod (subst
  61.                 (cons 51 0)
  62.                 (assoc 51 (entget (entlast)))
  63.                 (entget (entlast))
  64.               )
  65.       )
  66.       (setq dimtxt (cdr (assoc 42 (entget (entlast)))))
  67.       (princ (strcat "\nDimension text = " (rtos dimtxt)))
  68.     )
  69.   )
  70.   (ai_undo_pop)
  71.   (setvar "cmdecho" 1)
  72.   (princ)
  73. )
  74. [/FONT]

;|这是我用的尺寸标注的lisp程序,因为其中有我自己编写的函数,所以在你的机子上可能无法运行,
只是给你一个参考,(mlay "dim" 3)是图层创建函数,(matrix_b ent)是块转换阵列函数。
在这个程序中,将标注命令简化,但也有许多autocad命令中的选项没有加入,你可以加入它们,
靠你自己的聪明才智了。有什么问题再联系了
|;

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 05:02 , Processed in 0.312031 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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