gaolei_gaolei 发表于 2024-11-16 20:41:50

小白再麻烦大家,怎么默认列表里的一个型号

本帖最后由 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:47:53

本帖最后由 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》

gaolei_gaolei 发表于 2024-11-16 22:15:06

kozmosovia 发表于 2024-11-16 21:47
用DCL的界面选吧,比命令行省事
https://www.yuque.com/kozjonoyeo ... l9y29345?singleDoc# 《VLDCL-CO ...

错误: no function definition: VLDCL-COMBOLIST

kozmosovia 发表于 2024-11-16 23:31:15

那就直接用空回车默认吧,(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”
)

gaolei_gaolei 发表于 2024-11-17 09:02:56

kozmosovia 发表于 2024-11-16 23:31
那就直接用空回车默认吧,

能不能不用敲回车,直接默认

kozmosovia 发表于 2024-11-17 09:58:20

提示总是要选并等待回应,回车已经是CAD选择默认的标准方式。不用回车,也得用个别的方式,鼠标按键或者输入别的键盘符号。否则无法确定已经给了回应。既然已经有简单的标准方式了,再弄个标新立异的没啥意义。

wyy81061 发表于 7 天前

标注出来的光电缆信息还是直接默认到一个图层吧,反过来还要改图层麻烦,统计工作量也麻烦
页: [1]
查看完整版本: 小白再麻烦大家,怎么默认列表里的一个型号