hbgsw 发表于 2015-9-17 10:28:23

77077 发表于 2015-9-16 22:29 static/image/common/back.gif
GetAttributesSetAttributes 论坛里面的通用函数~~~

论坛的搜索太坑了,我找了都找不到,楼主给个函数库地址吧

USER2128 发表于 2015-9-17 15:46:18

为应用程序数据提供一个简单的修改界面

lucas_3333 发表于 2015-9-17 16:24:46

USER2128 发表于 2015-9-17 15:46 static/image/common/back.gif
为应用程序数据提供一个简单的修改界面

经这么一提醒,现在想起来了,这个函数确实方便,不要考虑editbox的对齐

USER2128 发表于 2015-9-17 17:13:13

lucas_3333 发表于 2015-9-17 16:24 static/image/common/back.gif
经这么一提醒,现在想起来了,这个函数确实方便,不要考虑editbox的对齐

为此,你还给我加了一个明经币,谢谢!

lucas_3333 发表于 2015-9-17 17:34:07

USER2128 发表于 2015-9-17 17:13 static/image/common/back.gif
为此,你还给我加了一个明经币,谢谢!

客气了,币不值钱,重要的是受教了,我要谢谢你才对!

米兰达薇薇2899 发表于 2015-9-29 11:38:33

命令:XX-TT ***属性块编辑****
选择属性块:; 错误: 参数类型错误: stringp <图元名: 7ffff6e3600>

qyming 发表于 2018-1-4 13:10:18

;|;;文本型点对表编辑
|
(editlst '(("标签1" . "值1")
   ("标签2" . "值2")
   ("标签3" . "值3")
   ("标签4" . "值4")
   ("标签5" . "值5")
   ("标签6" . "值6")
   ("标签7" . "值7")
   ("标签8" . "值8")
    )
)
|;
(defun editlst (lst / getdata fname F1 I lst1 dclid)
(defun getdata ()
    (setq lst1 NIL
    I    1
    )
    (foreach n lst
      (setq LST1 (cons (cons (car n) (get_tile (strcat "KEY" (itoa I))))
         LST1
   )
      I   (1+ I)
      )
    )
)
(setq fname (vl-filename-mktemp nil nil ".dcl"))
(setq F1 (open fname "w"))
(write-line
    "EditDCL:dialog{label=\"文本型点对表编辑 \";"
    F1
)
(write-line ":boxed_column{ " F1)
(write-line ":row{\n:column{" F1)
(setq I 1)
(foreach n lst
    (write-line
      (strcat ":edit_box{label=\""
      (car n)
      "\";value=\""
      (cdr n)
      "\";key=\"KEY"
      (itoa I)
      "\";}"
      )
      F1
    )
    (if(= (rem i 5) 0)
      (write-line "}\n:column{" F1)
    )
    (setq I (1+ I))
)
(if (/= (rem (1- i) 5) 0)
    (write-line "}" F1)
)
(write-line "}\n}" F1)
(write-line "ok_cancel;" F1)
(write-line "}" F1)
(close F1)
(setq dclid (load_dialog fname))
(vl-file-delete fname)
(new_dialog "EditDCL" dclid)
(action_tile "accept" "(getdata)(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(start_dialog)
(unload_dialog dclid)
(if lst1
    (setq lst (reverse lst1))
    (setq lst lst)
)
)
(defun c:xx-tt (/ ENT attlst)
(prompt "***属性块编辑****")
(while (setq ENT (CAR (entsel "\n 选择属性块:")))
    (setq attlst (editlst (GetAttributes ent)))
    (SetAttributes ent attlst)
    (princ "继续选择下一属性块")
)
(princ)
)

怎么对齐??????

qyming 发表于 2018-1-4 13:11:28

(defun getAttributes        (ent / lst)
(if (safearray-value (setq lst (vlax-variant-value (vla-getattributes (vlax-ename->vla-object ent)))))
    (mapcar '(lambda (x) (cons (vla-get-tagstring x) (vla-get-textstring x)))
          (vlax-safearray->list lst)
    )
)
)

(defun setAttributes        (ent lst / n atts)
(if (safearray-value (setq atts (vlax-variant-value (vla-getattributes (vlax-ename->vla-object ent)))))
    (progn (foreach n lst
             (mapcar '(lambda (x)
                        (if (= (strcase (car n)) (strcase (vla-get-tagstring x)))
                          (vla-put-textstring x (cdr n))
                        )
                      )
                     (vlax-safearray->list atts)
             )
           )
           (vla-update (vlax-ename->vla-object ent))
    )
)
)

77077 发表于 2021-2-20 21:37:51

调整了一下,用edit_box。

(defun editlst (lst / dclfile dclfo i keys key dclid out)
        (setq dclfile (vl-filename-mktemp nil nil ".dcl"))
        (setq dclfo (open dclfile "w"))
        (write-line "minbox:edit_box{fixed_width=true;fixed_height=true;vertical_margin=none;horizontal_margin=none;}" dclfo)
        (write-line "consListEdit:dialog{label=\"文本型点对表编辑 \";" dclfo)
        (write-line ":boxed_column{ " dclfo)
        (setq i 1 keys nil)
        (foreach n lst
                (setq key (strcat "key" (itoa i)) keys (cons key keys))
                (write-line ":row{" dclfo)
                (write-line(strcat ":minbox{width=15;is_enabled=false;value=\""(car n)"\";}")dclfo)
                (write-line(strcat ":minbox{width=20;value=\""(cdr n)"\";key=\"" key "\";}")dclfo)
                (write-line "}" dclfo);row
                (setq i (1+ i))
        )
        (setq keys(reverse keys))
        (write-line "}" dclfo);boxed_column
        (write-line "ok_cancel;" dclfo)
        (write-line "}" dclfo);dialog
        (close dclfo)
        (setq dclid (load_dialog dclfile))
        (vl-file-delete dclfile)
        (new_dialog "consListEdit" dclid)
        (mode_tile (car keys) 2)
        (action_tile "accept" "(setq out(mapcar '(lambda(v k)(cons (car v)(get_tile k))) lst keys))(done_dialog)")
        (action_tile "cancel" "(setq out nil)(done_dialog)")
        (start_dialog)
        (unload_dialog dclid)
        out
)

yoyoho 发表于 2021-2-21 01:09:59

77077 发表于 2021-2-20 21:37
调整了一下,用edit_box。

指令: (editlst '(("标签1" . "值1") ("标签2" . "值2") ("标签3" . "值3") ("标签4" . "值4")))
; 错误: 引数太多
页: 1 [2] 3
查看完整版本: 文本型点对表编辑