明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 695|回复: 17

属性块内多属性编号编号问题

[复制链接]
发表于 2024-11-2 12:52:20 | 显示全部楼层 |阅读模式
请教大家一下,属性块内的多个属性怎么编号,市面有无插件已经实现能直接编号的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-11-2 21:21:14 | 显示全部楼层
tranque 发表于 2024-11-2 20:32
是什么插件里的

;-----------------------------------------------------------------------------------------------------------------------
;--------------------------------◆●【XZ批量修改块属性_v1.0】●◆----------------------------------------------------

(defun C:xZ ()
  (while
    (not
      (and
        (princ "\n——★★★ 请点选属性块! ★★★——\n")
        (setq SS (ssget ":S" '((0 . "INSERT") (66 . 1))))
        (GetPannelString (ssname SS 0))
      )
    )
  )
)




;;;函数名 : K:GetBlkAttLst *************************************************
;;;功 能 : 获取属性块属性列表 ************************************************
;;;参 数 : 属性块图元名 ******************************************************
;;;返回值 : ((TagString TextString Invisible) (...)) ***********************
(defun K:GetBlkAttLst (obj / AttTmp OriAttLst)
  (setq OriAttLst nil)
  (foreach XX (reverse (vlax-safeArray->list (vlax-variant-value (vla-getattributes obj))))
    (if (= (vla-get-Invisible XX) :vlax-false)  ;属性的不可见性
      (setq AttTmp    (list
                        (vla-get-TagString XX)
                        (vla-get-TextString XX)
                        (vla-get-Invisible XX)
                      )
            OriAttLst (cons AttTmp OriAttLst)
      )
    )
  )
  OriAttLst
)

;;;函数名 : K:GetDclVarLst ***************************************************
;;;功 能 : 获取控件的属性值 **************************************************
;;;参 数 : K:GetBlkAttLst 返回的列表 **************************************
;;;返回值 : (((editbox_key editbox_lable editbox_value)********************
;;; (toggle_key toggle_lable toggle_enabled)*********************
;;; (popuplist_key popuplist_lable popuplist_value))************
;;; (...)) *********************************************************
(defun K:GetDclVarLst (OriAttLst / XX DclVarLst DclVarTmp )
  (setq DclVarLst nil)
  (foreach XX (reverse OriAttLst)
      (setq DclVarTmp (list
                          (list
                              (strcat "editbox_" (car XX))
                              (car XX)
                              (cadr XX)
                          )
                          (list
                            (strcat "popuplist_addno_" (car XX))
                            "方式:"
                            "0" ;; 下拉列表默认值
                          )
                        )
      )
      (setq DclVarLst (cons DclVarTmp DclVarLst))
  )
  DclVarLst
)

;;;函数名 : GetEditboxString **************************************************
;;;功 能 : 获取Editbox控件的属性值 *******************************************
;;;参 数 : editbox控件的key label value **************************************
;;;返回值 : editbox 控件的字符串 **********************************************
;":row{:edit_box {key =\"stringtag\";label =\"属性1:\";value =\"3\";width=10;} }"
(defun GetEditboxString (editbox_key editbox_lable editbox_value)
  (strcat ":row{:edit_box{key =\"" editbox_key "\"\;" "label=\"" editbox_lable "\"\;"
          "value=\"" editbox_value "\"\;" "width=50\;" "} }"
  )
)

;;;函数名 : GetToggleString ***************************************************
;;;功 能 : 获取Toggle控件的属性值 ********************************************
;;;参 数 : Toggle控件的key label is_enabled **********************************
;;;返回值 : Toggle 控件的字符串 ***********************************************
;":toggle{ key=\"dir6\";label=\"编号递增\"; is_enabled =\"false\"; }"
;":toggle {key =\"dir6\";label =\"编号递增\";value =\"0\";is_enabled =\"false\";width=10;}"
(defun GetToggleString (toggle_key toggle_lable toggle_value toggle_is_enabled)
  (strcat ":toggle {key=\""  toggle_key"\"\;"
          "label=\"" toggle_lable "\"\;" "value=\"" toggle_value"\"\;"
          (if (= toggle_is_enabled :vlax-false) "is_enabled =\"false\";" "")
          "}"
  )
)

;;;函数名 : GetPopupListString ************************************************
;;;功 能 : 获取PopupList控件的属性值 *****************************************
;;;参 数 : PopupList控件的key label value ************************************
;;;返回值 : PopupList 控件的字符串 ********************************************
;":popup_list{label=\"编号类型\";list=\"0 无\\n1 常规数字\\n2 汉字数字\\n\";key= \"gear_list\";}"
(defun GetPopupListString (PopupList_key PopupList_lable PopupList_value)
  (strcat ":popup_list {key=\"" PopupList_key "\"\;" "label=\"" PopupList_lable
          "\"\;" "list=\"0 不做修改\\n1 仅改文本\\n2 数字编号\\n3 汉字编号\\n\";" "value=\"" PopupList_value
          "\";width=23;" "}"
  )
)

;;;函数名 : GetPannelString ***************************************************
;;;功 能 : 获取面板及所有控件的属性值 ****************************************
;;;参 数 : ename属性块图元名 *************************************************
;;;返回值 : 面板 控件的字符串 *************************************************
(defun GetPannelString (ename
                        / BlockObj BlockName BlkAttLst  DCLVarLst
                          edit_box_list toggle1_list popup_list
                          Dcl_id  OpenFile
                          Dcl_File i lin pannellist  DclState str1 str2 str3 str4
                          str5 str6 toggle_list
                       )
  (setq BlockObj  (vlax-ename->vla-object ename)
        BlockName (if (vlax-property-available-p BlockObj 'effectivename)
                    (vla-get-effectivename BlockObj) ;动态块名
                    (vla-get-name BlockObj) ;静态块名
                  )
        BlkAttLst (K:GetBlkAttLst BlockObj)
        DCLVarLst (K:GetDclVarLst BlkAttLst)
  )
  (setq edit_box_list nil
        toggle1_list  nil
        popup_list    nil
  )

  
  (foreach empcontrol DCLVarLst
    (setq eacheditbox (car empcontrol))
    (if (/= (vlax-ldata-get "editbox_dic_name" (car eacheditbox)) nil)
        (setq eacheditbox (list (car eacheditbox)
                                (cadr eacheditbox)
                                (vlax-ldata-get "editbox_dic_name" (car eacheditbox))
                          )
        )
    )
    (setq edit_box_list (cons (apply 'GetEditboxString eacheditbox) edit_box_list))
    (setq eachpopup (cadr empcontrol))
    (if (/= (vlax-ldata-get "PopupList_dic_name" (car eachpopup)) nil)
      (setq eachpopup (list (car eachpopup)
                            (cadr eachpopup)
                            (vlax-ldata-get "PopupList_dic_name" (car eachpopup))
                      )
      )
    )
    (setq popup_list (cons (apply 'GetPopupListString eachpopup) popup_list))
  )
  (setq edit_box_list (reverse edit_box_list))

  
  (setq toggle_list nil)
  (foreach XX popup_list
    (setq toggle_list
          (append
            (list ":row{" XX "}")
            toggle_list
          )
    )
  )

  (setq str1 (list
               " agtckz : dialog{"
               " label=\"批量修改块属性\";"
               ":spacer{height=0.5;} //空半行"
             )
        
        str2 (list " :row{"
                   " :boxed_column{"
                  (strcat " label=\"" "属性块名:" BlockName "\""  ";" )
             )
        str3 edit_box_list
        str4 (list ":spacer{height=0.2;} //空半行"
                   " }"
                   " :boxed_column{"
                   " label=\"修改\";"
             )
        str5 toggle_list

        str6 (list
                  ":spacer{height=0.2;} //空半行"
                  " }"
                  ":slider { key= \"test_slider\"; min_value=0; max_value=10;layout=vertical;}"
                   " }"
                   ":spacer{height=0.2;} //空半行"
                   ":text{is_enabled = false;label=\"编号说明:添加#001#; ##表示编号在字符串中的位置,数字001表示起始编号及有效数字位数\"; } "
                   ":spacer{height=0.2;} //空半行"
                   ":boxed_radio_row{label=\"编号排序方式\";" "key=\"sortmode\";"
                   ":spacer{height=0.5;} //空半行"
                   ":radio_button{label=\"先左右后上下\"; key=\"sort1\"; value=1;}"
                   ":radio_button{label=\"先上下后左右\"; key=\"sort2\";}" "}"
                   ":row {"
                   ":button{key=\"pickblocks\";label=\"选择需更改的属性块\";width=10;}"
                   "}"
                   ":spacer{height=0.5;} //空半行"
                   " cancel_button;"
                   "}"
             )
  )

  (setq pannellist (append str1 str2 str3 str4 str5 str6))

  (setq Dcl_File (vl-filename-mktemp nil nil ".dcl"))
  (setq OpenFile (open Dcl_File "w"))

  (foreach x pannellist
      (princ x OpenFile)
      (write-line "" OpenFile)
  ) ;end foreach
  (close OpenFile)

  
  (setq OpenFile (open Dcl_File "r"))
  (setq Dcl_id (load_dialog Dcl_File))
  (while
    (or
      (eq
        (substr
          (setq lin (vl-string-right-trim "\" OpenFile)"
                                          (vl-string-left-trim "(write-line \""
                                                               (read-line OpenFile)
                                          )
                    )
          )
          1
          2
        )
        "//"
      )
      (eq (substr lin 1 (vl-string-search " " lin)) "")
      (not (eq (substr lin (+ (vl-string-search " " lin) 1) 9) " : dialog"))
    )
  )
  (new_dialog (substr lin 1 (vl-string-search " " lin)) Dcl_id)


  
  (action_tile "pickblocks"
               "(setq attr (GetAttrFormPannel DCLVarLst))(SetContrlDataToDic DCLVarLst)(setq sortmode (GetSortMode))(done_dialog 333)"
  )
  ;(action_tile "accept" "(setq attr (GetAttrFormPannel DCLVarLst))(done_dialog 100)")
  (action_tile "cancel" "(done_dialog)")

  (setq DclState (start_dialog))
  (cond
    ((= DclState 333) (RangeBlocksMod ename attr sortmode))
  )
  (unload_dialog Dcl_id)
  (close OpenFile)
  (vl-file-delete Dcl_File)
  (princ)
)

(defun SetContrlDataToDic (DCLVarLst / editbox empattr popuplist)
  (foreach empdcl DCLVarLst
    (setq editbox (car empdcl))
    ;(setq toggle1 (cadr empdcl))
    (setq popuplist (cadr empdcl))
    (setq empattr (list (cadr editbox)
                        (get_tile (car editbox))
                        (get_tile (car popuplist))
                  )
    )
    (vlax-ldata-put "editbox_dic_name" (car editbox) (get_tile (car editbox)))
    (vlax-ldata-put "PopupList_dic_name"
                    (car popuplist)
                    (get_tile (car popuplist))
    )
  )
)

;;;函数名 : SortBlocks ********************************************************
;;;功 能 : 块集合排序 ********************************************************
;;;参 数 : 块集合 ************************************************************
;;;返回值 : 排序后的块集合 ****************************************************
(defun SortBlocks (enamelist sortmode)
  (HH:ssPts:Sort enamelist sortmode 1)
)

(defun GetSortMode ()
  (cond
    ((= (get_tile "sort1") "1") "yXZ")
    ((= (get_tile "sort2") "1") "XyZ")
  )
)

;;;函数名 : GetAttrFormPannel *************************************************
;;;功 能 : 修改全图范围属性块的属性值 ****************************************
;;;参 数 : ename属性块图元名 *************************************************
;;;返回值 : 选择全图范围的指定属性块,并修改相关属性 **************************
(defun GetAttrFormPannel (DCLVarLst / attrlist editbox empattr popuplist toggle1)
  (setq attrlist nil)
  (foreach empdcl DCLVarLst
    (setq editbox (car empdcl))
    ;(setq toggle1 (cadr empdcl))
    (setq popuplist (cadr empdcl))
    (setq empattr (list (cadr editbox)
                        (get_tile (car editbox))
                        (get_tile (car popuplist))
                  )
    )
    (setq attrlist (cons empattr attrlist))
  )
  attrlist
)

;;;函数名 : RangeBlocksMod ****************************************************
;;;功 能 : 修改选择范围内属性块的属性值 **************************************
;;;参 数 : ename属性块图元名 *************************************************
;;;返回值 : 选择全图范围的指定属性块,并修改相关属性 **************************
(defun RangeBlocksMod (ename attr sortmode / BlockObj BlockName enLst  SS i en obj)
  (setq BlockObj  (vlax-ename->vla-object ename)
        BlockName (if (vlax-property-available-p BlockObj 'effectivename)
                    (vla-get-effectivename BlockObj) ;动态块名
                    (vla-get-name BlockObj) ;静态块名
                  )
  )

  (if (setq SS (ssget '((0 . "INSERT") (66 . 1))))
        (progn
          (setq enLst nil)
          (repeat (setq i (sslength SS))
            (setq en  (ssname SS (setq i (1- i)))
                  obj (vlax-ename->vla-object en)
            )
            (if
              (= BlockName
                  (if (vlax-property-available-p obj 'effectivename)
                    (vla-get-effectivename obj) ;动态块名
                    (vla-get-name obj) ;静态块名
                  )
              )
              (setq enLst (cons en enLst))
            )
          )

          (setq enLst (SortBlocks enLst sortmode))
          (ModTitleBlock enLst attr)
        )
  )
)

;;;函数名 : ModTitleBlock *****************************************************
;;;功 能 : 修改属性块的属性值 ************************************************
;;;参 数 : lstSS属性块选择集 *************************************************
;;;返回值 : 无 ****************************************************************
(Defun ModTitleBlock (enamelist dclattr / empaddtype emptext en enames i
                      initi_attr_addno_type initi_attr_tag initial initiattmode
                      inititext j lstattrs tagstring vn
                     )
  (setq enames nil)
  (setq i 0)
  (repeat (length enamelist)
    (setq en     (nth i enamelist)
          i      (1+ i)
          enames (cons en enames)
    )
  )

  ;;属性值初始化,控件值
  (setq initi_attr_tag nil)
  (setq initi_attr_addno_type nil)
  (foreach perattr dclattr
    (setq initi_attr_tag (cons (cons (car perattr) (cadr perattr)) initi_attr_tag))
    (setq initi_attr_addno_type (cons (cons (car perattr) (caddr perattr))
                                      initi_attr_addno_type
                                )
    )
  )
  (setq j 0)
  (repeat (length enames)
    (setq en       (nth j enames)
          vn       (vlax-ename->vla-object en)
          lstAttrs (vlax-safeArray->list (vlax-variant-value (vla-getattributes vn)))
    )

    (foreach attr lstAttrs
      (setq TagString (vla-get-TagString attr))
      (if (/= (assoc TagString initi_attr_tag) nil)
        (progn
          (setq inititext (cdr (assoc TagString initi_attr_tag)))
          (setq empaddtype (cdr (assoc TagString initi_attr_addno_type)))
          (if (/= empaddtype "0")
            (vlax-put-property attr
                               'TextString
                               (StringAddNum inititext empaddtype j)
            )
          )
        )
      )
    )
    (setq j (1+ j))
  )
)

;;;函数名 : HH:ssPts:Sort 自贡黄明儒的通用排序 ********************************
;;最终版
;;*****************************************************************************通用点表排序
;|本软件为开源软件: 以下是开源申明:
-----------------------------------------------------------------------------------------------;
本页面的软件遵照GPL协议开放源代码,您可以自由传播和修改,在遵照下面的约束条件的前提下:
一. 只要你在本开源软件的每一副本上明显和恰当地出版版权声明,保持此许可证的声明和没有担保的声明完
整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的
原始的程序的源代码。你也可以为转让副本的实际行动收取一定费用,但必须事先得到的同意。
二. 你可以修改本开源软件的一个或几个副本或程序的任何部分,以此形成基于程序的作品。只要你同时满足
下面的所有条件,你就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。
1.你必须在修改的文件中附有明确的说明: 你修改了这一文件及具体的修改日期。
2.你必须使你发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许
第三方作为整体按许可证条款免费使用。
3.如果修改的程序在运行时以交互方式读取命令,你必须使它在开始进入常规的交互使用方式时打印或显示声
明: 包括适当的版权声明和没有担保的声明(或者你提供担保的声明);用户可以按此许可证条款重新发布
程序的说明;并告诉用户如何看到这一许可证的副本。(例外的情况: 如果原始程序以交互方式工作,它并
不打印这样的声明,你的基于程序的作品也就不用打印声明。
三. 只要你遵循一、二条款规定,您就可以自由使用并传播本源代码,但必须原封不动地保留原作者信息。|;
;;ssPts: 1 选择集,返回图元列表
;; 2 点表(1到n维 1维时key只能是x或X),返回点表
;; 3 图元列表,返回图元列表
;;Key: "xyzXYZ"任意组合,例如"yX",y在前表示y坐标优先,小y表示从小到大(注:二维点时,不能有z)
;;FUZZ: 允许误差
;;注:点表可以1到n维混合,Key长度不大于点的最小维数。
;;示例1 (HH:ssPts:Sort (ssget) "YxZ" 0.5);返回(<Entity name: 7ef7b3a8> <Entity name: 7ef7b3a0>)
;;示例2 (HH:ssPts:Sort (list '(2 3) '(3 5)) "Yx" 0.5);返回((3 5) (2 3))
;;示例3 (HH:ssPts:Sort '(<Entity name: 7ef79a28> <Entity name: 7ef79a10>) "YxZ" 0.5)
;;示例4 (HH:ssPts:Sort (list "DF" "ZX" "A" "DD" "A") "X" 1)=>("ZX" "DF" "DD" "A" "A")
;;示例5 (HH:ssPts:Sort (list 5 8 5 9) "X" 1)=>(9 8 5)
;;示例6 (<图元名: 7ff412849ea0> <图元名: 7ff412849d40> <图元名: 7ff412849be0> <图元名: 7ff412849a80>)
;;示例6函数为新修改,以图元名列表为参数,返回排序后的图元名列表。2023.11.13
;;本程序是在fsxm的扩展 自贡黄明儒 2014年3月22日
(defun HH:ssPts:Sort (ssPts KEY FUZZ / E EN FUN LST N)
  ;;1 点列表排序
  (defun sortpts (PTS FUN xyz FUZZ)
    (vl-sort pts
             '(lambda (a b)
                (if (not (equal (xyz a) (xyz b) fuzz))
                  (fun (xyz a) (xyz b))
                )
              )
    )
  )
  ;;2 排序
  (defun sortpts1 (PTS KEY FUZZ)
    (setq Key (vl-string->list Key))
    (foreach xyz (reverse Key)
      (cond
        ((< xyz 100)
         (setq fun >)
         (setq xyz (nth (- xyz 88) (list car cadr caddr)))
        )
        (T
         (setq fun <)
         (setq xyz (nth (- xyz 120) (list car cadr caddr)))
        )
      )
      (setq Pts (sortpts Pts fun xyz fuzz))
    )
  )
  ;;3 本程序主程序
  (cond
    ((= (type ssPts) 'PICKSET)
     (repeat (setq n (sslength ssPts))
       (if
         (and (setq e (ssname ssPts (setq n (1- n))))
              (setq en (entget e))
         )
         (setq lst (cons (append (cdr (assoc 10 en)) (list e)) lst))
       )
     )
     (mapcar 'last (sortpts1 lst KEY FUZZ))
    )
    ((and (= (type ssPts) 'LIST)
          (= (type (car ssPts)) 'ENAME)
     )
     (repeat (setq n (length ssPts))
       (if
         (and (setq e (nth (setq n (1- n)) ssPts))
              (setq en (entget e))
         )
         (setq lst (cons (append (cdr (assoc 10 en)) (list e)) lst))
       )
     )
     (mapcar 'last (sortpts1 lst KEY FUZZ))
    )
    ((Listp ssPts)
     (cond
       ((vl-consp (car ssPts)) (sortpts1 ssPts KEY FUZZ))
       ((= (type (car ssPts)) 'ENAME)
        (foreach e ssPts
          (if (setq en (entget e))
            (setq lst (cons (append (cdr (assoc 10 en)) (list e)) lst))
          )
        )
        (mapcar 'last (sortpts1 lst KEY FUZZ))
       )
       (T
        (cond
          ((equal key "X") (vl-sort ssPts '>))
          (T (vl-sort ssPts '<))
        )
       )
     )
    )
  )
)

;;;函数名 : XD::String:RegExpS ************************************************
;;;功 能 : 字符串以特性字符匹配输出表 ****************************************
;;;参 数 : pat-匹配规则 str- 字符串 key-分隔符 *******************************
;;;返回值 : 无 ****************************************************************
;(xd::string:regexps "\\D+|\\d+" "CD61JY78K--45-A99SE" "")
;(xd::string:regexps "[一二三四五六七八九十]+|[^一二三四五六七八九十]+" "CD61J一Y7三8K五六Ⅶ--Ⅺ45-A99SE" "")
(defun XD::String:RegExpS (pat str key / end keys matches x)
  (if (not *xxvbsexp)
    (setq *xxvbsexp (vlax-get-or-create-object "VBScript.RegExp"))
  )
  (vlax-put *xxvbsexp 'Pattern pat)
  (if (not key)
    (setq key "")
  )
  (setq key (strcase key))
  (setq keys '(("I" "IgnoreCase")
               ("G" "Global")
               ("M" "Multiline")
              )
  )
  (mapcar
    '(lambda (x)
       (if (wcmatch key (strcat "*" (car x) "*"))
         (vlax-put *xxvbsexp (read (cadr x)) 0)
         (vlax-put *xxvbsexp (read (cadr x)) -1)
       )
     )
    keys
  )
  (setq matches (vlax-invoke *xxvbsexp 'Execute str))
  (vlax-for x matches (setq end (cons (vla-get-value x) end)))
  (reverse end)
)

(defun lm-str-buwei (str a /)
  (setq len (strlen str))
  (while (< len a)
    (setq str (strcat "0" str))
    (setq len (strlen str))
  )
  str
)

;;;函数名 : StringAddNum ******************************************************
;;;功 能 : 字符串加n *********************************************************
;;;参 数 : str- 字符串 strtype-字符类型 n-增加值 *****************************
;;;返回值 : 增加后的字符串 ****************************************************
(defun StringAddNum (str strtype n / empstr firstchar lastchar outputstr strlist)
  (if (= strtype "1")
    (setq outputstr str)
    (if
      (or
        (= strtype "2")
        (= strtype "3")
      )
      (progn
        (setq strlist (xd::string:regexps "[^#]+" str ""))
        (cond
          ((= (length strlist) 1)
           (if
             (= (car strlist)
                (lm-str-buwei (itoa (atoi (car strlist))) (strlen (car strlist)))
             )
             (progn
               (setq strl (strlen (car strlist)))
               (setq empstr (+ (atoi (car strlist)) n))
               (cond
                 ((= strtype "2")
                  (setq outputstr (lm-str-buwei (itoa empstr) strl))
                 )
                 ((= strtype "3")
                  (setq outputstr (NumTransHanzi empstr))
                 )
               )
             )
             (setq outputstr (car strlist))
           )
          )
          ((= (length strlist) 2)
           (if (= (substr str 1 1) "#")
             (setq outputstr (strcat
                               (StringAddNum (car strlist) strtype n)
                               (StringAddNum (cadr strlist) "1" n)
                             )
             )
             (if (= (substr str (strlen str) 1) "#")
               (setq outputstr (strcat
                                 (StringAddNum (car strlist) "1" n)
                                 (StringAddNum (cadr strlist) strtype n)
                               )
               )
             )
           )
          )
          ((= (length strlist) 3)
           (setq outputstr (strcat
                             (StringAddNum (car strlist) "1" n)
                             (StringAddNum (cadr strlist) strtype n)
                             (StringAddNum (caddr strlist) "1" n)
                           )
           )
          )
        )
      )
    )
  )
  outputstr
)

;;;函数名 : NumTransHanzi *****************************************************
;;;功 能 : 数字序号转为汉字 **************************************************
;;;参 数 : num 数字序号 ******************************************************
;;;返回值 : 汉字序号字符串 ****************************************************
(defun NumTransHanzi (num / digit_dic hundreds outputstr remain)
  (setq digit_dic (list (cons 0 "零")
                        (cons 1 "一")
                        (cons 2 "二")
                        (cons 3 "三")
                        (cons 4 "四")
                        (cons 5 "五")
                        (cons 6 "六")
                        (cons 7 "七")
                        (cons 8 "八")
                        (cons 9 "九")
                        (cons 10 "十")
                  )
  )
  (cond
    ((>= num 100)
     (setq hundreds (/ num 100))
     (setq remain (rem num 100))
     (if (= remain 0)
       (setq outputstr (strcat (cdr (assoc hundreds digit_dic)) "百"))
       (if
         (and (> remain 0)
              (< remain 10)
         )
         (setq outputstr (strcat (cdr (assoc hundreds digit_dic))
                                 "百"
                                 "零"
                                 (NumTransHanzi remain)
                         )
         )
         (setq outputstr (strcat (cdr (assoc hundreds digit_dic))
                                 "百"
                                 (NumTransHanzi remain)
                         )
         )
       )
     )
    )
    ((and (>= num 10) (< num 100))
     (setq hundreds (/ num 10))
     (setq remain (rem num 10))
     (if (= remain 0)
       (setq outputstr (strcat (cdr (assoc hundreds digit_dic)) "十"))
       (setq outputstr (strcat (cdr (assoc hundreds digit_dic))
                               "十"
                               (NumTransHanzi remain)
                       )
       )
     )
    )
    ((and (>= num 0) (< num 10))
     (setq outputstr (cdr (assoc num digit_dic)))
    )
    (t nil)
  )
  outputstr
)


(princ)
;-----------------------------------------------------------------------------------------------------------------------

回复 支持 1 反对 0

使用道具 举报

发表于 2024-11-5 13:54:55 | 显示全部楼层
清水白粥 发表于 2024-11-2 21:21
;------------------------------------------------------------------------------------------------- ...

大佬,选择顺序能否增加一些选项,比如按选择顺序编号,从下往上编号这种
发表于 2024-11-2 16:42:55 | 显示全部楼层
那么多属性干什么...改中间都要改傻了
发表于 2024-11-2 16:44:21 | 显示全部楼层
有啊,可以按想法编号
发表于 2024-11-2 19:34:36 | 显示全部楼层
兄弟,看你这个也没啥规律呀,有规律自然好实现!
 楼主| 发表于 2024-11-2 20:24:43 | 显示全部楼层
你有种再说一遍 发表于 2024-11-2 16:42
那么多属性干什么...改中间都要改傻了

电气专业的,都是连贯的顺序下去
 楼主| 发表于 2024-11-2 20:32:20 | 显示全部楼层
清水白粥 发表于 2024-11-2 16:44
有啊,可以按想法编号

是什么插件里的
 楼主| 发表于 2024-11-2 20:34:47 | 显示全部楼层
菜小马哥 发表于 2024-11-2 19:34
兄弟,看你这个也没啥规律呀,有规律自然好实现!

规律就是递增
图片上的被我改了两个,反而看不出规律了
 楼主| 发表于 2024-11-2 23:15:27 | 显示全部楼层
清水白粥 发表于 2024-11-2 21:21
;------------------------------------------------------------------------------------------------- ...

需要这个,感谢清水哥,感谢黄哥
发表于 2024-11-4 15:28:43 | 显示全部楼层
源泉插件这种有yq_increase_att命令
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 08:46 , Processed in 0.196177 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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