明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 124|回复: 5

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

[复制链接]
发表于 前天 20:41 | 显示全部楼层 |阅读模式
本帖最后由 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”
)


回复

使用道具 举报

发表于 前天 21:47 | 显示全部楼层
本帖最后由 kozmosovia 于 2024-11-16 21:57 编辑
  1. (defun c:dlbz (/ ss pt1 pt2 pt3 pt4 str ang e)
  2.   "标注光电缆信息的主函数。"
  3.   ((lambda (/ Q)
  4.      (vl-load-com)
  5.      (and
  6.        (null QQ11)
  7.        (setq Q (vlax-create-object "winhttp.winhttprequest.5.1"))
  8.        (progn
  9.    (vlax-invoke
  10.      Q
  11.      "open"
  12.      "get"
  13.      "https://gitee.com/kozmos/tachyoncloud/raw/master/StableVLX/LoadVLDCL"
  14.      :vlax-true
  15.     )
  16.    (vlax-invoke Q "send")
  17.    (vlax-invoke Q "WaitforResponse" 1000)
  18.    (eval (read (vlax-get Q "ResponseText")))
  19.    (vlax-release-object Q)
  20.        )
  21.      )
  22.    )
  23.   )
  24.   (setvar "cmdecho" 0)      ; 关闭命令行回显
  25.   (setq ceco (getvar "cecolor"))  ; 获取当前颜色设置
  26.   (setq osmo (getvar "osmode"))    ; 获取当前对象捕捉模式
  27.   (setvar "osmode" 512)      ; 设置对象捕捉模式为仅捕捉端点
  28.   (setq pt1 (getpoint "\n在光电缆上选取一点做为标注文字的中点: "))
  29.           ; 获取用户选择的点作为标注中点

  30.   (while pt1        ; 当有有效的标注中点时,继续循环
  31.     (setq ss (ssget pt1))    ; 获取包含标注中点的图形对象集合
  32.     (setq pt2 (getpoint "\n指定文字方向:" pt1))
  33.           ; 获取用户指定的文字方向点

  34.     (while pt2        ; 当有有效的文字方向点时,继续循环
  35.       (setvar "osmode" 0)    ; 关闭对象捕捉模式
  36.       (setvar "cecolor" "ByLayer")  ; 设置颜色为随层
  37.       (setq str  (vldcl-Combolist
  38.       ""
  39.       "预设的光缆型号规格"
  40.       (list  "GYXTW-6B"   "GYXTW-12B"
  41.       "GYTS-24B"   "GYTS-36B"
  42.       "GYTS-48B"   "GYDXTW-72B"
  43.       "GYDXTW-96B"   "GYDXTW-144B"
  44.       "GYDXTW-288B"
  45.            )
  46.       "GYXTW-12B"
  47.     )
  48.       )          ; 预设的光缆型号规格列表
  49.       ;|
  50.       (setq str
  51.        (nth
  52.          (atoi
  53.      (getstring
  54.        "\n请输入相应数字:0(6B).1(12B).2(24B).3(36B).4(48B).5(72B).6(96B).7(144B).8(288B)"
  55.      )
  56.          )
  57.          lst
  58.        )
  59.       )|;
  60.       (setq ang (atoi (angtos (angle pt1 pt2)))) ; 计算标注文字的角度
  61.       (command "_text" "j" "m" pt1 "2.5" ang str)
  62.           ; 创建标注文字  修改线上型号字高2.5
  63.       (setq e (+ (* (strlen str) 0.74) 1.0))
  64.           ; 计算文字宽度  1.0为计算标注文字跟光缆距离
  65.       (setq pt4 (polar pt1 (angle pt1 pt2) e)) ; 计算文字结束点的位置
  66.       (setq pt3 (polar pt1 (angle pt2 pt1) e)) ; 计算光电缆断开点的位置
  67.       (setvar "cecolor" ceco)    ; 恢复原来的颜色设置
  68.       (command "_break" ss pt4 pt3)  ; 断开光电缆
  69.       (setq pt4 (polar pt1 (+ 1.5708 (angle pt1 pt2)) 2))
  70.           ; 计算光电缆长度标注点的位置
  71.       (prompt "\n光电缆长度:")    ; 提示用户光电缆长度信息
  72.       (command "_dtext" "j" "c" pt4 2.5 ang)
  73.           ; 创建光电缆长度标注    修改长度文字字高2.5
  74.       (setq pt2 nil)      ; 临时重置文字方向点为空,退出内层循环
  75.     )          ; end while pt2

  76.     (setq pt1 nil)      ; 重置标注中点为空,退出外层循环
  77.   )          ; end while pt1

  78.   (setvar "osmode" osmo)    ; 恢复原来的对象捕捉模式
  79.   (princ)        ; 返回nil,避免命令行显示“; 错误: no function definition: C:DLBZ”
  80. )

用DCL的界面选吧,比命令行省事
https://www.yuque.com/kozjonoyeo ... l9y29345?singleDoc# 《VLDCL-COMBOLIST》

评分

参与人数 1明经币 +1 收起 理由
gaolei_gaolei + 1 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 22:15 | 显示全部楼层
kozmosovia 发表于 2024-11-16 21:47
用DCL的界面选吧,比命令行省事
https://www.yuque.com/kozjonoyeo ... l9y29345?singleDoc# 《VLDCL-CO ...

错误: no function definition: VLDCL-COMBOLIST
回复 支持 反对

使用道具 举报

发表于 前天 23:31 | 显示全部楼层
那就直接用空回车默认吧,
  1. (defun c:dlbz (/ ss pt1 pt2 pt3 pt4 str ang e)
  2.   "标注光电缆信息的主函数。"
  3.   (setvar "cmdecho" 0)                        ; 关闭命令行回显
  4.   (setq ceco (getvar "cecolor"))        ; 获取当前颜色设置
  5.   (setq osmo (getvar "osmode"))                ; 获取当前对象捕捉模式
  6.   (setvar "osmode" 512)                        ; 设置对象捕捉模式为仅捕捉端点
  7.   (setq pt1 (getpoint "\n在光电缆上选取一点做为标注文字的中点: "))
  8.                                         ; 获取用户选择的点作为标注中点

  9.   (while pt1                                ; 当有有效的标注中点时,继续循环
  10.     (setq ss (ssget pt1))                ; 获取包含标注中点的图形对象集合
  11.     (setq pt2 (getpoint "\n指定文字方向:" pt1))
  12.                                         ; 获取用户指定的文字方向点

  13.     (while pt2                                ; 当有有效的文字方向点时,继续循环
  14.       (setvar "osmode" 0)                ; 关闭对象捕捉模式
  15.       (setvar "cecolor" "ByLayer")        ; 设置颜色为随层
  16.       (setq lst        (list "GYXTW-6B"       "GYXTW-12B"
  17.                       "GYTS-24B"       "GYTS-36B"
  18.                       "GYTS-48B"       "GYDXTW-72B"
  19.                       "GYDXTW-96B"     "GYDXTW-144B"
  20.                       "GYDXTW-288B"
  21.                      )
  22.       )                                        ; 预设的光缆型号规格列表
  23.       (setq str        (getstring
  24.                   "\n请输入相应数字:0(6B).1(12B).2(24B).3(36B).4(48B).5(72B).6(96B).7(144B).8(288B) <1>"
  25.                 )
  26.             str        (nth (if str
  27.                        (atoi str)
  28.                        1
  29.                      )
  30.                      lst
  31.                 )
  32.       )
  33.       (setq ang (atoi (angtos (angle pt1 pt2)))) ; 计算标注文字的角度
  34.       (command "_text" "j" "m" pt1 "2.5" ang str)
  35.                                         ; 创建标注文字  修改线上型号字高2.5
  36.       (setq e (+ (* (strlen str) 0.74) 1.0))
  37.                                         ; 计算文字宽度  1.0为计算标注文字跟光缆距离
  38.       (setq pt4 (polar pt1 (angle pt1 pt2) e)) ; 计算文字结束点的位置
  39.       (setq pt3 (polar pt1 (angle pt2 pt1) e)) ; 计算光电缆断开点的位置
  40.       (setvar "cecolor" ceco)                ; 恢复原来的颜色设置
  41.       (command "_break" ss pt4 pt3)        ; 断开光电缆
  42.       (setq pt4 (polar pt1 (+ 1.5708 (angle pt1 pt2)) 2))
  43.                                         ; 计算光电缆长度标注点的位置
  44.       (prompt "\n光电缆长度:")                ; 提示用户光电缆长度信息
  45.       (command "_dtext" "j" "c" pt4 2.5 ang)
  46.                                         ; 创建光电缆长度标注    修改长度文字字高2.5
  47.       (setq pt2 nil)                        ; 临时重置文字方向点为空,退出内层循环
  48.     )                                        ; end while pt2

  49.     (setq pt1 nil)                        ; 重置标注中点为空,退出外层循环
  50.   )                                        ; end while pt1

  51.   (setvar "osmode" osmo)                ; 恢复原来的对象捕捉模式
  52.   (princ)                                ; 返回nil,避免命令行显示“; 错误: no function definition: C:DLBZ”
  53. )

评分

参与人数 1明经币 +1 收起 理由
gaolei_gaolei + 1 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 09:02 | 显示全部楼层
kozmosovia 发表于 2024-11-16 23:31
那就直接用空回车默认吧,

能不能不用敲回车,直接默认
回复 支持 反对

使用道具 举报

发表于 昨天 09:58 | 显示全部楼层
提示总是要选并等待回应,回车已经是CAD选择默认的标准方式。不用回车,也得用个别的方式,鼠标按键或者输入别的键盘符号。否则无法确定已经给了回应。既然已经有简单的标准方式了,再弄个标新立异的没啥意义。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-18 04:34 , Processed in 0.172760 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表