明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5519|回复: 8

一个自动编号的lisp~!大家一起研究一下~!

[复制链接]
发表于 2011-2-18 18:27:47 | 显示全部楼层 |阅读模式
这是一个自动递增编号的程序,如果想选择基点之后再顺序排号,应该怎么改代码啊~!请高手帮帮忙~!
(defun c:bh (/ oce1 qz n1 zn h1 sxh1 p1)

(setq oce1 (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n")

(setq qz (getstring "\n请输入前缀相同的部分: "))
(if (not (setq n1 (getint "\n请输入起始顺序号 <1>: ")))
(setq n1 1)
)
(if (not (setq zn (getint "\n请输入增加或减少的序数 <+1>: ")))
(setq zn 1)
)
(if (not (setq h1 (getreal "\n请指定文字高度 <2.5>: ")))
(setq h1 2.5)
)
(setq
sxh1 (strcat qz (itoa n1))
p1 (getpoint "\n请指定插入点: ")
)
(while (/= p1 nil)
(command "text" "m" p1 h1 0 sxh1)
(setq
n1 (+ n1 zn)
sxh1 (strcat qz (itoa n1))
p1 (getpoint "\n请指定下一插入点: ")
)
)
(setvar "cmdecho" oce1)
(princ)
)
发表于 2011-2-18 18:50:03 | 显示全部楼层
(defun c:bh (/ oce1 qz n1 zn h1 sxh1 p1)

(setq oce1 (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "-style" "BG_ST" "宋体" 0 0.8 0 "n" "n")

(setq p1 (getpoint "\n请指定插入点: "))

(setq qz (getstring "\n请输入前缀相同的部分: "))
(if (not (setq n1 (getint "\n请输入起始顺序号 <1>: ")))
(setq n1 1)
)
(if (not (setq zn (getint "\n请输入增加或减少的序数 <+1>: ")))
(setq zn 1)
)
(if (not (setq h1 (getreal "\n请指定文字高度 <2.5>: ")))
(setq h1 2.5)
)

(setq sxh1 (strcat qz (itoa n1)))
(while (/= p1 nil)
(command "text" "m" p1 h1 0 sxh1)
(setq
n1 (+ n1 zn)
sxh1 (strcat qz (itoa n1))
p1 (getpoint "\n请指定下一插入点: ")
)
)
(setvar "cmdecho" oce1)
(princ)
)
发表于 2011-2-18 18:53:43 | 显示全部楼层
我觉得还是原先的安排要顺,可能个人喜好不同吧。

我自己常用的lsp:
(defun c:textm()(textm 1.5))
(defun textm(pa1)(command"layer""s""0""t""jzdh""m""jzdh""c""m""jzdh""")
   (setq s (getstring "From:[1]"))
   (setq s(if(/= s"") s"1"))
   (while (setq p1 (getpoint (strcat "\n["s"]Point:")));(beep)
      (command "text" "s""zb"p1 pa1 "0"s)
      (setq s (rtos (1+ (atof s)) 2 0)))
   (princ))
 楼主| 发表于 2011-2-19 17:29:19 | 显示全部楼层
2楼的兄弟您辛苦了,不过你改完之后的效果和之前没太大改变啊~!基点还是在数字的中间,如果想把基点定在编号附近的地方,应该怎么改啊~!
 楼主| 发表于 2011-2-19 18:02:17 | 显示全部楼层

类似于这样的~!
发表于 2011-2-19 19:53:26 | 显示全部楼层
本帖最后由 mandala 于 2011-2-19 19:58 编辑

建议下次发帖的同志们在主贴中把自己的意图说清楚一点,如果文字表达能力有限,请上图。楼主你这样发帖会浪费大家的时间。


将主贴中lsp中的
(command "text" "m" p1 h1 0 sxh1)
改成
(command "text" "m" (polar p1 pi -30) h1 0 sxh1 )

然后你可以看看效果。

调整(polar p1 pi -30) 中的pi和-30两个参数可以调整文字的位置。具体调整到多少,看你自己需要


 楼主| 发表于 2011-2-20 00:13:25 | 显示全部楼层
小弟初来乍到,有些不上道儿,忘兄弟墨怪。呵呵,太谢谢你了~!
 楼主| 发表于 2011-2-20 00:16:34 | 显示全部楼层
如果不想把基点设成一个固定值,可以随意在屏幕上选定一个位置,应该怎么弄啊~!小弟给您磕头了~!
发表于 2011-2-20 20:26:49 | 显示全部楼层
本帖最后由 mandala 于 2011-2-20 20:30 编辑

回复 liujiayi6v 的帖子

不是太明白你的意思。

要偏移并不困难,但是你得说清楚为什么要偏移,和偏移的标准是什么。

主贴的lsp是一个单纯让用户指定标注数字的位置,然后按序标注数字的程序,其中的p1就是让你指定文字位置的。

我其实一直奇怪你为什么要偏移一个位置。如果你需要让标注的文字距离p1一定的距离和角度……那你直接把P1点到那个位置不就可以了么?

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

本版积分规则

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

GMT+8, 2025-6-12 11:26 , Processed in 0.182225 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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