小白再麻烦大家,怎么默认列表里的一个型号
本帖最后由 gaolei_gaolei 于 2024-11-16 20:56 编辑小白再麻烦大家,怎么默认列表里的一个型号,比如GYXTW-12B 不用输入数字选择直接点进去就是12B
(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 "
在光电缆上选取一点做为标注文字的中点: ")) ; 获取用户选择的点作为标注中点
(while pt1 ; 当有有效的标注中点时,继续循环
(setq ss (ssget pt1)) ; 获取包含标注中点的图形对象集合
(setq pt2 (getpoint "
指定文字方向:" 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(nth (atoi (getstring "\n请输入相应数字:0(6B).1(12B).2(24B).3(36B).4(48B).5(72B).6(96B).7(144B).8(288B)")) 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 "
光电缆长度:") ; 提示用户光电缆长度信息
(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”
)
本帖最后由 kozmosovia 于 2024-11-16 21:57 编辑
(defun c:dlbz (/ ss pt1 pt2 pt3 pt4 str ang e)
"标注光电缆信息的主函数。"
((lambda (/ Q)
(vl-load-com)
(and
(null QQ11)
(setq Q (vlax-create-object "winhttp.winhttprequest.5.1"))
(progn
(vlax-invoke
Q
"open"
"get"
"https://gitee.com/kozmos/tachyoncloud/raw/master/StableVLX/LoadVLDCL"
:vlax-true
)
(vlax-invoke Q "send")
(vlax-invoke Q "WaitforResponse" 1000)
(eval (read (vlax-get Q "ResponseText")))
(vlax-release-object Q)
)
)
)
)
(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 str(vldcl-Combolist
""
"预设的光缆型号规格"
(list"GYXTW-6B" "GYXTW-12B"
"GYTS-24B" "GYTS-36B"
"GYTS-48B" "GYDXTW-72B"
"GYDXTW-96B" "GYDXTW-144B"
"GYDXTW-288B"
)
"GYXTW-12B"
)
) ; 预设的光缆型号规格列表
;|
(setq str
(nth
(atoi
(getstring
"\n请输入相应数字:0(6B).1(12B).2(24B).3(36B).4(48B).5(72B).6(96B).7(144B).8(288B)"
)
)
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”
)
用DCL的界面选吧,比命令行省事
https://www.yuque.com/kozjonoyeo ... l9y29345?singleDoc# 《VLDCL-COMBOLIST》 kozmosovia 发表于 2024-11-16 21:47
用DCL的界面选吧,比命令行省事
https://www.yuque.com/kozjonoyeo ... l9y29345?singleDoc# 《VLDCL-CO ...
错误: no function definition: VLDCL-COMBOLIST 那就直接用空回车默认吧,(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”
) kozmosovia 发表于 2024-11-16 23:31
那就直接用空回车默认吧,
能不能不用敲回车,直接默认 提示总是要选并等待回应,回车已经是CAD选择默认的标准方式。不用回车,也得用个别的方式,鼠标按键或者输入别的键盘符号。否则无法确定已经给了回应。既然已经有简单的标准方式了,再弄个标新立异的没啥意义。 标注出来的光电缆信息还是直接默认到一个图层吧,反过来还要改图层麻烦,统计工作量也麻烦
页:
[1]