实用的LSP源代码,值得参考
liminnet
liminnet Lv.5
2007年08月09日 10:21:24
只看楼主

(defun c:cd (/) (setvar "cmdecho" 1) (setq a1 (getpoint "第一点")) (princ "") (setq a2 (getpoint "第二点")) (princ "") (setq ang (* (/ (angle a1 a2) pi) 180)) (setq dist (rtos (/ (distance a1 a2) 1000) 2 1))

(defun c:cd (/)
(setvar "cmdecho" 1)
(setq a1 (getpoint "第一点"))
(princ "
")
(setq a2 (getpoint "第二点"))
(princ "
")
(setq ang (* (/ (angle a1 a2) pi) 180))
(setq dist (rtos (/ (distance a1 a2) 1000) 2 1))
(setq dist1 (strcat "L=" dist "m"))
(setq a3 (getpoint "文字插入点"))
(command "text" a3 "350" ang dist1)
)


我想在这段代码里点功能就是提示我;管径Dn=多少,i=多少,然后用人工输入数据,出
来的效果是这样子:管径Dn=300 L=9.8m i=0.008,大哥大姐帮帮忙啊
免费打赏
sailorcwx
2007年08月09日 12:35:19
2楼
用getstring
回复
sailorcwx
2007年08月09日 12:40:38
3楼
(defun c:cd (/)
(setvar "cmdecho" 1)
(setq a1 (getpoint "\n第一点")
a2 (getpoint "\n第二点")
a3 (getstring "\n输入管径")
a4 (getstring "\n输入坡度")
ang (* (/ (angle a1 a2) pi) 180)
dist (rtos (/ (distance a1 a2) 1000) 2 1)
dist1 (strcat "Dn=" a3 " L=" dist "m" " i=" a4)
a5 (getpoint "文字插入点")
)
(command "text" a5 "350" ang dist1)
(princ)
)
回复
xjpgz
2007年08月10日 16:18:30
4楼
在学校学过LISP,当初感觉学的还可以,不过后来都忘记了。真可惜了,工作中用得也不多,看热闹来了
回复
liminnet
2007年08月13日 15:30:00
5楼
太感谢了,我都想哭出来了
回复
liminnet
2007年08月13日 15:32:14
6楼
流浪水手,你QQ多少啊,我加你可以吗,想向你学习
回复
liminnet
2007年08月13日 16:58:31
7楼
流浪水手,我真的很敬佩你的水平,我真是五体投地呀,你还帮我个忙,好吗,因为有时要画一下给排水图,但又不想用天正给排水,想用简单的方法来画就行啦,跟上面功能也差不多啦,有两方面的要求,一是我用line画出来的线想在中间加文字或字母(平行线的方向走),并且会根据文字或字母所占长度自动的断开所占位置的直线,操作的方法是只要鼠标点在直线的那个位置,文字或字母就会在该位置产生上面的效果(包括斜线也是一样),并提示字高为多少.第二个比较简单的了,就是在直线上面加文字,按提示输入文字,文字在线的上面和平行线的方向(可以像上面那道lisp一样定义平行线的点),希望这两方面的要求能在一个lisp中完成,流浪水手,我给你跪下来,我真的需要这种功能,如果要钱的话我也可以给你几百块的,拜托你啦
回复
gpszx1981
2007年08月13日 17:10:17
8楼
好像这个有点难~
把你预想的效果用图表示出来看看
回复
liminnet
2007年08月13日 17:33:04
9楼
图中的J只要是鼠标点中直接的哪个位置都会变成图中那种效果,而DN32只要是平行直接就可以了,位置也是由鼠标来定,能帮帮我吗,版主
回复
sailorcwx
2007年08月14日 00:16:19
10楼
注字和标管径的程序在网上都挺多的了
回复
sailorcwx
2007年08月14日 00:16:54
11楼
(defun c:zz (/ YH_ANGLE YH_ENT YH_HIGHT1 YH_LETTER1 YH_LINE YH_LLEN YH_OLDSNAP YH_PT YH_PT1 YH_PT2 YH_PT3)
(if (not YH_letter) (setq YH_letter "J"))
(if (not YH_hight) (setq YH_hight 350))
(initget "C H")
(while (setq YH_line (entsel "\n选择要注字的直线或右键退出[修改文字(C)/修改字高(H)]:"))
(cond
((= YH_line "C")
(setq YH_letter1 (getstring (strcat "\n输入新文字<" YH_letter ">:")))
(if (/= YH_letter1 "") (setq YH_letter YH_letter1))
)
((= YH_line "H")
(setq YH_hight1 (getreal (strcat "\n输入新字高<" (rtos YH_hight) ">:")))
(if (and YH_hight1 (> YH_hight1 0))
(setq YH_hight YH_hight1)
)
)
(T
(setq YH_oldsnap (getvar "osmode"))
(setvar "osmode" 0)
(setq YH_ent (car YH_line)
YH_pt (cadr YH_line)
YH_pt1 (osnap YH_pt "NEA")
YH_angle (+ (/ (* 180 (angle YH_pt YH_pt1)) pi) 90)
)
(if (and (> YH_angle 90) (<= YH_angle 270))
(setq YH_angle (+ YH_angle 180))
)
(setq YH_llen (/ (* YH_hight 1.2 (cdr (assoc 41 (tblsearch "STYLE" (getvar "textstyle")))) (STRLEN YH_letter)) 2)
YH_pt2 (polar YH_pt1 (/ (* pi YH_angle) 180) YH_llen)
YH_pt3 (polar YH_pt1 (/ (* pi (+ YH_angle 180)) 180) YH_llen)
)
(command "break" YH_ent YH_pt2 YH_pt3 "text" "J" "M" YH_pt1 YH_hight YH_angle YH_letter)
(setvar "osmode" YH_oldsnap)
)
)
(initget "C H")
)
(princ)
)
回复

相关推荐

APP内打开