那就直接用空回车默认吧,- (defun c:dlbz (/ ss pt1 pt2 pt3 pt4 str ang e)
- "标注光电缆信息的主函数。"
- (setvar "cmdecho" 0) ; 关闭命令行回显
- (setq ceco (getvar "cecolor")) ; 获取当前颜色设置
- (setq osmo (getvar "osmode")) ; 获取当前对象捕捉模式
- (setvar "osmode" 512) ; 设置对象捕捉模式为仅捕捉端点
- (setq pt1 (getpoint "\n在光电缆上选取一点做为标注文字的中点: "))
- ; 获取用户选择的点作为标注中点
- (while pt1 ; 当有有效的标注中点时,继续循环
- (setq ss (ssget pt1)) ; 获取包含标注中点的图形对象集合
- (setq pt2 (getpoint "\n指定文字方向:" pt1))
- ; 获取用户指定的文字方向点
- (while pt2 ; 当有有效的文字方向点时,继续循环
- (setvar "osmode" 0) ; 关闭对象捕捉模式
- (setvar "cecolor" "ByLayer") ; 设置颜色为随层
- (setq lst (list "GYXTW-6B" "GYXTW-12B"
- "GYTS-24B" "GYTS-36B"
- "GYTS-48B" "GYDXTW-72B"
- "GYDXTW-96B" "GYDXTW-144B"
- "GYDXTW-288B"
- )
- ) ; 预设的光缆型号规格列表
- (setq str (getstring
- "\n请输入相应数字:0(6B).1(12B).2(24B).3(36B).4(48B).5(72B).6(96B).7(144B).8(288B) <1>"
- )
- str (nth (if str
- (atoi str)
- 1
- )
- lst
- )
- )
- (setq ang (atoi (angtos (angle pt1 pt2)))) ; 计算标注文字的角度
- (command "_text" "j" "m" pt1 "2.5" ang str)
- ; 创建标注文字 修改线上型号字高2.5
- (setq e (+ (* (strlen str) 0.74) 1.0))
- ; 计算文字宽度 1.0为计算标注文字跟光缆距离
- (setq pt4 (polar pt1 (angle pt1 pt2) e)) ; 计算文字结束点的位置
- (setq pt3 (polar pt1 (angle pt2 pt1) e)) ; 计算光电缆断开点的位置
- (setvar "cecolor" ceco) ; 恢复原来的颜色设置
- (command "_break" ss pt4 pt3) ; 断开光电缆
- (setq pt4 (polar pt1 (+ 1.5708 (angle pt1 pt2)) 2))
- ; 计算光电缆长度标注点的位置
- (prompt "\n光电缆长度:") ; 提示用户光电缆长度信息
- (command "_dtext" "j" "c" pt4 2.5 ang)
- ; 创建光电缆长度标注 修改长度文字字高2.5
- (setq pt2 nil) ; 临时重置文字方向点为空,退出内层循环
- ) ; end while pt2
- (setq pt1 nil) ; 重置标注中点为空,退出外层循环
- ) ; end while pt1
- (setvar "osmode" osmo) ; 恢复原来的对象捕捉模式
- (princ) ; 返回nil,避免命令行显示“; 错误: no function definition: C:DLBZ”
- )
|