明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 77077

[函数] 文本型点对表编辑

[复制链接]
发表于 2015-9-17 10:28 | 显示全部楼层
77077 发表于 2015-9-16 22:29
GetAttributes  SetAttributes 论坛里面的通用函数~~~

论坛的搜索太坑了,我找了都找不到,楼主给个函数库地址吧
发表于 2015-9-17 15:46 | 显示全部楼层
发表于 2015-9-17 16:24 | 显示全部楼层
USER2128 发表于 2015-9-17 15:46
为应用程序数据提供一个简单的修改界面

经这么一提醒,现在想起来了,这个函数确实方便,不要考虑editbox的对齐
发表于 2015-9-17 17:13 | 显示全部楼层
lucas_3333 发表于 2015-9-17 16:24
经这么一提醒,现在想起来了,这个函数确实方便,不要考虑editbox的对齐

为此,你还给我加了一个明经币,谢谢!
发表于 2015-9-17 17:34 | 显示全部楼层
USER2128 发表于 2015-9-17 17:13
为此,你还给我加了一个明经币,谢谢!

客气了,币不值钱,重要的是受教了,我要谢谢你才对!
发表于 2015-9-29 11:38 | 显示全部楼层
命令:  XX-TT ***属性块编辑****
选择属性块:; 错误: 参数类型错误: stringp <图元名: 7ffff6e3600>
发表于 2018-1-4 13:10 | 显示全部楼层
  1. ;|;;文本型点对表编辑
  2. |
  3. (editlst '(("标签1" . "值1")
  4.      ("标签2" . "值2")
  5.      ("标签3" . "值3")
  6.      ("标签4" . "值4")
  7.      ("标签5" . "值5")
  8.      ("标签6" . "值6")
  9.      ("标签7" . "值7")
  10.      ("标签8" . "值8")
  11.     )
  12. )
  13. |;
  14. (defun editlst (lst / getdata fname F1 I lst1 dclid)
  15.   (defun getdata ()
  16.     (setq lst1 NIL
  17.     I    1
  18.     )
  19.     (foreach n lst
  20.       (setq LST1 (cons (cons (car n) (get_tile (strcat "KEY" (itoa I))))
  21.            LST1
  22.      )
  23.       I   (1+ I)
  24.       )
  25.     )
  26.   )
  27.   (setq fname (vl-filename-mktemp nil nil ".dcl"))
  28.   (setq F1 (open fname "w"))
  29.   (write-line
  30.     "EditDCL:dialog{label=\"文本型点对表编辑 \";"
  31.     F1
  32.   )
  33.   (write-line ":boxed_column{ " F1)
  34.   (write-line ":row{\n:column{" F1)
  35.   (setq I 1)
  36.   (foreach n lst
  37.     (write-line
  38.       (strcat ":edit_box{label=\""
  39.         (car n)
  40.         "\";value=\""
  41.         (cdr n)
  42.         "\";key=\"KEY"
  43.         (itoa I)
  44.         "\";}"
  45.       )
  46.       F1
  47.     )
  48.     (if  (= (rem i 5) 0)
  49.       (write-line "}\n:column{" F1)
  50.     )
  51.     (setq I (1+ I))
  52.   )
  53.   (if (/= (rem (1- i) 5) 0)
  54.     (write-line "}" F1)
  55.   )
  56.   (write-line "}\n}" F1)
  57.   (write-line "ok_cancel;" F1)
  58.   (write-line "}" F1)
  59.   (close F1)
  60.   (setq dclid (load_dialog fname))
  61.   (vl-file-delete fname)
  62.   (new_dialog "EditDCL" dclid)
  63.   (action_tile "accept" "(getdata)(done_dialog 1)")
  64.   (action_tile "cancel" "(done_dialog 0)")
  65.   (start_dialog)
  66.   (unload_dialog dclid)
  67.   (if lst1
  68.     (setq lst (reverse lst1))
  69.     (setq lst lst)
  70.   )
  71. )
  72. (defun c:xx-tt (/ ENT attlst)
  73.   (prompt "***属性块编辑****")
  74.   (while (setq ENT (CAR (entsel "\n 选择属性块:")))
  75.     (setq attlst (editlst (GetAttributes ent)))
  76.     (SetAttributes ent attlst)
  77.     (princ "继续选择下一属性块")
  78.   )
  79.   (princ)
  80. )


怎么对齐??????

本帖子中包含更多资源

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

x
发表于 2018-1-4 13:11 | 显示全部楼层
  1. (defun getAttributes        (ent / lst)
  2.   (if (safearray-value (setq lst (vlax-variant-value (vla-getattributes (vlax-ename->vla-object ent)))))
  3.     (mapcar '(lambda (x) (cons (vla-get-tagstring x) (vla-get-textstring x)))
  4.             (vlax-safearray->list lst)
  5.     )
  6.   )
  7. )

  8. (defun setAttributes        (ent lst / n atts)
  9.   (if (safearray-value (setq atts (vlax-variant-value (vla-getattributes (vlax-ename->vla-object ent)))))
  10.     (progn (foreach n lst
  11.              (mapcar '(lambda (x)
  12.                         (if (= (strcase (car n)) (strcase (vla-get-tagstring x)))
  13.                           (vla-put-textstring x (cdr n))
  14.                         )
  15.                       )
  16.                      (vlax-safearray->list atts)
  17.              )
  18.            )
  19.            (vla-update (vlax-ename->vla-object ent))
  20.     )
  21.   )
  22. )
 楼主| 发表于 2021-2-20 21:37 | 显示全部楼层
调整了一下,用edit_box。

  1. (defun editlst (lst / dclfile dclfo i keys key dclid out)
  2.         (setq dclfile (vl-filename-mktemp nil nil ".dcl"))
  3.         (setq dclfo (open dclfile "w"))
  4.         (write-line "minbox:edit_box{fixed_width=true;fixed_height=true;vertical_margin=none;horizontal_margin=none;}" dclfo)
  5.         (write-line "consListEdit:dialog{label="文本型点对表编辑 ";" dclfo)
  6.         (write-line ":boxed_column{ " dclfo)
  7.         (setq i 1 keys nil)
  8.         (foreach n lst
  9.                 (setq key (strcat "key" (itoa i)) keys (cons key keys))
  10.                 (write-line ":row{" dclfo)
  11.                 (write-line(strcat ":minbox{width=15;is_enabled=false;value=""(car n)"";}")dclfo)
  12.                 (write-line(strcat ":minbox{width=20;value=""(cdr n)"";key="" key "";}")dclfo)
  13.                 (write-line "}" dclfo);row
  14.                 (setq i (1+ i))
  15.         )
  16.         (setq keys(reverse keys))
  17.         (write-line "}" dclfo);boxed_column
  18.         (write-line "ok_cancel;" dclfo)
  19.         (write-line "}" dclfo);dialog
  20.         (close dclfo)
  21.         (setq dclid (load_dialog dclfile))
  22.         (vl-file-delete dclfile)
  23.         (new_dialog "consListEdit" dclid)
  24.         (mode_tile (car keys) 2)
  25.         (action_tile "accept" "(setq out(mapcar '(lambda(v k)(cons (car v)(get_tile k))) lst keys))(done_dialog)")
  26.         (action_tile "cancel" "(setq out nil)(done_dialog)")
  27.         (start_dialog)
  28.         (unload_dialog dclid)
  29.         out
  30. )
发表于 2021-2-21 01:09 | 显示全部楼层
77077 发表于 2021-2-20 21:37
调整了一下,用edit_box。

指令: (editlst '(("标签1" . "值1") ("标签2" . "值2") ("标签3" . "值3") ("标签4" . "值4")))
; 错误: 引数太多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 18:21 , Processed in 0.207482 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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