bijoyvm 发表于 2022-7-5 17:04:21

用于place Station和Ele的Lisp

嗨,朋友们,
此Stan Elev lisp帮助您放置或检查纵断面的桩号和高程
步骤:-
1.加载stn elev lisp文件
2.使用命令“DAT”设置基准原点
a、 输入桩号基准
b、 输入高程基准
c、 拾取基准原点
 
3.使用命令“STN”放置桩号和高程文字
a、 输入垂直比例因子
b、 拾取桩号高程点
c、 拾取文本位置
 
4.使用命令“UW”将基准原点重置为世界
(在关闭文件之前,始终将UCS原点设置为“世界”)
规格:
新层=prf\U eltext
新标注样式=Dim Arrow Ann(此注释性标注样式将帮助您通过更改注释性比例值来更改文字大小)
应用于文本的背景掩码
 
*****************************************************
感谢我的cadtutor朋友们帮助我创建这个Lisp
 
*****************************************************
 
Stn标高。lsp

stevesfr 发表于 2022-7-5 17:13:26

这很有趣,也有点有用,我假设它的度量符号。我看看是否可以转换为英制,并将电台报告为X+xx。xx(英尺)
代码不错。。。
史蒂夫

bijoyvm 发表于 2022-7-5 17:21:06

谢谢steve。。。

bijoyvm 发表于 2022-7-5 17:34:17

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 标题:桩号和高程
;; 目的:获取Stn和pgl
;; 文字:Bijoy。v、 m
;; 日期:2010年10月
;; 系统要求:Autocad 2007
;; 命令:Dat、Stn和uw
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
;;----------------------------------------添加sep(+)的子函数------------------------------------
(defun注释(/text1 dec-sep)
 
(setq sep“+”)
 
(setq dec 3);;如果是3位数字,例如12.555到12.555,则抑制0
;; (if(=(substr text(strlen text)1)“0”)(setq dec 2));;如果2位,则抑制0,例如12.550到12.55
;; (if(=(substr text(1-(strlen text))2)“00”)(setq dec 1));;如果为1位,则抑制0,例如12.500到12.5
(if(=(substr text(-strlen text)2)3)“000”)(setq dec 0));;如果0位,则抑制0,例如12.000到12
 
(setq text1(atof text))
 
(如果(非(=(子字符串文本1 1)“-”)
(setq txt(strcat(rtos(fix(/text1 1000))2 0)sep(substr(rtos(+1000(rem text1 1000))2 dec)2));新代码
(setq txt文本)
) ;如果
) ;德芬
;;--------------------------------------创建样式的子功能------------------------------------
 
(defun Styles()
 
;创建文字样式
 
(if(not(tblsearch“style”“Gen Text”)(命令“-style”“Gen Text”“Arial.ttf”“A”“yes”“No”3.0“1”0“n”))
 
;创建标注样式
 
(如果(不是(tblsearch“DImstyle”“Dim Arrow Ann”))
(程序
(命令“dim”“style”“Gen Text”
“DIMADEC”0
“DIMALT”0
“DIMALTD”2
“DIMALTF”1.000
“DIMALTRND”0.0000
“DIMALTTD”2
“DIMALTTZ”0
“DIMALTU”2
“DIMALTZ”0
“DIMASZ”3
“DIMATFIT”3
“DIMAUNIT”0
“DIMAZIN”0
“DIMBLK”“”
“DIMBLK1”“”
“DIMBLK2”“”
“DIMLDRBLK”“”
“DIMCEN”0
“DIMCLRD”7
“DIMCLRE”7
“DIMCLRT”7
“DIMDEC”0
“DIMDLE”0.0000
“DIMDLI”1.0000
“DIMEXE”1.5000
“DIMEXO”1.5000
“DIMFRAC”0
“DIMGAP”1.0000
“DIMJUST”0
“DIMLFAC”1000.0000
“DIMLIM”0
“DIMLUNIT”2
“DIMLWD”0
“DIMLWE”0
“DIMRND”0.0000
“DIMSAH”0
“DIMSCALE”1.0000
“DIMSD1”0
“DIMSD2”0
“DIMSE1”0
“DIMSE2”0
“DIMSOXD”0
“DIMTAD”1
“DIMTDEC”0
“DIMTIH”0
“DIMTIX”0
“DIMTM”0.0000
“DIMTMOVE”0
“DIMTOFL”0
“DIMTOH”0
“DIMTSZ”0.0000
“DIMTVP”0.0000
“DIMTXSTY”“Gen Text”
“DIMTXT”3.000
“DIMZIN”0
“DIMFIT”5/e)
 
(命令“dimstyle”“An”“y”“Dim Arrow Ann”“S”“)
) ;程序
) ;如果
 
) ;德芬
;;-------------------------------------------* 错误*----------------------------------------------------
(defun trap1(errmsg)
(setq*错误*温度)
(setvar“clayer”粘土)
(提示“\nEnter Command UW to make UCS origin World©Bijoy.v.m AECOM Dubai”)
(普林斯)
) ;德芬
;;-------------------------------------------设置基准面--------------------------------------------------
(定义C:dat(/num op sta pga stb pgb)
 
(命令“cmdecho”0)
(命令“ucs”“w”)
 
;;; 输入站
 
(如果(非nf ns)(setq nf ns 0.000));默认数字
(setq NUM(GETRAL(strcat“\n输入站数据:”))
(if(not num)(setq num nf ns)(setq nf ns num))
;;; 输入pgl
(if(非sf ss)(setq sf ss 0.000));默认数字
(setq SUM(GETRAL(strcat“\n输入基准高程:”))
(if(not sum)(setq sum sf ss)(setq sf ss sum))
 
;;; 设置原点
(setq op(getpoint“\n点击基准原点:”)
 
(setq sta(car op))
(setq pga(cadr op))
 
(setq机顶盒(-sta num))
 
(setq pgb(-pga总和))
 
(命令“ucs”“m”(列表stb pgb 0))
(提示“\nOrigin moved to new loaction-Enter Command STN to place Text”)
 
 
(普林斯)
) ;德芬
 
;;-------------------------------------------放置文字--------------------------------------------------
 
(定义C:stn()
(if(非总和)(警报“\n*设置基准点*\n*命令-DAT*”(stn1))
) ;德芬
(定义stn1(/pnt1 p1x p1y stdy dy ptxt e TextObj vlText)
(命令“cmdecho”0)
(setq clay(getvar“clayer”))
(设定温度*错误*)
(setq*错误*trap1)
 
 
(if(not(tblsearch“layer”“prf\u eltext”)(命令“-layer”“N”“prf\u eltext”“C”“7”“prf\u eltext”“LT”“Continuous”“prf\u eltext”“LW”“0.15”“prf\u eltext”“)
(样式)
(命令“CLAYER”“prf\u eltext”)
(命令“-DIMSTYLE”“r”“Dim Arrow Ann”)
 
;;; 输入水平刻度
(if(非hs)(setq hs 1));默认数字
(setq hsm(getreal(strcat“\n输入垂直比例因子:”))
(if(非hsm)(setq hsm hs)(setq hs hsm))
 
(如果(不是总和)(提示“设置基准点”)
 
(setq ptlist nil);for while命令
(虽然
(程序
(setq PNT1(getpoint“\n点击Stn.Elev.point:”)
(setq P1X(car pnt1));x坐标
(setq P1Y(cadr pnt1));y坐标
 
(setq STDY(rtos(+(/(-p1y sum)hsm)sum)2 3));;垂直比例计算
 
(setq文本(rtos P1X 2 3))
 
(注释)
 
(setq PTXT(getpoint“\n点击文本位置:”))
 
(SETVAR’DIMTAD 0);居中对齐
(SETVAR'DIMLDRBLK“_ORIGIN”);;引线箭头
(命令“leader”PNT1 PTXT“”(strcat“Sta”)txt)(strcat“Elev”STDY)”“”)
(setq TextObj(entlast))
 
(vl load com)
(setq vlText(vlax ename->vla object TextObj))
(vlax put property vlText’backgroundfill:vlax true);背景遮罩
 
(SETVAR’DIMTAD 1);上述理由
(setvar“DIMLDRBLK.”);;引线箭头
(setq by(strcat(Chr 66)(Chr 73)(Chr 74)(Chr 79)(Chr 89)(Chr 183)(Chr 86)(Chr 183)(Chr 77)))
(setq ptlist(append ptlist(list pt)));在执行命令时停止
 
) ;程序
) ;虽然
(普林斯)
) ; 德芬
;;----------------------------------------返回UCS世界--------------------------------------------
(定义C:uw()
(命令“ucs”“w”)
(提示“nUCS Origin设置为World”)
(普林斯)
) ; 德芬
(提示“\nLisp命令:DAT(设置基准点)、STN(放置文本)、UW(将Ucs重置为世界)”)
;;----------------------------------------------结束----------------------------------------------

stevesfr 发表于 2022-7-5 17:38:41

bijoyvm。。。
使用post#4和post#1的结果有什么不同??
史蒂夫

bijoyvm 发表于 2022-7-5 17:47:30

添加了重置当前层变量,很容易为未注册的访问者复制粘贴。。。

irneb 发表于 2022-7-5 17:56:02

嗯,不那么容易。您可以在最后一行看到问题,其中有一个冒号:后跟大写D。这会给出。更不用说你所有的格式和缩进都消失了。
 
您需要将代码封装在代码标记中。只需编辑您的帖子,并将[代码]放在lisp之前,然后再将[[代码]放在lisp之后,但[和]之间没有空格(我添加了这些空格,以便它在这里正确显示)。
 
或者,如果编辑帖子,请单击“转到高级”按钮,然后选择lisp并单击“哈希”(#)按钮。这会为您放置代码标签。它也可以用于快速发布新消息,但不能用于快速编辑。

sunnyalong 发表于 2022-7-5 17:57:41

如果您能给我发送上述标题(最新的站点-高程lisp和遵循的说明),我将不胜感激。谢谢

sunnyalong 发表于 2022-7-5 18:08:44

请,有人能帮我用网格线lisp吗。
谢谢
页: [1]
查看完整版本: 用于place Station和Ele的Lisp